Explorar o código

Merge branch 'developer' of http://git.caimei365.com/caimei-repository/caimei-applets-caimei into developerX

xiebaomin %!s(int64=2) %!d(string=hai) anos
pai
achega
7812418753
Modificáronse 100 ficheiros con 12492 adicións e 9934 borrados
  1. BIN=BIN
      common/fonts/iconfont.ttf
  2. BIN=BIN
      common/fonts/iconfont.woff
  3. BIN=BIN
      common/fonts/iconfont.woff2
  4. 2 2
      components/cm-custom/cm-drag.vue
  5. 1 0
      components/cm-module/cart-components/cm-unit-popup.vue
  6. 10 7
      components/cm-module/listTemplate/listSkeleton.vue
  7. 0 140
      components/cm-module/modelAlert/freightAlert.vue
  8. 0 197
      components/cm-module/orderDetails/invoiceTent.vue
  9. 0 181
      components/cm-module/orderDetails/logisticsRecord.vue
  10. 0 329
      components/cm-module/orderDetails/orderInformation.vue
  11. 1 0
      components/cm-module/productDetails/cm-unit-popup.vue
  12. 1 1
      components/thorui/tui-modal/tui-modal.vue
  13. 2 1
      manifest.json
  14. 1 0
      mixins/payMixins.js
  15. 18 19
      pages.json
  16. 2 1
      pages/goods/components/cm-unit-popup.vue
  17. 161 151
      pages/goods/good-floor.vue
  18. 7 2
      pages/goods/goods-classify.vue
  19. 0 9
      pages/h5/article/path.vue
  20. 314 284
      pages/login/components/basicOperationsProducts.vue
  21. 1 1
      pages/login/components/markeServices.vue
  22. 4 4
      pages/notice/club/notice-order.vue
  23. 10 5
      pages/search/search.vue
  24. 22 11
      pages/seller/address/addressManage.vue
  25. 0 7
      pages/seller/cart/cart.vue
  26. 231 226
      pages/seller/cart/components/immediatelyList.vue
  27. 1 1
      pages/seller/cart/mixins/cartMixins.js
  28. 1 1
      pages/seller/cart/second.vue
  29. 18 18
      pages/seller/club/club-list.vue
  30. 5 5
      pages/seller/components/user.vue
  31. 133 112
      pages/seller/index/index.vue
  32. 3 2
      pages/seller/order/components/cm-address-temp.vue
  33. 2 1
      pages/seller/order/components/cm-club-visible.vue
  34. 0 0
      pages/seller/order/components/cm-coupon-chang.vue
  35. 1 1
      pages/seller/order/components/cm-coupon-popup.vue
  36. 199 0
      pages/seller/order/components/cm-coupon-tips.vue
  37. 247 0
      pages/seller/order/components/cm-details-button.vue
  38. 471 0
      pages/seller/order/components/cm-freight-popup.vue
  39. 399 0
      pages/seller/order/components/cm-goods-temp.vue
  40. 454 0
      pages/seller/order/components/cm-invice-popup.vue
  41. 237 0
      pages/seller/order/components/cm-list-button.vue
  42. 1 0
      pages/seller/order/components/cm-orderpay-popup.vue
  43. 10 2
      pages/seller/order/components/cm-regula-popup.vue
  44. 12 10
      pages/seller/order/components/cm-share-popup.vue
  45. 164 0
      pages/seller/order/components/details/cm-address-temp.vue
  46. 524 0
      pages/seller/order/components/details/cm-goods-temp.vue
  47. 151 0
      pages/seller/order/components/details/cm-invice-temp.vue
  48. 246 0
      pages/seller/order/components/details/cm-order-temp.vue
  49. 1 0
      pages/seller/order/components/details/cm-payment-temp.vue
  50. 0 0
      pages/seller/order/components/details/cm-promote-popup.vue
  51. 0 0
      pages/seller/order/components/details/cm-refund-temp.vue
  52. 150 0
      pages/seller/order/components/details/cm-voucher-temp.vue
  53. 0 256
      pages/seller/order/components/sellerDetaileButton.vue
  54. 0 524
      pages/seller/order/components/sellerFreight.vue
  55. 0 695
      pages/seller/order/components/sellerInvoice.vue
  56. 0 218
      pages/seller/order/components/sellerOrderButton.vue
  57. 828 941
      pages/seller/order/create-order.vue
  58. 94 0
      pages/seller/order/mixins/conMixins.js
  59. 168 0
      pages/seller/order/mixins/orderMixins.js
  60. 38 258
      pages/seller/order/order-club-details.vue
  61. 303 277
      pages/seller/order/order-details.vue
  62. 226 401
      pages/seller/order/order-historylist.vue
  63. 336 500
      pages/seller/order/order-list.vue
  64. 248 436
      pages/seller/order/search-order.vue
  65. 0 0
      pages/supplier/order/components/details/goodsList.vue
  66. 3 2
      pages/supplier/order/components/details/orderAddress.vue
  67. 0 0
      pages/supplier/order/components/details/orderButton.vue
  68. 0 0
      pages/supplier/order/components/details/orderListButton.vue
  69. 579 542
      pages/supplier/order/order-details.vue
  70. 521 468
      pages/supplier/order/order-service-details.vue
  71. 2 3
      pages/tabBar/user/user.vue
  72. 248 232
      pages/user/address/address.vue
  73. 287 247
      pages/user/address/addressManage.vue
  74. 7 6
      pages/user/order/components/cm-address-temp.vue
  75. 0 0
      pages/user/order/components/cm-coupon-chang.vue
  76. 7 17
      pages/user/order/components/cm-coupon-popup.vue
  77. 199 0
      pages/user/order/components/cm-coupon-tips.vue
  78. 247 0
      pages/user/order/components/cm-details-button.vue
  79. 406 0
      pages/user/order/components/cm-freight-popup.vue
  80. 84 61
      pages/user/order/components/cm-goods-temp.vue
  81. 452 0
      pages/user/order/components/cm-invice-popup.vue
  82. 257 0
      pages/user/order/components/cm-list-button.vue
  83. 148 0
      pages/user/order/components/cm-orderpay-popup.vue
  84. 0 0
      pages/user/order/components/cm-return-popup.vue
  85. 11 9
      pages/user/order/components/cm-share-popup.vue
  86. 164 0
      pages/user/order/components/details/cm-address-temp.vue
  87. 524 0
      pages/user/order/components/details/cm-goods-temp.vue
  88. 151 0
      pages/user/order/components/details/cm-invice-temp.vue
  89. 246 0
      pages/user/order/components/details/cm-order-temp.vue
  90. 160 0
      pages/user/order/components/details/cm-payment-temp.vue
  91. 235 0
      pages/user/order/components/details/cm-promote-popup.vue
  92. 120 0
      pages/user/order/components/details/cm-refund-temp.vue
  93. 150 0
      pages/user/order/components/details/cm-voucher-temp.vue
  94. 0 295
      pages/user/order/components/freight.vue
  95. 0 352
      pages/user/order/components/goodsList.vue
  96. 0 683
      pages/user/order/components/invoiceTent.vue
  97. 172 487
      pages/user/order/create-order.vue
  98. 103 0
      pages/user/order/mixins/conMixins.js
  99. 254 0
      pages/user/order/order-addpay.vue
  100. 296 293
      pages/user/order/order-details.vue

BIN=BIN
common/fonts/iconfont.ttf


BIN=BIN
common/fonts/iconfont.woff


BIN=BIN
common/fonts/iconfont.woff2


+ 2 - 2
components/cm-custom/cm-drag.vue

@@ -37,8 +37,8 @@
 		},
 		data() {
 			return {
-				top:300,
-				left:150,
+				top:518,
+				left:314,
 				width: 0,
 				height: 0,
 				offsetWidth: 0,

+ 1 - 0
components/cm-module/cart-components/cm-unit-popup.vue

@@ -82,6 +82,7 @@
 									v-model="addParams.count"
 									maxlength="4"
 									@blur="skuChangNumberChange($event)"
+									cursor-spacing="40"
 								/>
 								<view
 									class="iconfont icon-jiahao"

+ 10 - 7
components/cm-module/listTemplate/listSkeleton.vue

@@ -7,6 +7,16 @@
 <script>
 	var self;
 	export default{
+		props:{
+			listType:{
+				type:Number,
+				default: 0
+			},
+			src: {
+				type: String,
+				default: 'empty'
+			}
+		},
 		data() {
 			return{
 				skeletonList: {
@@ -17,13 +27,6 @@
 				},
 			}
 		},
-		props:{
-			listType:String,
-			src: {
-				type: String,
-				default: 'empty'
-			}
-		},
 		created(){
 			
 		},

+ 0 - 140
components/cm-module/modelAlert/freightAlert.vue

@@ -1,140 +0,0 @@
-<template name="alert">
-	<view class="alert spec" :class="specClass">
-		<!-- 运费弹窗说明 -->
-		<view class="freight-alert"  @tap="hideFreight">
-			<view class="content">
-				<view class="title">
-					<text>运费规则</text>
-					<text class="iconfont icon-iconfontguanbi" @click.stop="hideFreight"></text>
-				</view>
-				<view class="text-content">
-					<view class="text-h1">一、除含有仪器类、家具类等指定商品的订单,运费规则如下:</view>
-					<view class="text">
-						<text>1、首单,全国包邮(注:如果首单中含有不包邮的指定商品,则首单只能"到付");</text>
-						<text>2、订单商品总额满1000元,全国包邮;</text>
-						<text>3、订单商品总额不足1000元,深圳市内运费10元,广东省内深圳市外运费15元,其它地方运费到付;</text>
-						<text>4、地推送货上门无需运费(注:下单可选择运费是否到付)。</text>
-					</view>
-					<view class="text-h1">二、含有仪器类、家具类等指定商品的订单,运费到付。</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'alert',
-		props:{},
-		data() {
-			return{
-				
-			}
-		},
-		created() {
-			
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			hideFreight(){
-				this.$parent.isfreightTip = false
-			},
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	/*弹窗*/
-	.model-warp.none{
-		display: none;
-	}
-	.model-warp.show{
-		display: block;
-	}
-	.freight-alert{
-		width: 100%;
-		height: 100%;
-		background: rgba(0,0,0,.5);
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 8888;
-		transition: all 0.4s;
-		&.none{
-			display: none;			
-		}
-		&.show{
-			display: block;
-		}
-		.content{
-			width: 530rpx;
-			height: 710rpx;
-			position: absolute;
-			background: $bg-color;
-			left: 0;
-			right: 0;
-			bottom: 0;
-			top: 0;
-			margin: auto;
-			padding: 20rpx 25rpx;
-			border-radius: 12rpx;
-			.title{
-				width: 100%;
-				height: 68rpx;
-				line-height: 68rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: center;
-				margin-bottom: 32rpx;
-				position: relative;
-				.icon-iconfontguanbi{
-					width: 68rpx;
-					height: 68rpx;
-					text-align: center;
-					line-height: 68rpx;
-					position: absolute;
-					right: 0;
-					top: 0;
-					font-size: $font-size-36;
-					color: #999999;
-				}
-			}
-			.text-content{
-				width: 100%;
-				height: auto;
-				.text{
-					padding: 40rpx 0;
-					line-height: 44rpx;
-					font-size: $font-size-26;
-					color:#666666;
-					text-align: justify;
-				}
-				.text-h1{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					text-align: justify;
-				}
-			}
-			.btn{
-				width: 100%;
-				height: 88rpx;
-				float: left;
-				background: $btn-confirm;
-				line-height: 88rpx;
-				font-size: $font-size-28;
-				text-align: center;
-				color: #FFFFFF;
-				border-radius: 0;
-				padding: 0;
-				margin-top: 2rpx;
-			}
-		}
-	}
-	
-</style>

+ 0 - 197
components/cm-module/orderDetails/invoiceTent.vue

@@ -1,197 +0,0 @@
-<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>

+ 0 - 181
components/cm-module/orderDetails/logisticsRecord.vue

@@ -1,181 +0,0 @@
-<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>

+ 0 - 329
components/cm-module/orderDetails/orderInformation.vue

@@ -1,329 +0,0 @@
-<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>
-					<text class="clipboard" @click="clipboard(orderData.orderMark)">复制</text>
-				</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 ">
-					<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 same">
-					<view class="view-man">
-						应付总额:<label class="red">¥{{ orderData.payableAmount | NumFormat }}</label>
-					</view>
-				</view>
-				<view class="information-view">
-					<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>

+ 1 - 0
components/cm-module/productDetails/cm-unit-popup.vue

@@ -88,6 +88,7 @@
 									v-model="productCount"
 									maxlength="4"
 									@blur="changeNumber($event)"
+									cursor-spacing="40"
 								/>
 								<view
 									class="iconfont icon-jiahao"

+ 1 - 1
components/thorui/tui-modal/tui-modal.vue

@@ -11,7 +11,7 @@
                          :style="{background: item.customStyle.bgColor ? item.customStyle.bgColor : '',color: item.customStyle.color ? item.customStyle.color : '',fontSize: item.customStyle.fontSize ? item.customStyle.fontSize : ''}"
 						 :hover-class="!item.customStyle && ('tui-'+(item.plain?'outline':(item.type || 'primary'))+'-hover')"  :data-index="index" @tap="handleClick">{{item.text || "确定"}}</button>
 					</block>
-				</view> 
+				</view>
 			</view>
 			<view v-else>
 				<slot></slot>

+ 2 - 1
manifest.json

@@ -71,7 +71,8 @@
         "navigateToMiniProgramAppIdList" : [ "wx5a5cda32926f55ac" ],
         "uniStatistics" : {
             "enable" : true
-        }
+        },
+        "lazyCodeLoading" : "requiredComponents"
     },
     "mp-alipay" : {
         "usingComponents" : true

+ 1 - 0
mixins/payMixins.js

@@ -40,6 +40,7 @@ const payMixins = {
 			       // 微信支付成功回调
 			       let linkData =  {
                         payAmount:this.payAmount,
+                        shopOrderId:this.shopOrderInfo.shopOrderId,
                         orderId:this.shopOrderInfo.orderId,
                         type:'success'
                     }

+ 18 - 19
pages.json

@@ -346,13 +346,6 @@
 						"navigationStyle": "custom"
 					}
 				},
-				{
-					"path": "order/order-payment",
-					"style": {
-						"navigationBarTitleText": "选择支付方式",
-						"navigationStyle": "custom"
-					}
-				},
 				{
 					"path": "order/order-payunder",
 					"style": {
@@ -372,13 +365,6 @@
 						"navigationStyle": "custom"
 					}
 				},
-				{
-					"path": "order/order-payhlb",
-					"style": {
-						"navigationBarTitleText": "收银台",
-						"navigationStyle": "custom"
-					}
-				},
 				{
 					"path": "order/orderShareLogin",
 					"style": {
@@ -398,6 +384,12 @@
 						"navigationStyle": "custom"
 					}
 				},
+				{
+					"path": "order/search-order",
+					"style": {
+						"navigationBarTitleText": "订单搜索"
+					}
+				},
 				{
 					"path": "order/order-details",
 					"style": {
@@ -411,6 +403,12 @@
 						"navigationBarTitleText": "订单详情"
 					}
 				},
+				{
+					"path": "order/order-addpay",
+					"style": {
+						"navigationBarTitleText": "上传支付凭证"
+					}
+				},
 				{
 					"path": "order/order-logistics",
 					"style": {
@@ -558,6 +556,12 @@
 						"navigationBarTitleText": "收银台",
 						"navigationStyle": "custom"
 					}
+				},
+				{
+					"path": "pay/card-under",
+					"style": {
+						"navigationBarTitleText": "线下转账"
+					}
 				}
 				
 			]
@@ -1020,11 +1024,6 @@
 				"style": {
 					"navigationBarTitleText": "搜索仪器"
 				}
-			}, {
-				"path": "search-order",
-				"style": {
-					"navigationBarTitleText": "订单搜索"
-				}
 			}, {
 				"path": "search-second",
 				"style": {

+ 2 - 1
pages/goods/components/cm-unit-popup.vue

@@ -43,6 +43,7 @@
 										v-model="productCount"
 										maxlength="4"
 										@blur="changeNumber($event)"
+										cursor-spacing="40"
 									/>
 									<view
 										class="iconfont icon-jiahao"
@@ -218,7 +219,7 @@ export default {
 		},
 		totalLadderPrice() {
 			//单独处理活动价格和阶梯价格
-			if (this.ladderPriceList.length > 0) {
+			if (this.ladderPriceList) {
 				this.ladderPriceList.forEach((ladder, index) => {
 					if (this.productCount >= ladder.buyNum) {
 						this.$parent.skuProduct.price = ladder.buyPrice

+ 161 - 151
pages/goods/good-floor.vue

@@ -1,174 +1,184 @@
 <template>
-	<view class="container floor clearfix" :style="{paddingTop:CustomBar+'px'}">
-		<custom-floor   :systeminfo='systeminfo' 
-						:navbar-data='nvabarData' 
-						:headerBtnPosi ="headerBtnPosi">
-		</custom-floor>
-		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view class="container-home tui-skeleton">
-			<!-- 金刚区菜单 -->
-			<templateNav :list="navBarsList" v-if="isRequest"></templateNav>
-		</view>	
-		<!-- ross广告图区 -->
-		<view class="container-ross" v-if="isRossShow">
-			<view class="ross-image" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
-				<image class="image" src="https://static.caimei365.com/app/img/ross/ross-image@2x.jpg" mode=""></image>
+	<view class="container floor clearfix" :style="{ paddingTop: CustomBar + 'px' }">
+		<custom-floor :systeminfo="systeminfo" :navbar-data="nvabarData" :headerBtnPosi="headerBtnPosi" />
+		<tui-skeleton
+			v-if="!isRequest"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="container-home tui-skeleton">
+				<!-- 金刚区菜单 -->
+				<templateNav :list="navBarsList" v-if="isRequest" />
 			</view>
-		</view>
-		<!-- 楼层 -->
-		<view class="container-section tui-skeleton">
-			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
-		</view>
-		<!-- 侧边 -->
-		<scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
+			<!-- ross广告图区 -->
+			<view class="container-ross" v-if="isRossShow">
+				<view class="ross-image" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
+					<image
+						class="image"
+						src="https://static.caimei365.com/app/img/ross/ross-image@2x.jpg"
+						mode=""
+					></image>
+				</view>
+			</view>
+			<!-- 楼层 -->
+			<view class="container-section tui-skeleton">
+				<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest" />
+			</view>
+			<!-- 侧边 -->
+			<scroll-top :isScrollTop="isScrollTop" :bottom="50" />
+		</template>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations} from 'vuex';
-	import customFloor from '@/components/cm-custom/custom-floor' 		 //自定义导航
-	import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
-	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
-	import authorize from '@/common/config/authorize.js'
-	import wxLogin from "@/common/config/wxLogin.js"
-	
-	export default{
-		components:{
-			customFloor,
-			templateNav,
-			pageFloor
-		},
-		data(){
-			return{
-				userId:0,
-				shopId:0,
-				userIdentity:0,
-				skeletonShow:true,
-				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
-				systeminfo: this.setSysteminfo(),		 //获取设备信息
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				navBarsList:[],
-				pageList:[],//楼层
-				isRequest:false,
-				isScrollTop:false,
-				pageId:'',
-				typeSort:'',
-			}
-		},
-		computed: {
-			...mapState(['hasLogin','userInfo','isRossShow','isWxAuthorize'])
-		},
-		onLoad(option) {
-			if(option.type =='share'){
-				wxLogin.wxLoginAuthorize()
-			}
-			this.pageId = option.linkId
-			this.GetInstrumentPageDataa(this.pageId)
-		},
-		methods:{
-			async GetInstrumentPageDataa(pageId){//获取楼层数据
-				const userInfo = await this.$api.getStorage()
-				this.userId = userInfo.userId ? userInfo.userId : 0
-				this.shopId = userInfo.shopId ? userInfo.shopId : 0
-				this.userIdentity = userInfo.userIdentity
-				this.CommonService.GetInstrumentPageData({pageId:pageId,userId:this.userId,source:2}).then(response =>{
+import { mapState, mapMutations } from 'vuex'
+import customFloor from '@/components/cm-custom/custom-floor' //自定义导航
+import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
+import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+
+export default {
+	components: {
+		customFloor,
+		templateNav,
+		pageFloor
+	},
+	data() {
+		return {
+			userId: 0,
+			shopId: 0,
+			userIdentity: 0,
+			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+			systeminfo: this.setSysteminfo(), //获取设备信息
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			navBarsList: [],
+			pageList: [], //楼层
+			isRequest: false,
+			isScrollTop: false,
+			pageId: '',
+			typeSort: ''
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isRossShow', 'isWxAuthorize'])
+	},
+	onLoad(option) {
+		if (option.type == 'share') {
+			wxLogin.wxLoginAuthorize()
+		}
+		this.pageId = option.linkId
+		this.GetInstrumentPageDataa(this.pageId)
+	},
+	methods: {
+		async GetInstrumentPageDataa(pageId) {
+			//获取楼层数据
+			const userInfo = await this.$api.getStorage()
+			this.userId = userInfo.userId ? userInfo.userId : 0
+			this.shopId = userInfo.shopId ? userInfo.shopId : 0
+			this.userIdentity = userInfo.userIdentity
+			this.CommonService.GetInstrumentPageData({ pageId: pageId, userId: this.userId, source: 2 })
+				.then(response => {
 					let data = response.data
-					uni.setStorageSync('pageLabel',`${data.contentLabel}`)
-					this.GetHomeInit(data.typeSort,data.floorList)
-					
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			GetHomeInit(typeSort,floorList){//金刚区分类
-				this.CommonService.GetFirstClassly({typeSort:typeSort,source:'crm'}).then(response =>{
-					this.navBarsList = response.data
-					this.pageList = floorList
-					setTimeout(()=>{
-						this.skeletonShow = false
-						this.isRequest =true
-					},200)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+					uni.setStorageSync('pageLabel', `${data.contentLabel}`)
+					this.GetHomeInit(data.typeSort, data.floorList)
 				})
-			},
-			setHeaderBtnPosi(){
-				// 获得胶囊按钮位置信息
-				let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
-				return headerBtnPosi
-			},
-			setSysteminfo(){
-				let systeminfo;
-				uni.getSystemInfo({ // 获取设备信息
-					success: (res) => {
-						systeminfo = res
-					},
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-				return systeminfo
-			},
-		},
-		onPageScroll(e){//实时获取到滚动的值
-			if(e.scrollTop>400){
-				this.isScrollTop = true
-			}else{
-				this.isScrollTop = false
-			}	
 		},
-		onPullDownRefresh() {
-			setTimeout(() => {
-				uni.stopPullDownRefresh()
-			}, 200)
-		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: '采美-一站式生/医美采购服务平台',
-			  path: `pages/goods/good-floor?type=share&linkId=${this.pageId}`
+		//金刚区分类
+		async GetHomeInit(typeSort, floorList) {
+			try{
+				const res = await this.CommonService.GetFirstClassly({ typeSort: typeSort, source: 'crm' })
+				this.navBarsList = res.data
+				this.pageList = floorList
+				this.isRequest = true
+			}catch(error){
+				console.log('error',error)
 			}
 		},
-		onShow() {
-			
+		setHeaderBtnPosi() {
+			// 获得胶囊按钮位置信息
+			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+			return headerBtnPosi
+		},
+		setSysteminfo() {
+			let systeminfo
+			uni.getSystemInfo({
+				// 获取设备信息
+				success: res => {
+					systeminfo = res
+				}
+			})
+			return systeminfo
 		}
-	}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+		if (e.scrollTop > 400) {
+			this.isScrollTop = true
+		} else {
+			this.isScrollTop = false
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onShareAppMessage(res) {
+		//分享转发
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
+		}
+		return {
+			title: '采美-一站式生/医美采购服务平台',
+			path: `pages/goods/good-floor?type=share&linkId=${this.pageId}`
+		}
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page{
-		background-color: #FFFFFF;
-	}
-	.container-home{
-		width: 100%;
-		height: auto;
-	}
-	.container-ross{
+page {
+	background-color: #ffffff;
+}
+.container-home {
+	width: 100%;
+	height: auto;
+}
+.container-ross {
+	width: 100%;
+	height: 264rpx;
+	box-sizing: border-box;
+	padding: 24rpx 24rpx 0 24rpx;
+	float: left;
+	background-color: #f5f5f5;
+	.ross-image {
 		width: 100%;
-		height: 264rpx;
-		box-sizing: border-box;
-		padding: 24rpx 24rpx 0 24rpx;
-		float: left;
-		background-color: #F5F5F5;
-		.ross-image{
+		height: 100%;
+		line-height: 240rpx;
+		background-color: #f3920d;
+		border-radius: 16rpx;
+		text-align: center;
+		font-size: 80rpx;
+		color: #ffffff;
+		.image {
 			width: 100%;
 			height: 100%;
-			line-height: 240rpx;
-			background-color: #F3920D;
 			border-radius: 16rpx;
-			text-align: center;
-			font-size: 80rpx;
-			color: #FFFFFF;
-			.image{
-				width: 100%;
-				height: 100%;
-				border-radius: 16rpx;
-				display: block;
-			}
+			display: block;
 		}
 	}
-	.container-section{
-		width: 100%;
-		height: auto;
-		background-color: #F7F7F7;
-	}
+}
+.container-section {
+	width: 100%;
+	height: auto;
+	background-color: #f7f7f7;
+}
 </style>

+ 7 - 2
pages/goods/goods-classify.vue

@@ -731,9 +731,11 @@ export default {
 			// 选择品牌
 			brand.isChecked = !brand.isChecked
 			if (brand.isChecked) {
-				this.checkedBrandList.push(brand.id)
+				if(!this.contains(this.checkedBrandList,brand.id)){
+					this.checkedBrandList.push(brand.id)
+				}
 			} else {
-				this.checkedBrandList.splice(index, 1)
+				this.checkedBrandList.splice(this.checkedBrandList.indexOf(brand.id), 1)
 			}
 			this.isAllcheckedBrand = false
 			this.checkedBrandLength = this.checkedBrandList.length
@@ -741,6 +743,9 @@ export default {
 			this.listQuery.brandIds = this.checkedBrandList.join(',')
 			console.log('this.listQuery.brandIds', this.listQuery.brandIds)
 		},
+		contains(arr, val) {// 校验
+			return arr.some(item => item === val)
+		},
 		choiceBrandAll() {
 			// 点击选择全部品牌
 			this.isAllcheckedBrand = true

+ 0 - 9
pages/h5/article/path.vue

@@ -26,15 +26,6 @@
             }
             this.initPath(option)
 		},
-        // onShareAppMessage(options){//分享转发
-        // 	if (res.from === 'button') {
-        //       // 来自页面内转发按钮
-        //     }
-        //     console.log(options)
-        // 	return {
-        // 	  title: '认证通111',
-        // 	}
-        // },
 		methods:{
 			navToDetailPage() {//跳转商品详情页
 				this.$api.navigateTo(`/pages/goods/product?id=${this.productID}`)

+ 314 - 284
pages/login/components/basicOperationsProducts.vue

@@ -1,299 +1,329 @@
 <template>
-    <view class="basicoperation">
-        <slot name="supplier-title"></slot>
-        <view class="basicoperation_container">
-           <image class="defalut author-empty" :style="{'z-index': isOnline ? 0 : 13}" src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author-empty.png" mode="aspectFill"></image>
-           <image class="defalut store-empty" :style="{'z-index': isOnline ? 12 : 0}" src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store-empty.png" mode="aspectFill"></image>
-           <view class="operation_store" v-if="isOnline">
-               <view class="online_store">
-                   <view class="store-logo">
-                       <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png" class="store" mode=""></image>
-                   </view>
-                   <view class="store-title">
-                       在线商城
-                   </view>
-               </view>
-               <view class="store-line-title">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/title.png" style="width: 100%;height: 100%;" mode=""></image>
-               </view>
-               <view class="store-content">
-                   <view class="content-item" v-for="item in online_store_list" :key="item.id">
-                       <image :src="item.img" mode="" style="width: 80rpx;height: 50rpx;"></image>
-                       <view class="store-content-title">
-                           {{item.title}}
-                       </view>
-                       <view class="store-content-text">
-                           {{item.content}}
-                       </view>
-                   </view>
-               </view>
-               <view class="author" @click="isOnline = false">
-                   <view class="author-title">
-                       正品认证通
-                   </view>
-                   <image style="width: 50rpx;height: 54rpx;"  src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png" mode=""></image>
-               </view>
-           </view>
-           <view class="operation-author" v-else>
-               <view class="author">
-                   <view class="author-logo">
-                       <image style="width: 66rpx;
-height: 68rpx;" src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png" mode=""></image>
-                   </view>
-                   <view class="author-title">
-                       正品认证通
-                   </view>
-               </view>
-               <view class="author-title-logo">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/logo.png" style="width: 100%;height: 100%;" mode=""></image>
-               </view>
-               <view class="author-content-item">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/02.png" style="width: 50rpx;height: 50rpx;border-radius: 50%;" mode=""></image>
-                    <view class="author-content-title">易装易用免维护</view>
-                    <view class="author-content-split"></view>
-                    <view class="author-content-text">独立后台账号体系、会打字就会用、公众号无缝衔接</view>
-               </view>
-               <view class="author-content-item">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/03.png" style="width: 50rpx;height: 50rpx;border-radius: 50%;" mode=""></image>
-                    <view class="author-content-title">授权认证功能</view>
-                    <view class="author-content-split"></view>
-                    <view class="author-content-text">机构认证查询、设备认证查询、医师认证查询</view>
-               </view>
-               <view class="author-content-item">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/04.png" style="width: 50rpx;height: 50rpx;border-radius: 50%;" mode=""></image>
-                    <view class="author-content-title">品牌运营</view>
-                    <view class="author-content-split"></view>
-                    <view class="author-content-text">与机构客户建立双向沟通渠道</view>
-               </view>
-               <view class="online-store" @click="isOnline = true">
-                   <image src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png" style="width: 72rpx;height: 68rpx;" mode=""></image>
-                   <view class="online-store-logo">
-                       在线商城
-                   </view>
-               </view>
-           </view>
-        </view>
-    </view>
+	<view class="basicoperation">
+		<slot name="supplier-title"></slot>
+		<view class="basicoperation_container">
+			<image
+				class="defalut author-empty"
+				:style="{ 'z-index': isOnline ? 0 : 13 }"
+				src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author-empty.png"
+				mode="aspectFill"
+			></image>
+			<image
+				class="defalut store-empty"
+				:style="{ 'z-index': isOnline ? 12 : 0 }"
+				src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store-empty.png"
+				mode="aspectFill"
+			></image>
+			<view class="operation_store" v-if="isOnline">
+				<view class="online_store">
+					<view class="store-logo">
+						<image
+							src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png"
+							class="store"
+							mode=""
+						></image>
+					</view>
+					<view class="store-title"> 在线商城 </view>
+				</view>
+				<view class="store-line-title">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/title.png"
+						style="width: 100%;height: 100%;"
+						mode=""
+					></image>
+				</view>
+				<view class="store-content">
+					<view class="content-item" v-for="item in online_store_list" :key="item.id">
+						<image :src="item.img" mode="" style="width: 80rpx;height: 50rpx;"></image>
+						<view class="store-content-title"> {{ item.title }} </view>
+						<view class="store-content-text"> {{ item.content }} </view>
+					</view>
+				</view>
+				<view class="author" @click="isOnline = false">
+					<view class="author-title"> 正品认证通 </view>
+					<image
+						style="width: 50rpx;height: 54rpx;"
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png"
+						mode=""
+					></image>
+				</view>
+			</view>
+			<view class="operation-author" v-else>
+				<view class="author">
+					<view class="author-logo">
+						<image
+							style="width: 66rpx;
+height: 68rpx;"
+							src="https://static.caimei365.com/app/img/supplier-login/basicoperation/author.png"
+							mode=""
+						></image>
+					</view>
+					<view class="author-title"> 正品认证通 </view>
+				</view>
+				<view class="author-title-logo">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/logo.png"
+						style="width: 100%;height: 100%;"
+						mode=""
+					></image>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/02.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">易装易用免维护</view> <view class="author-content-split"></view>
+					<view class="author-content-text">独立后台账号体系、会打字就会用、公众号无缝衔接</view>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/03.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">授权认证功能</view> <view class="author-content-split"></view>
+					<view class="author-content-text">机构认证查询、设备认证查询、医师认证查询</view>
+				</view>
+				<view class="author-content-item">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/04.png"
+						style="width: 50rpx;height: 50rpx;border-radius: 50%;"
+						mode=""
+					></image>
+					<view class="author-content-title">品牌运营</view> <view class="author-content-split"></view>
+					<view class="author-content-text">与机构客户建立双向沟通渠道</view>
+				</view>
+				<view class="online-store" @click="isOnline = true">
+					<image
+						src="https://static.caimei365.com/app/img/supplier-login/basicoperation/store.png"
+						style="width: 72rpx;height: 68rpx;"
+						mode=""
+					></image>
+					<view class="online-store-logo"> 在线商城 </view>
+				</view>
+			</view>
+		</view>
+	</view>
 </template>
 
 <script>
 export default {
-    data() {
-        return {
-            isOnline: true,
-            online_store_list: [
-                {
-                    id: 1,
-                    img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/p.png',
-                    title: '品牌店铺搭建',
-                    content: '轻松开启线上交易'
-                },
-                {
-                    id: 2,
-                    img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/l.png',
-                    title: '品牌展露',
-                    content: '彰显品牌实力'
-                },
-                {
-                    id: 3,
-                    img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/s.png',
-                    title: '商品SKU管理',
-                    content: '提高决策效率'
-                }
-            ]
-        }
-    },
-    methods: {
-    }
+	data() {
+		return {
+			isOnline: true,
+			online_store_list: [
+				{
+					id: 1,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/p.png',
+					title: '品牌店铺搭建',
+					content: '轻松开启线上交易'
+				},
+				{
+					id: 2,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/l.png',
+					title: '品牌展露',
+					content: '彰显品牌实力'
+				},
+				{
+					id: 3,
+					img: 'https://static.caimei365.com/app/img/supplier-login/basicoperation/s.png',
+					title: '商品SKU管理',
+					content: '提高决策效率'
+				}
+			]
+		}
+	},
+	methods: {}
 }
 </script>
 
 <style scoped lang="scss">
 .defalut {
-    width: 610rpx;
-    height: 570rpx;
-    position: absolute;
-    box-sizing: border-box;
+	width: 610rpx;
+	height: 570rpx;
+	position: absolute;
+	box-sizing: border-box;
 }
 .store {
-    width: 80rpx;
-    height: 70rpx;
+	width: 80rpx;
+	height: 70rpx;
 }
 .basicoperation {
-    padding: 1px;
-    box-sizing: border-box;
-    background-color: #fff;
-    .basicoperation_container {
-        height: 690rpx;
-        padding: 0 70rpx;
-        box-sizing: border-box;
-        position: relative;
-        .operation_store {
-            position: absolute;
-            box-sizing: border-box;
-            padding: 36rpx 43rpx;
-            width: 610rpx;
-            height: 570rpx;
-            z-index: 12;
-            .online_store {
-                width: 300rpx;
-                height: 95rpx;
-                border-bottom: 1px solid #FFCEAF;
-                display: flex;
-                align-items: center;
-                .store-logo {
-                    width: 72rpx;
-                    height: 100%;
-                    border-bottom: 2px solid #FFC39A;
-                }
-                .store-title {
-                    color: #333333;
-                    font-size: 40rpx;
-                    font-weight: bold;
-                    margin-left: 21rpx;
-                    margin-top: -25rpx;
-                }
-            }
-            .store-line-title {
-                width: 100%;
-                height: 90rpx;
-                margin: 50rpx 0 33rpx 0;
-            }
-            .store-content {
-                width: 100%;
-                height: 216rpx;
-                display: flex;
-                justify-content: space-between;
-                .content-item {
-                    width: 172rpx;
-                    height: 216rpx;
-                    background: #FDF0E9;
-                    border: 4rpx solid #FFFFFF;
-                    box-shadow: 0rpx 6rpx 50rpx 0rpx rgba(255,91,0,0.24);
-                    border-radius: 10rpx;
-                    box-sizing: border-box;
-                    display: flex;
-                    flex-direction: column;
-                    align-items: center;
-                    justify-content: center;
-                    .store-content-title {
-                        color: #333333;
-                        font-size: 24rpx;
-                        font-weight: bold;
-                        margin: 30rpx 0 13rpx 0;
-                    }
-                    .store-content-text {
-                        color: #666666;
-                        font-size: 19rpx;
-                        text-align: center;
-                    }
-                }
-            }
-            .author {
-                position: absolute;
-                right: 0;
-                top: 0;
-                width: 242rpx;
-                height: 80rpx;
-                box-sizing: border-box;
-                display: flex;
-                align-items: center;
-                .author-title {
-                    font-size: 32rpx;
-                    font-weight: bold;
-                    color: white;
-                    margin-right: 14rpx;
-                }
-            }
-        }
-        .operation-author {
-            position: absolute;
-            box-sizing: border-box;
-            padding: 36rpx 36rpx;
-            width: 610rpx;
-            height: 570rpx;
-            z-index: 13;
-            .author {
-                position: absolute;
-                right: 30rpx;
-                width: 275rpx;
-                height: 110rpx;
-                top: 12rpx;
-                border-bottom: 1px solid #FFCEAF;
-                display: flex;
-                align-items: center;
-                flex-direction: row-reverse;
-                .author-logo {
-                    width: 72rpx;
-                    height: 100%;
-                    box-sizing: border-box;
-                    border-bottom: 2px solid #FFC39A;
-                    padding-top: 17rpx;
-                }
-                .author-title {
-                    color: white;
-                    font-size: 40rpx;
-                    font-weight: bold;
-                }
-            }
-            .author-title-logo {
-                width: 100%;
-                height: 120rpx;
-                margin-top: 130rpx;
-            }
-            .author-content-item {
-                width: 100%;
-                height: 70rpx;
-                border-radius: 70rpx;
-                border: 1px solid #FFC39A;
-                box-sizing: border-box;
-                padding: 2rpx;
-                display: flex;
-                align-items: center;
-                margin-top: 18rpx;
-                view {
-                    height: 100%;
-                    color: #FFC39A;
-                    font-size: 20rpx;
-                }
-                .author-content-title {
-                    font-size: 24rpx;
-                    font-weight: bold;
-                    display: flex;
-                    justify-content: center;
-                    align-items: center;
-                    margin: 0 10rpx;
-                }
-                .author-content-split {
-                    width: 2rpx;
-                    height: 50%;
-                    background-color: #FFC39A;
-                    margin-right: 10rpx;
-                }
-                .author-content-text {
-                    width: 278rpx;
-                    display: flex;
-                    align-items: center;
-                }
-            }
-            .online-store {
-                position: absolute;
-                top: 0;
-                left: 0;
-                width: 250rpx;
-                height: 100rpx;
-                display: flex;
-                align-items: center;
-                box-sizing: border-box;
-                padding: 36rpx 0 36rpx 14rpx;
-                .online-store-logo {
-                    font-size: 32rpx;
-                    font-weight: bold;
-                    color: black;
-                    margin-left: 14rpx;
-                }
-            }
-        }
-    }
+	padding: 1px;
+	box-sizing: border-box;
+	background-color: #fff;
+	.basicoperation_container {
+		height: 690rpx;
+		padding: 0 70rpx;
+		box-sizing: border-box;
+		position: relative;
+		.operation_store {
+			position: absolute;
+			box-sizing: border-box;
+			padding: 36rpx 43rpx;
+			width: 610rpx;
+			height: 570rpx;
+			z-index: 12;
+			.online_store {
+				width: 300rpx;
+				height: 95rpx;
+				border-bottom: 1px solid #ffceaf;
+				display: flex;
+				align-items: center;
+				.store-logo {
+					width: 72rpx;
+					height: 100%;
+					border-bottom: 2px solid #ffc39a;
+				}
+				.store-title {
+					color: #333333;
+					font-size: 40rpx;
+					font-weight: bold;
+					margin-left: 21rpx;
+					margin-top: -25rpx;
+				}
+			}
+			.store-line-title {
+				width: 100%;
+				height: 90rpx;
+				margin: 50rpx 0 33rpx 0;
+			}
+			.store-content {
+				width: 100%;
+				height: 216rpx;
+				display: flex;
+				justify-content: space-between;
+				.content-item {
+					width: 172rpx;
+					height: 216rpx;
+					background: #fdf0e9;
+					border: 4rpx solid #ffffff;
+					box-shadow: 0rpx 6rpx 50rpx 0rpx rgba(255, 91, 0, 0.24);
+					border-radius: 10rpx;
+					box-sizing: border-box;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+					.store-content-title {
+						color: #333333;
+						font-size: 24rpx;
+						font-weight: bold;
+						margin: 30rpx 0 13rpx 0;
+					}
+					.store-content-text {
+						color: #666666;
+						font-size: 19rpx;
+						text-align: center;
+					}
+				}
+			}
+			.author {
+				position: absolute;
+				right: 0;
+				top: 0;
+				width: 242rpx;
+				height: 80rpx;
+				box-sizing: border-box;
+				display: flex;
+				align-items: center;
+				.author-title {
+					font-size: 32rpx;
+					font-weight: bold;
+					color: white;
+					margin-right: 14rpx;
+				}
+			}
+		}
+		.operation-author {
+			position: absolute;
+			box-sizing: border-box;
+			padding: 36rpx 36rpx;
+			width: 610rpx;
+			height: 570rpx;
+			z-index: 13;
+			.author {
+				position: absolute;
+				right: 30rpx;
+				width: 275rpx;
+				height: 110rpx;
+				top: 12rpx;
+				border-bottom: 1px solid #ffceaf;
+				display: flex;
+				align-items: center;
+				flex-direction: row-reverse;
+				.author-logo {
+					width: 72rpx;
+					height: 100%;
+					box-sizing: border-box;
+					border-bottom: 2px solid #ffc39a;
+					padding-top: 17rpx;
+				}
+				.author-title {
+					color: white;
+					font-size: 40rpx;
+					font-weight: bold;
+				}
+			}
+			.author-title-logo {
+				width: 100%;
+				height: 120rpx;
+				margin-top: 130rpx;
+			}
+			.author-content-item {
+				width: 100%;
+				height: 70rpx;
+				border-radius: 70rpx;
+				border: 1px solid #ffc39a;
+				box-sizing: border-box;
+				padding: 2rpx;
+				display: flex;
+				align-items: center;
+				margin-top: 18rpx;
+				view {
+					height: 100%;
+					color: #ffc39a;
+					font-size: 20rpx;
+				}
+				.author-content-title {
+					font-size: 24rpx;
+					font-weight: bold;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					margin: 0 10rpx;
+				}
+				.author-content-split {
+					width: 2rpx;
+					height: 50%;
+					background-color: #ffc39a;
+					margin-right: 10rpx;
+				}
+				.author-content-text {
+					width: 278rpx;
+					display: flex;
+					align-items: center;
+				}
+			}
+			.online-store {
+				position: absolute;
+				top: 0;
+				left: 0;
+				width: 250rpx;
+				height: 100rpx;
+				display: flex;
+				align-items: center;
+				box-sizing: border-box;
+				padding: 36rpx 0 36rpx 14rpx;
+				.online-store-logo {
+					font-size: 32rpx;
+					font-weight: bold;
+					color: black;
+					margin-left: 14rpx;
+				}
+			}
+		}
+	}
 }
-</style>
+</style>

+ 1 - 1
pages/login/components/markeServices.vue

@@ -38,7 +38,7 @@ export default {
             // 卡片内容
             server_card_list: [
                 {
-                    id: 1, 
+                    id: 1,
                     title: '全渠道获客',
                     img: 'https://static.caimei365.com/app/img/supplier-login/server/01.png',
                     content: [

+ 4 - 4
pages/notice/club/notice-order.vue

@@ -36,8 +36,8 @@
 					</tui-swipe-action>
 				</view>
 				<!--加载loadding-->
-				<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
+				<tui-loadmore :visible="loadding" :index="3" type="black" />
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText" />
 				<!--加载loadding-->
 			</view>
 		</view>
@@ -87,9 +87,9 @@ export default {
 				if (this.isOnliyPay(cell)) {
 					let payLinkMap = {
 						0: `/pages/user/order/order-pay-list?orderId=${cell.orderId}`,
-						1: `/pages/user/order/order-payunder?orderId=${cell.orderId}`
+						1: `/pages/user/order/order-pay-list?orderId=${cell.orderId}`
 					}
-					let linkJumpMap = { 1: payLinkMap[cell.onlinePayFlag] }
+					let linkJumpMap = { 1: `/pages/user/order/order-pay-list?orderId=${cell.orderId}` }
 					this.$api.navigateTo(linkJumpMap[cell.orderMessageType])
 				} else {
 					this.$util.msg('订单已完成支付', 2000)

+ 10 - 5
pages/search/search.vue

@@ -1040,17 +1040,22 @@ export default {
         choiceBrand(brand, index) {
             // 选择品牌
             brand.isChecked = !brand.isChecked
-            if (brand.isChecked) {
-                this.checkedBrandList.push(brand.id)
-            } else {
-                this.checkedBrandList.splice(index, 1)
-            }
+			if (brand.isChecked) {
+				if(!this.contains(this.checkedBrandList,brand.id)){
+					this.checkedBrandList.push(brand.id)
+				}
+			} else {
+				this.checkedBrandList.splice(this.checkedBrandList.indexOf(brand.id),1)
+			}
             this.isAllcheckedBrand = false
             this.checkedBrandLength = this.checkedBrandList.length
             console.log('checkedBrandList', this.checkedBrandList)
             this.listQuery.brandIds = this.checkedBrandList.join(',')
             console.log('this.listQuery.brandIds', this.listQuery.brandIds)
         },
+		contains(arr, val) {// 校验
+			return arr.some(item => item === val)
+		},
         choiceBrandAll() {
             // 点击选择全部品牌
             this.isAllcheckedBrand = true

+ 22 - 11
pages/seller/address/addressManage.vue

@@ -71,7 +71,8 @@
 					address: '',	//地址
 					defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
 				},
-				params:{}				//参数
+				params:{},//参数
+				isSelect:false
 			}
 		},
 		onLoad(option){
@@ -95,6 +96,9 @@
 					this.switchDefault = false
 				}
 			}
+			if (option.type == 'select') {
+				this.isSelect = true
+			}
 			uni.setNavigationBarTitle({
 				title
 			})
@@ -146,18 +150,25 @@
 					this.postAddressData(this.params)
 				}
 			},
-			postAddressData(params){
-				this.btnText(true)
-				this.UserService.AddressSave(params).then( response=>{
-					this.$util.msg('保存成功',1500,true,'success')
+			async postAddressData(params) {
+				try{
+					this.btnText(true)
+					const res = await this.UserService.AddressSave(params)
+					const data = res.data
+					this.$util.msg('保存成功', 1500, true, 'success')
 					this.btnText(false)
-					setTimeout(()=>{
-						uni.navigateBack()
-					},2000)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+					if(this.isSelect){
+						console.log('222222222222')
+						uni.setStorageSync('selectAddress', data)
+						let pages = getCurrentPages()
+						let prevPage = pages[pages.length - 2] //上一个页面
+						prevPage.setData({ select: 'select' })
+					}
+					uni.navigateBack()
+				}catch(error){
+					this.$util.msg(error.msg, 2000)
 					this.btnText(false)
-				})
+				}
 			},
 			btnText(flg){
 				if(flg){

+ 0 - 7
pages/seller/cart/cart.vue

@@ -380,8 +380,6 @@ export default {
 			this.submitIds = []
 			this.vipFlag = clubInfo.vipFlag ? clubInfo.vipFlag : 0
 			this.userIdentity = clubInfo.userIdentity ? clubInfo.userIdentity : 0
-			console.log('userIdentity', this.userIdentity)
-			console.log('vipFlag', this.vipFlag)
 			this.listQuery.clubId = clubInfo.clubId ? clubInfo.clubId : 0
 			this.listQuery.againBuyProductIds = clubInfo.againBuyProductIds ? clubInfo.againBuyProductIds : ''
 			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
@@ -503,7 +501,6 @@ export default {
 							newFailureList.push(Object.assign({}, failure, { isFailureLayer: isFailureLayer }))
 						})
 						this.failureList = newFailureList
-						console.log(this.failureList)
 					} else {
 						this.failureList = []
 					}
@@ -718,7 +715,6 @@ export default {
 					if (item.promotions.discount == 1) {
 						// 支持促销叠加条件的店铺满减 执行
 						prosDiscountNum = parseInt(prosPrice / item.promotions.touchPrice) // 店铺满减促销叠加次数 = 店铺合计价格/满减促销价格
-						console.log('店铺满减促销叠加通道叠加次数', `${prosDiscountNum}次`)
 						if (prosPrice >= item.promotions.touchPrice) {
 							// 满足店铺满减条件下执行
 							item.totalPrice = prosPrice - item.promotions.reducedPrice * prosDiscountNum
@@ -729,7 +725,6 @@ export default {
 							item.totalPrice = prosPrice
 						}
 					} else {
-						console.log('店铺满减非促销叠加通道')
 						if (prosPrice >= item.promotions.touchPrice) {
 							// 满足店铺满减条件下执行
 							item.totalPrice = prosPrice - item.promotions.reducedPrice
@@ -752,14 +747,12 @@ export default {
 						if (pros.promotions && pros.promotions.type != 2 && pros.promotions.mode == 2) {
 							if (pros.promotions.discount == 1) {
 								discountNum = parseInt(_price / pros.promotions.touchPrice)
-								console.log('单品满减促销叠加通道叠加次数', `${discountNum}次`)
 								if (_price >= pros.promotions.touchPrice) {
 									_price = _price - pros.promotions.reducedPrice * discountNum
 									_reducedPrice += pros.promotions.reducedPrice * discountNum
 								}
 								_totalPrice += _price
 							} else {
-								console.log('单品满减非促销叠加通道')
 								if (_price >= pros.promotions.touchPrice) {
 									_price = _price - pros.promotions.reducedPrice
 									_reducedPrice += pros.promotions.reducedPrice

+ 231 - 226
pages/seller/cart/components/immediatelyList.vue

@@ -3,248 +3,250 @@
 		class="container commodity-list-wrapper"
 		:style="{ overflow: showSkeleton ? 'hidden' : 'auto', height: showSkeleton ? windowHeight + 'px' : 'auto' }"
 	>
-		<view class="good-search clearfix" v-if="searchStatus">
-			<view class="nav-tab-bar u-f-ajc">
-				<block v-for="(tab, index) in tabBars" :key="tab.id" :class="{ current: tabIndex === index }">
-					<view class="tabstyle u-f-ajc" :class="{ addstyle: tabIndex == index }" @tap="changeTab(index)">
-						{{ tab.name }}<i v-if="tabIndex == index" class="nav-tab-line iconfont icon-gou"></i>
-					</view>
-				</block>
+		<list-skeleton :listType="0" v-if="showSkeleton" />
+		<template v-else>
+			<view class="good-search clearfix" v-if="searchStatus">
+				<view class="nav-tab-bar u-f-ajc">
+					<block v-for="(tab, index) in tabBars" :key="tab.id" :class="{ current: tabIndex === index }">
+						<view class="tabstyle u-f-ajc" :class="{ addstyle: tabIndex == index }" @tap="changeTab(index)">
+							{{ tab.name }}<i v-if="tabIndex == index" class="nav-tab-line iconfont icon-gou"></i>
+						</view>
+					</block>
+				</view>
+				<view class="search-from name">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input
+						class="input"
+						type="text"
+						:focus="isFocus"
+						confirm-type="search"
+						v-model="searchInputVal"
+						placeholder="请输入商品关键词"
+						@input="onShowClose"
+						@confirm="searchOpertor(tabIndex)"
+						maxlength="20"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
+				</view>
 			</view>
-			<view class="search-from name">
-				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
-				<input
-					class="input"
-					type="text"
-					:focus="isFocus"
-					confirm-type="search"
-					v-model="searchInputVal"
-					placeholder="请输入商品关键词"
-					@input="onShowClose"
-					@confirm="searchOpertor(tabIndex)"
-					maxlength="20"
-				/>
-				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
+			<view class="empty-container" v-if="isShowEmpty">
+				<image
+					class="empty-container-image"
+					src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
+				></image>
+				<text class="error-text">{{ isShowEmptyText }}</text>
 			</view>
-		</view>
-		<list-skeleton v-if="showSkeleton"></list-skeleton>
-		<view class="empty-container" v-if="isShowEmpty">
-			<image
-				class="empty-container-image"
-				src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
-			></image>
-			<text class="error-text">{{ isShowEmptyText }}</text>
-		</view>
-		<!-- 单一商品 -->
-		<view class="product-container" v-else>
-			<view :class="tabIndex" v-if="tabIndex === 0" :style="{ paddingTop: searchStatus ? '128rpx' : '' }">
-				<scroll-view
-					:style="{ height: scrollHeight + 'px' }"
-					@scrolltolower="scrolltolower(tabIndex)"
-					scroll-y
-					v-if="listData.length > 0"
-				>
-					<view
-						v-for="(pros, index) in listData"
-						:key="index"
-						:id="pros.productId"
-						class="all-type-list-content commodity-list"
-						@click.stop="navToDetailPage(pros.productId)"
+			<!-- 单一商品 -->
+			<view class="product-container" v-else>
+				<view :class="tabIndex" v-if="tabIndex === 0" :style="{ paddingTop: searchStatus ? '128rpx' : '' }">
+					<scroll-view
+						:style="{ height: scrollHeight + 'px' }"
+						@scrolltolower="scrolltolower(tabIndex)"
+						scroll-y
+						v-if="listData.length > 0"
 					>
-						<view class="list-details-image">
-							<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
-							<view class="list-details-type" v-if="pros.productType == 2">医疗器械</view>
-						</view>
-						<view class="list-details-info">
-							<text class="list-details-title">{{ isInterceptHtmlFn(pros.name) }}</text>
-							<text class="list-details-specs">规格:{{ pros.unit ? pros.unit : '' }}</text>
-							<text class="list-details-miniQuantity list-details-specs"
-								>起订量:{{ pros.minBuyNumber }}</text
-							>
-							<view class="list-details-specs" v-if="pros.code != '' && pros.code != null">
-								<view>商品编码:{{ pros.code }}</view>
-							</view>
-							<view class="list-details-price">
-								<template v-if="priceLoading">
-									<view class="list-price-loding">正在获取价格...</view>
-								</template>
-								<template v-else>
-									<view class="list-shop">
-										<view class="list-price">
-											<text
-												class="price-larger"
-												:class="
-													PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
-														? 'none'
-														: ''
-												"
-											>
-												¥{{
-													(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
-														? pros.originalPrice
-														: pros.price) | NumFormat
-												}}
-											</text>
-										</view>
-									</view>
-									<button class="add-cart-btn" @click.stop="operationHanld(pros)">数量</button>
-								</template>
-							</view>
-							<view class="list-details-price">
-								<view class="floor-item-act">
-									<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
-									<template v-if="pros.actStatus == 1">
-										<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
-											{{ pros.promotions.name }}<text>:¥{{ pros.price | NumFormat }}</text>
-										</view>
-										<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
-									</template>
-									<template v-if="pros.svipProductFlag == 1">
-										<view class="svip-tags">
-											<view class="tags">SVIP</view>
-											<view class="price">{{ pros.svipPriceTag }}</view>
-										</view>
-									</template>
-								</view>
-							</view>
-						</view>
-					</view>
-					<view v-if="showLoading && listData.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
-							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
-						>
-						<view class="loading-wrapper loading-wrapper-btm" v-else
-							>———<text class="btm-text">已至底部</text>———</view
-						>
-					</view>
-				</scroll-view>
-			</view>
-			<!-- 组合商品 -->
-			<view :class="tabIndex" v-if="tabIndex === 1">
-				<scroll-view
-					:style="{ height: scrollHeight + 'px', paddingTop: searchStatus ? '112rpx' : '' }"
-					@scrolltolower="scrolltolower(tabIndex)"
-					scroll-y
-				>
-					<view class="all-zuhe-list" v-for="(item, index) in combinationProduct" :key="index" :id="item.id">
-						<view class="zuhe_title" :class="index % 2 == 0 ? 'active' : ''">{{ item.name }}</view>
 						<view
-							v-for="(pros, proIndex) in item.combinationProductList"
-							:class="index % 2 == 0 ? 'stylecontent' : ''"
-							:key="proIndex"
+							v-for="(pros, index) in listData"
+							:key="index"
 							:id="pros.productId"
-							class="zuhe-list-content commodity-list"
+							class="all-type-list-content commodity-list"
+							@click.stop="navToDetailPage(pros.productId)"
 						>
+							<view class="list-details-image">
+								<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
+								<view class="list-details-type" v-if="pros.productType == 2">医疗器械</view>
+							</view>
 							<view class="list-details-info">
-								<text class="list-details-title zuhe_list_text">商品编码:{{ pros.code }}</text>
-								<text
-									class="list-details-specs zuhe_list_text"
-									@click.stop="navToDetailPage(pros.productId)"
-									>{{ pros.name }}</text
+								<text class="list-details-title">{{ isInterceptHtmlFn(pros.name) }}</text>
+								<text class="list-details-specs">规格:{{ pros.unit ? pros.unit : '' }}</text>
+								<text class="list-details-miniQuantity list-details-specs"
+									>起订量:{{ pros.minBuyNumber }}</text
 								>
-								<view class="list-details-price zuhe_list_price">
-									<view class="list-shop com">
-										<view class="list-price zuhe_list_price">
-											<view class="zuhe_price-larger zuhe_list_text">
-												<text class="price-larger">规格:{{ pros.unit }}</text>
+								<view class="list-details-specs" v-if="pros.code != '' && pros.code != null">
+									<view>商品编码:{{ pros.code }}</view>
+								</view>
+								<view class="list-details-price">
+									<template v-if="priceLoading">
+										<view class="list-price-loding">正在获取价格...</view>
+									</template>
+									<template v-else>
+										<view class="list-shop">
+											<view class="list-price">
 												<text
-													class="price-btn"
-													@click.stop="handleShowUnitPopup(pros, proIndex)"
-													>重选</text
+													class="price-larger"
+													:class="
+														PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? 'none'
+															: ''
+													"
 												>
+													¥{{
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? pros.originalPrice
+															: pros.price) | NumFormat
+													}}
+												</text>
 											</view>
-											<view class="zuhe_price-larger zuhe_list_text">
-												<view class="list-price-none" v-if="pros.repurchaseFlag == 1">
-													<text class="price-none">价格:¥{{ pros.originalPrice }}</text>
+										</view>
+										<button class="add-cart-btn" @click.stop="operationHanld(pros)">数量</button>
+									</template>
+								</view>
+								<view class="list-details-price">
+									<view class="floor-item-act">
+										<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
+										<template v-if="pros.actStatus == 1">
+											<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
+												{{ pros.promotions.name }}<text>:¥{{ pros.price | NumFormat }}</text>
+											</view>
+											<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
+										</template>
+										<template v-if="pros.svipProductFlag == 1">
+											<view class="svip-tags">
+												<view class="tags">SVIP</view>
+												<view class="price">{{ pros.svipPriceTag }}</view>
+											</view>
+										</template>
+									</view>
+								</view>
+							</view>
+						</view>
+						<view v-if="showLoading && listData.length > 4 && !showRegularBtn">
+							<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+								>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+							>
+							<view class="loading-wrapper loading-wrapper-btm" v-else
+								>———<text class="btm-text">已至底部</text>———</view
+							>
+						</view>
+					</scroll-view>
+				</view>
+				<!-- 组合商品 -->
+				<view :class="tabIndex" v-if="tabIndex === 1">
+					<scroll-view
+						:style="{ height: scrollHeight + 'px', paddingTop: searchStatus ? '112rpx' : '' }"
+						@scrolltolower="scrolltolower(tabIndex)"
+						scroll-y
+					>
+						<view class="all-zuhe-list" v-for="(item, index) in combinationProduct" :key="index" :id="item.id">
+							<view class="zuhe_title" :class="index % 2 == 0 ? 'active' : ''">{{ item.name }}</view>
+							<view
+								v-for="(pros, proIndex) in item.combinationProductList"
+								:class="index % 2 == 0 ? 'stylecontent' : ''"
+								:key="proIndex"
+								:id="pros.productId"
+								class="zuhe-list-content commodity-list"
+							>
+								<view class="list-details-info">
+									<text class="list-details-title zuhe_list_text">商品编码:{{ pros.code }}</text>
+									<text
+										class="list-details-specs zuhe_list_text"
+										@click.stop="navToDetailPage(pros.productId)"
+										>{{ pros.name }}</text
+									>
+									<view class="list-details-price zuhe_list_price">
+										<view class="list-shop com">
+											<view class="list-price zuhe_list_price">
+												<view class="zuhe_price-larger zuhe_list_text">
+													<text class="price-larger">规格:{{ pros.unit }}</text>
 													<text
-														class="iconfont icon-wenhao"
-														@click.stop="repurchModel"
-													></text>
+														class="price-btn"
+														@click.stop="handleShowUnitPopup(pros, proIndex)"
+														>重选</text
+													>
 												</view>
-												<view class="price-larger">价格:¥{{ pros.price | NumFormat }}</view>
-											</view>
-											<view class="zuhe_price-larger zuhe_list_text">
-												<view class="floor-item-act">
-													<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
-													<template v-if="pros.actStatus == 1">
-														<view
-															class="floor-tags"
-															v-if="PromotionsFormat(pros.promotions)"
-														>
-															{{ pros.promotions.name
-															}}<text>:¥{{ pros.price | NumFormat }}</text>
-														</view>
-														<view class="floor-tags" v-else>{{
-															pros.promotions.name
-														}}</view>
-													</template>
-													<template v-if="pros.svipProductFlag == 1">
-														<view class="svip-tags">
-															<view class="tags">SVIP</view>
-															<view class="price">{{ pros.svipPriceTag }}</view>
-														</view>
-													</template>
+												<view class="zuhe_price-larger zuhe_list_text">
+													<view class="list-price-none" v-if="pros.repurchaseFlag == 1">
+														<text class="price-none">价格:¥{{ pros.originalPrice }}</text>
+														<text
+															class="iconfont icon-wenhao"
+															@click.stop="repurchModel"
+														></text>
+													</view>
+													<view class="price-larger">价格:¥{{ pros.price | NumFormat }}</view>
 												</view>
-												<view class="count">
-													<view class="number-box">
-														<view
-															class="iconfont icon-jianhao"
-															@click.stop="changeCountSub(item, pros)"
-														></view>
-														<input
-															class="btn-input"
-															type="number"
-															maxlength="6"
-															v-model="pros.initProductNum"
-															@blur="changeNnmber($event, item, pros)"
-														/>
-														<view
-															class="iconfont icon-jiahao"
-															@click.stop="changeCountAdd(item, pros)"
-														></view>
+												<view class="zuhe_price-larger zuhe_list_text">
+													<view class="floor-item-act">
+														<view class="coupon-tags" v-if="pros.couponsLogo">优惠券</view>
+														<template v-if="pros.actStatus == 1">
+															<view
+																class="floor-tags"
+																v-if="PromotionsFormat(pros.promotions)"
+															>
+																{{ pros.promotions.name
+																}}<text>:¥{{ pros.price | NumFormat }}</text>
+															</view>
+															<view class="floor-tags" v-else>{{
+																pros.promotions.name
+															}}</view>
+														</template>
+														<template v-if="pros.svipProductFlag == 1">
+															<view class="svip-tags">
+																<view class="tags">SVIP</view>
+																<view class="price">{{ pros.svipPriceTag }}</view>
+															</view>
+														</template>
+													</view>
+													<view class="count">
+														<view class="number-box">
+															<view
+																class="iconfont icon-jianhao"
+																@click.stop="changeCountSub(item, pros)"
+															></view>
+															<input
+																class="btn-input"
+																type="number"
+																maxlength="6"
+																v-model="pros.initProductNum"
+																@blur="changeNnmber($event, item, pros)"
+															/>
+															<view
+																class="iconfont icon-jiahao"
+																@click.stop="changeCountAdd(item, pros)"
+															></view>
+														</view>
 													</view>
 												</view>
-											</view>
-											<view class="list-price-all" :style="{ overflow: 'hidden' }">
-												<view class="price-two zuhe_list_text"
-													>总价:<text class="zuhe_list_zj"
-														>¥ {{ pros.totalPrice | NumFormat }}</text
-													></view
-												>
+												<view class="list-price-all" :style="{ overflow: 'hidden' }">
+													<view class="price-two zuhe_list_text"
+														>总价:<text class="zuhe_list_zj"
+															>¥ {{ pros.totalPrice | NumFormat }}</text
+														></view
+													>
+												</view>
 											</view>
 										</view>
 									</view>
 								</view>
 							</view>
-						</view>
-						<view class="foot_conten">
-							<view class="zuhe_foot-box">
-								<view class="">
-									<text>种类:{{ item.productKind }}</text>
-									<text>总数:{{ item.productTotalNum }}</text>
+							<view class="foot_conten">
+								<view class="zuhe_foot-box">
+									<view class="">
+										<text>种类:{{ item.productKind }}</text>
+										<text>总数:{{ item.productTotalNum }}</text>
+									</view>
+									<text
+										>总额:<text class="foot_text">{{
+											item.productTotalAmount | NumFormat
+										}}</text></text
+									>
 								</view>
-								<text
-									>总额:<text class="foot_text">{{
-										item.productTotalAmount | NumFormat
-									}}</text></text
-								>
+								<button type="default" class="buycart" @click.stop="operationHanld(item)">
+									加入购物车
+								</button>
 							</view>
-							<button type="default" class="buycart" @click.stop="operationHanld(item)">
-								加入购物车
-							</button>
 						</view>
-					</view>
-					<view v-if="showLoading && combinationProduct.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
-							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
-						>
-						<view class="loading-wrapper loading-wrapper-btm" v-else
-							>———<text class="btm-text">已至底部</text>———</view
-						>
-					</view>
-				</scroll-view>
+						<view v-if="showLoading && combinationProduct.length > 4 && !showRegularBtn">
+							<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+								>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+							>
+							<view class="loading-wrapper loading-wrapper-btm" v-else
+								>———<text class="btm-text">已至底部</text>———</view
+							>
+						</view>
+					</scroll-view>
+				</view>
 			</view>
-		</view>
+		</template>
 		<!-- 组合商品规格弹窗 -->
 		<cmUnitSupporPopup
 			v-if="popupShow"
@@ -255,6 +257,7 @@
 		></cmUnitSupporPopup>
 		<!-- 可拖动悬浮按钮 -->
 		<cm-drag
+			v-if="!showSkeleton"
 			:cartNum="cartQuantity"
 			:isDock="true"
 			:existTabBar="true"
@@ -299,7 +302,7 @@ export default {
 			searchInputVal: '',
 			isModallayer: false,
 			windowHeight: '',
-			showSkeleton: false,
+			showSkeleton: true,
 			priceLoading: true,
 			isShowEmpty: false,
 			isShowEmptyText: '搜索相关商品',
@@ -401,7 +404,6 @@ export default {
 						} else {
 							this.listData = [...resList]
 							this.getProductPrice()
-							this.showSkeleton = false
 						}
 						// 防上拉暴滑
 						this.pullFlag = false
@@ -441,13 +443,16 @@ export default {
 				productIds: productIds,
 				source: 2
 			})
-				.then(response => {
-					this.listData = this.ReturnNewProducts(this.listData, response.data)
-					this.priceLoading = false
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+			.then(response => {
+				this.listData = this.ReturnNewProducts(this.listData, response.data)
+				this.priceLoading = false
+				setTimeout(() => {
+						this.showSkeleton = false
+				}, 500)
+			})
+			.catch(error => {
+				this.$util.msg(error.msg, 2000)
+			})
 		},
 		ReturnNewProducts(Array, list) {
 			//合并字段

+ 1 - 1
pages/seller/cart/mixins/cartMixins.js

@@ -49,7 +49,7 @@ const cartMixins = {
                     return
                 }
                 let cartSkuIds = { skuIds: skuIds.substring(0, skuIds.lastIndexOf(',')) }
-                this.$api.navigateTo(`/pages/seller/order/create-order?data=${JSON.stringify({ data: cartSkuIds })}`)
+                this.$api.navigateTo(`/pages/seller/order/create-order?type=2&data=${JSON.stringify({ data: cartSkuIds })}`)
             }
         },
         handleBtnConfirm(data) {

+ 1 - 1
pages/seller/cart/second.vue

@@ -169,7 +169,7 @@
 						productIds:this.handleData.productId,
 						productCount:this.number
 				}	
-				this.$api.navigateTo(`/pages/seller/order/create-order?type=prodcut&data=${JSON.stringify({data:productStp})}`)
+				this.$api.navigateTo(`/pages/seller/order/create-order?type=1&data=${JSON.stringify({data:productStp})}`)
 				setTimeout(() => {
 					this.specClass = 'none';
 				}, 200);

+ 18 - 18
pages/seller/club/club-list.vue

@@ -75,19 +75,19 @@
 						</view>
 						<view class="club-list-bot">
 							<view class="btn" @click.stop="handleClickOper(1, club)"> <text class="iconfont icon-lijixiadan"></text> 立即下单</view>
-							<view class="btn" @click.stop="handleClickOper(2, club)"> <text class="iconfont icon-ershouxiadan"></text> 二手下单</view>
-							<view class="btn" @click.stop="handleClickOper(4, club)"> <text class="iconfont icon-chongzhixiadingjin"></text> 充值/下订金</view>
+<!-- 							<view class="btn" @click.stop="handleClickOper(3, club)"> <text class="iconfont icon-zaicigoumai1"></text> 再次购买</view>
+							<view class="btn" @click.stop="handleClickOper(6, club)"> <text class="iconfont icon-youhuiquan"></text> 购买优惠券</view>
 							<view class="btn" @click.stop="handleShowBubble(club,index)"> 
 								<text class="iconfont icon-gengduo2"></text> 
 								<view class="btn-bubble" v-if="currentIndex === index && club.bubble">
-									<view class="btn-view border" @click.stop="handleClickOper(3, club)">
-										<text class="iconfont icon-zaicigoumai1"></text> 再次购买
+									<view class="btn-view border" @click.stop="handleClickOper(2, club)">
+										<text class="iconfont icon-ershouxiadan"></text> 二手下单
 									</view>
-									<view class="btn-view" @click.stop="handleClickOper(6, club)">
-										<text class="iconfont icon-youhuiquan"></text> 购买优惠券
+									<view class="btn-view" @click.stop="handleClickOper(4, club)">
+										<text class="iconfont icon-chongzhixiadingjin"></text> 充值/下订金
 									</view>
 								</view>
-							</view>
+							</view> -->
 						</view>
 					</view>
 					<!--加载loadding-->
@@ -474,17 +474,17 @@ page,
 				text-align: center;
 				float: left;
 				position: relative;
-				&:nth-child(1){
-					&:before{
-						content: '';
-						width: 1px;
-						height: 20rpx;
-						background-color: #B2B2B2;
-						position: absolute;
-						right: 0;
-						top: 30rpx;
-					}
-				}
+				// &:nth-child(1){
+				// 	&:before{
+				// 		content: '';
+				// 		width: 1px;
+				// 		height: 20rpx;
+				// 		background-color: #B2B2B2;
+				// 		position: absolute;
+				// 		right: 0;
+				// 		top: 30rpx;
+				// 	}
+				// }
 				&:nth-child(2){
 					&:before{
 						content: '';

+ 5 - 5
pages/seller/components/user.vue

@@ -232,11 +232,11 @@ export default {
 					path: '/pages/seller/club/club-list',
 					icon: 'https://static.caimei365.com/app/img/icon/icon_seller_5@2x.png'
 				},
-				{
-					name: '发布二手商品',
-					path: '/pages/second/form/form-select',
-					icon: 'https://static.caimei365.com/app/img/icon/icon_seller_6@2x.png'
-				},
+				// {
+				// 	name: '发布二手商品',
+				// 	path: '/pages/second/form/form-select',
+				// 	icon: 'https://static.caimei365.com/app/img/icon/icon_seller_6@2x.png'
+				// },
 				{
 					name: '客户咨询记录',
 					path: '/pages/seller/remarks/list',

+ 133 - 112
pages/seller/index/index.vue

@@ -1,25 +1,25 @@
 <template>
-	<view class="content"  :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">
+	<view class="content" :style="{ paddingBottom: isIphoneX ? '140rpx' : '98rpx' }">
 		<!-- 采美采购商城 -->
-		<view :style="{'display':show_index == 0 ?'block':'none'}">
-			<seller-home  ref="home" v-if="isHomeData"></seller-home>
+		<view :style="{ display: show_index == 0 ? 'block' : 'none' }">
+			<seller-home ref="home" v-if="isHomeData"></seller-home>
 		</view>
 		<!-- 商品分类 -->
-		<view :style="{'display':show_index == 1? 'block':'none'}">
-			<seller-category  ref="category" v-if="isCategory"></seller-category>
+		<view :style="{ display: show_index == 1 ? 'block' : 'none' }">
+			<seller-category ref="category" v-if="isCategory"></seller-category>
 		</view>
 		<!-- 账户中心 -->
-		<view :style="{'display':show_index == 2 ?'flex':'none'}">
-			<seller-user  ref="user" v-if="isUserData"></seller-user>
+		<view :style="{ display: show_index == 2 ? 'flex' : 'none' }">
+			<seller-user ref="user" v-if="isUserData"></seller-user>
 		</view>
 		<!-- isIphoneX判断是否为刘海屏在main.js里,好像uniapp有一个css变量获取刘海屏的安全区域 -->
-		<view class="tabBar" :style="{height:isIphoneX?'140rpx':'98rpx'}">
+		<view class="tabBar" :style="{ height: isIphoneX ? '140rpx' : '98rpx' }">
 			<!-- 导航的中间圆圈 -->
-			<view class="tabBar_list" :style="{paddingBottom:isIphoneX?'40rpx':''}">
-				<view v-for="(item) in tab_nav_list" :key="item.id" class="tabBar_item" @tap="cut_index(item.id)">
+			<view class="tabBar_list" :style="{ paddingBottom: isIphoneX ? '40rpx' : '' }">
+				<view v-for="item in tab_nav_list" :key="item.id" class="tabBar_item" @tap="cut_index(item.id)">
 					<image v-if="show_index == item.id" :src="item.iconAc"></image>
 					<image v-else :src="item.icon"></image>
-					<view :class="{'tabBar_name':true,'nav_active':show_index == item.id}">{{item.name}}</view>
+					<view :class="{ tabBar_name: true, nav_active: show_index == item.id }">{{ item.name }}</view>
 				</view>
 			</view>
 		</view>
@@ -27,117 +27,138 @@
 </template>
 
 <script>
-	import sellerHome from '../components/home.vue'
-	import sellerUser from '../components/user.vue'
-	import sellerCategory from '../components/category.vue'
-	export default {
-		components: {
-			sellerHome,//采美采购商城 0
-			sellerUser,//账户中心     1
-			sellerCategory,//商品分类 2
-		},
-		data() {
-			return {
-				show_index:2,//控制显示那个组件
-				isUserData: false,
-				isCategory: false,
-				isHomeData: false,
-				isIphoneX:this.$store.state.isIphone,
-				tab_nav_list :[//菜单列表
-					{'id':0,'name':'首页',icon:'https://static.caimei365.com/app/img/icon/icon-home@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-home-active@3x.png'},
-					{'id':1,'name':'分类',icon:'https://static.caimei365.com/app/img/icon/icon-sort@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-sort-active@3x.png'},
-					{'id':2,'name':'我的',icon:'https://static.caimei365.com/app/img/icon/icon-user@3x.png',iconAc:'https://static.caimei365.com/app/img/icon/icon-user-active@3x.png'}
-				],
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '账户中心',  // 导航栏 中间的标题
-					textLeft:false
-				}, 
-				isIphoneX:this.$store.state.isIphoneX,
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-			}
-		},
-		onLoad() {
-			this.$nextTick(()=>{// 一定要等视图更新完再调用方法
-				setTimeout(()=>{ this.isUserData = true },100)
-			})
-		},
-		methods: {
-			// 切换组件
-			cut_index(type){
-				this.show_index = type
-				if(this.show_index == 0){
-					this.isHomeData = true
-					this.isUserData = false
-					this.isCategory = false
-				}else if(this.show_index == 1){
-					this.isHomeData = false
-					this.isUserData = false
-					this.isCategory = true
-				}else if(this.show_index == 2){
-					this.isHomeData = false
-					this.isUserData = true
-					this.isCategory = false
+import sellerHome from '../components/home.vue'
+import sellerUser from '../components/user.vue'
+import sellerCategory from '../components/category.vue'
+export default {
+	components: {
+		sellerHome, //采美采购商城 0
+		sellerUser, //账户中心     1
+		sellerCategory //商品分类 2
+	},
+	data() {
+		return {
+			show_index: 2, //控制显示那个组件
+			isUserData: false,
+			isCategory: false,
+			isHomeData: false,
+			isIphoneX: this.$store.state.isIphone,
+			tab_nav_list: [
+				//菜单列表
+				{
+					id: 0,
+					name: '首页',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-home@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-home-active@3x.png'
+				},
+				{
+					id: 1,
+					name: '分类',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-sort@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-sort-active@3x.png'
+				},
+				{
+					id: 2,
+					name: '我的',
+					icon: 'https://static.caimei365.com/app/img/icon/icon-user@3x.png',
+					iconAc: 'https://static.caimei365.com/app/img/icon/icon-user-active@3x.png'
 				}
+			],
+			nvabarData: {
+				//顶部自定义导航
+				showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
+				showSearch: 0,
+				title: '账户中心', // 导航栏 中间的标题
+				textLeft: false
 			},
-			onPullDownRefresh(){
-				if(this.show_index == 0){
-					this.$refs.home.getHomeInformation()
-				}else if(this.show_index == 2){
-					this.$refs.user.initData()
-				}
-				uni.stopPullDownRefresh()
+			isIphoneX: this.$store.state.isIphoneX,
+			CustomBar: this.CustomBar // 顶部导航栏高度
+		}
+	},
+	onLoad() {
+		this.$nextTick(() => {
+			// 一定要等视图更新完再调用方法
+			setTimeout(() => {
+				this.isUserData = true
+			}, 100)
+		})
+	},
+	methods: {
+		// 切换组件
+		cut_index(type) {
+			this.show_index = type
+			if (this.show_index == 0) {
+				this.isHomeData = true
+				this.isUserData = false
+				this.isCategory = false
+			} else if (this.show_index == 1) {
+				this.isHomeData = false
+				this.isUserData = false
+				this.isCategory = true
+			} else if (this.show_index == 2) {
+				this.isHomeData = false
+				this.isUserData = true
+				this.isCategory = false
 			}
 		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: '生美医美正品采购服务平台',
-			  path: 'pages/tabBar/home/index',
-			  imageUrl:'https://static.caimei365.com/app/img/bg/min-banner.jpg'
+		onPullDownRefresh() {
+			if (this.show_index == 0) {
+				this.$refs.home.getHomeInformation()
+			} else if (this.show_index == 2) {
+				this.$refs.user.initData()
 			}
-		},
+			uni.stopPullDownRefresh()
+		}
+	},
+	onShareAppMessage(res) {
+		//分享转发
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
+		}
+		return {
+			title: '生美医美正品采购服务平台',
+			path: 'pages/tabBar/home/index',
+			imageUrl: 'https://static.caimei365.com/app/img/bg/min-banner.jpg'
+		}
 	}
+}
 </script>
 
 <style lang="scss">
-	.tabBar{
-		width:100%;
-		height: 98rpx;
-		background: #fff;
-		border-top:1px solid #E5E5E5;
-		position: fixed;
-		bottom:0px;
-		left:0px;
-		right:0px;
+.tabBar {
+	width: 100%;
+	height: 98rpx;
+	background: #fff;
+	border-top: 1px solid #e5e5e5;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	z-index: 999;
+	.tabBar_list {
+		width: 86%;
 		display: flex;
-		align-items: center;
-		justify-content: center;
-		z-index: 999;
-		.tabBar_list{
-			width:86%;
+		justify-content: space-between;
+		image {
+			width: 48rpx;
+			height: 48rpx;
+			margin-bottom: 2rpx;
+		}
+		.tabBar_item {
+			width: 150rpx;
 			display: flex;
-			justify-content: space-between;
-			image{
-				width:48rpx;
-				height: 48rpx;
-				margin-bottom:2rpx
-			}
-			.tabBar_item{
-				width:150rpx;
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				flex-direction: column;
-				font-size: 20rpx;
-				color: #999999;
-			}
-		 }
-	}
-	.nav_active{
-		color: $color-system;
+			justify-content: center;
+			align-items: center;
+			flex-direction: column;
+			font-size: 20rpx;
+			color: #999999;
+		}
 	}
+}
+.nav_active {
+	color: $color-system;
+}
 </style>

+ 3 - 2
pages/seller/order/components/sellerAddress.vue → pages/seller/order/components/cm-address-temp.vue

@@ -27,7 +27,7 @@
 		 		</view>
 		 	</view>
 		 </navigator>
-		 <image  src="../../../static/temp/line@3x.png" mode=""></image>
+		<image  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
 	</view>
 </template>
 
@@ -43,6 +43,7 @@
 			return{
 				isEmpty:false,
 				addressSrc:'',
+				StaticUrl: this.$Static,
 			}
 		},
 		created(){
@@ -62,7 +63,7 @@
 			initData(res) {
 				if(Object.keys(res).length == 0){
 					this.isEmpty = true
-					this.addressSrc = '/pages/seller/address/addressManage'
+					this.addressSrc = '/pages/seller/address/addressManage?type=select'
 				}else{
 					this.isEmpty = false
 					this.$parent.isFreight = false

+ 2 - 1
pages/seller/order/components/sellerClubVisible.vue → pages/seller/order/components/cm-club-visible.vue

@@ -2,7 +2,7 @@
 	<view class="orderVisible-template">
 		<!-- 订单对机构是否可见 -->
 		<view class="visible-title" @tap.stop="showPopup">
-			<text class="orderVisible">订单对机构是否可见</text>
+			<text class="orderVisible">订单对机构是否可见:</text>
 			<view class="visible-right">
 				<text class="text-l">{{ orderVisibleText }}</text> <text class="iconfont icon-xiayibu"></text>
 			</view>
@@ -104,6 +104,7 @@ export default {
 		.visible-right {
 			float: right;
 			color: #2a81ff;
+			font-weight: normal;
 			.text-l {
 				margin-right: 40rpx;
 			}

+ 0 - 0
pages/seller/order/components/sellerExchangeCoupon.vue → pages/seller/order/components/cm-coupon-chang.vue


+ 1 - 1
pages/seller/order/components/sellerCoupon.vue → pages/seller/order/components/cm-coupon-popup.vue

@@ -232,7 +232,7 @@ export default {
 		.text-coupon {
 			display: inline-block;
 			float: right;
-			padding-right: 30rpx;
+			padding-right: 40rpx;
 			line-height: 88rpx;
 			font-size: 28rpx;
 			color: #f94b4b;

+ 199 - 0
pages/seller/order/components/cm-coupon-tips.vue

@@ -0,0 +1,199 @@
+<template name="alert">
+	<view class="coupon-content-model">
+		<view class="coupon-alert-content">
+			<view class="coupon">
+				<view class="coupon-list">
+					<view class="list-cell-tags"
+						><text>{{ coupon.couponType | TypeFormat }}</text></view
+					>
+					<view class="list-cell-le">
+						<view class="coupon-maxMoney"> <text class="small">¥</text> {{ coupon.couponAmount }} </view>
+						<view class="coupon-minMoney">
+							<text class="txt">满{{ coupon.touchPrice }}可用</text>
+						</view>
+					</view>
+					<view class="list-cell-ri">
+						<view class="list-cell-top">
+							<text v-if="coupon.couponType == 0">
+								{{
+									coupon.productType && coupon.productType == 1
+										? '全商城商品通用'
+										: '仅可购买指定商品'
+								}}
+							</text>
+							<text v-if="coupon.couponType == 1">
+								{{ coupon.categoryType == 1 ? '仅限购买产品类商品' : '仅限购买仪器类商品' }}
+							</text>
+							<text v-if="coupon.couponType == 3">仅限购买店铺【{{ coupon.shopName }}】的商品</text>
+							<text v-if="coupon.couponType == 4 || coupon.couponType == 2">全商城商品通用</text>
+						</view>
+						<view class="list-cell-time">{{ coupon.startDate }} - {{ coupon.endDate }}</view>
+					</view>
+				</view>
+				<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'alert',
+	props: {
+		coupon: {
+			type: Object
+		}
+	},
+	filters: {
+		TypeFormat(value) {
+			const map = {
+				0:'活动券',
+				1:'品类券',
+				2:'用户专享券',
+				3:'店铺券',
+				4:'新用户券',
+			}
+		}
+	},
+	data() {
+		return {}
+	},
+	created() {},
+	onLoad() {},
+	methods: {},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+.coupon-content-model {
+	width: 100%;
+	height: 100%;
+	background: rgba(0, 0, 0, 0.5);
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 8888;
+	transition: all 0.4s;
+	.coupon-alert-content {
+		width: 600rpx;
+		height: 612rpx;
+		position: absolute;
+		top: 0;
+		left: 0;
+		bottom: 0;
+		right: 0;
+		margin: auto;
+		box-sizing: border-box;
+		padding-top: 92rpx;
+		.coupon {
+			width: 600rpx;
+			height: 522rpx;
+			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
+			background-size: cover;
+			box-sizing: border-box;
+			padding: 230rpx 40rpx 0 40rpx;
+			.coupon-list {
+				width: 100%;
+				height: 147rpx;
+				margin-bottom: 32rpx;
+				box-sizing: border-box;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
+				background-size: cover;
+				position: relative;
+				.list-cell-tags {
+					display: inline-block;
+					padding: 0 10rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					background-color: #f94b4b;
+					color: #ffffff;
+					font-size: 18rpx;
+					border-radius: 16rpx 0 16rpx 0;
+					text-align: center;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.list-cell-le {
+					width: 154rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 0;
+					float: left;
+					.coupon-maxMoney {
+						width: 100%;
+						height: 54rpx;
+						line-height: 54rpx;
+						font-size: 42rpx;
+						color: #f94b4b;
+						text-align: center;
+						margin-top: 10rpx;
+						.small {
+							font-size: $font-size-20;
+						}
+					}
+					.coupon-minMoney {
+						width: 100%;
+						height: 28rpx;
+						float: left;
+						box-sizing: border-box;
+						padding-left: 24rpx;
+						.txt {
+							display: block;
+							height: 28rpx;
+							line-height: 28rpx;
+							font-size: 16rpx;
+							color: #f94b4b;
+							text-align: center;
+							padding: 0 5rpx;
+							background-color: #fff1eb;
+							border-radius: 4rpx;
+							float: left;
+						}
+					}
+				}
+				.list-cell-ri {
+					width: 366rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 20rpx;
+					float: left;
+					.list-cell-top {
+						width: 100%;
+						height: 64rpx;
+						line-height: 64rpx;
+						font-size: $font-size-26;
+						color: #333333;
+						float: left;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
+						overflow: hidden;
+					}
+					.list-cell-time {
+						width: 100%;
+						height: 28rpx;
+						line-height: 28rpx;
+						text-align: left;
+						font-size: $font-size-20;
+						color: #999999;
+					}
+				}
+			}
+			.coupon-btn {
+				width: 100%;
+				height: 78rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
+				background-size: cover;
+				line-height: 78rpx;
+				text-align: center;
+				color: #ffffff;
+				font-size: $font-size-36;
+			}
+		}
+	}
+}
+</style>

+ 247 - 0
pages/seller/order/components/cm-details-button.vue

@@ -0,0 +1,247 @@
+<template name="button">
+	<view class="button-template" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<view
+				class="btn btn-cancel"
+				v-if="secondHandOrderFlag != 1 && !rechargeGoods"
+				@click.stop="btnConfirm('again', order)"
+				>再来一单</view
+			>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel', order)"
+				>取消订单</view
+			>
+			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete"  @click.stop="btnConfirm('delete',order)">删除订单</view> -->
+			<template>
+				<view class="btn btn-share" v-if="btnState.isPay" @click.stop="onShareCode(1)">
+					<view class="tips" v-if="shareCode">分享码:{{ shareCode }}</view> 分享支付
+				</view>
+				<view class="btn btn-share" v-else @click.stop="onShareCode(2)">
+					<view class="tips" v-if="shareCode">分享码:{{ shareCode }}</view> 分享订单
+				</view>
+			</template>
+			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', order)"
+				>确认订单</view
+			>
+			<view
+				class="btn btn-query"
+				v-if="btnState.isQuery && order.secondHandOrderFlag != 1"
+				@click.stop="btnConfirm('query', order)"
+				>查看物流</view
+			>
+			<view
+				class="btn btn-color"
+				v-if="btnState.isPay && ableUserMoney > 0 && !rechargeGoods"
+				@click.stop="btnConfirm('balance', order)"
+				>余额抵扣</view
+			>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'button',
+	props: {
+		status: {
+			type: Number
+		},
+		order: {
+			type: Object
+		},
+		ableUserMoney: {
+			type: Number
+		},
+		rechargeGoods: {
+			type: Boolean
+		},
+		shareCode: {
+			type: String
+		},
+		secondHandOrderFlag: {
+			type: String
+		}
+	},
+	watch: {
+		status: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	data() {
+		return {
+			btnState: this.initStatus(),
+			isIphoneX: this.$store.state.isIphoneX,
+			invoiceStatus: false,
+			mapStateArr: [
+				{ label: 'isQuery', val: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], status: true }
+			]
+		}
+	},
+	created() {
+		console.log(this.rechargeGoods)
+		this.initData(this.status)
+	},
+	computed: {},
+	methods: {
+		initData(resVal) {
+			/**
+			 * @分享按钮统一显示
+			 * @按钮根据状态显示
+			 * @(2,3,5,6,12,13,22,23,32,33)显示[查看物流]按钮,其他隐藏
+			 * @(4)显示[删除订单],其他隐藏
+			 * @(0、11)显示[取消订单],其他隐藏
+			 * @(13,33)显示[确认收货]和[查看物流]
+			 */
+			this.btnState = this.initStatus()
+			this.mapStateArr.forEach(el => {
+				el.val.forEach(value => {
+					if (resVal === value) {
+						this.btnState[el.label] = el.status
+						//console.log(this.btnState[el.label]);
+					}
+				})
+			})
+		},
+		initStatus() {
+			let btnState = {
+				isQuery: false,
+				isDelete: false,
+				isCancel: false,
+				isConfirm: false,
+				isPay: false
+			}
+			return btnState
+		},
+		getShareCode(code) {
+			this.shareCode = code
+		},
+		onShareCode(type) {
+			if (this.order.onlinePay == 1) {
+				this.$util.modal(
+					'提示',
+					'本订单不能进行线上支付,请让客户选择线下转账方式付款',
+					'继续分享',
+					'知道了',
+					true,
+					() => {
+						this.$parent.isShareModal = true
+					}
+				)
+			} else {
+				this.$parent.isShareModal = true
+				this.$parent.isShareType = type
+			}
+		},
+		btnConfirm(type, order) {
+			let data = {
+				type: type,
+				shopOrderId: order.shopOrderId,
+				order: order
+			}
+			this.$emit('buttonConfirm', data)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.button-template {
+	width: 100%;
+	height: auto;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background: #ffffff;
+	.button-content {
+		padding: 0 24rpx;
+		height: auto;
+		float: right;
+		position: relative;
+		margin: 20rpx 0;
+		.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: 160rpx;
+			height: 64rpx;
+			// margin:22rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 34rpx;
+			float: right;
+		}
+		.btn-color {
+			background: $btn-confirm;
+		}
+		.btn-cancel {
+			background: #ffffff;
+			color: #666666;
+			float: left;
+			// margin: 22rpx 0;
+			margin-right: 15rpx;
+			border: 2rpx solid #999999;
+		}
+		.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: linear-gradient(315deg, rgba(231, 0, 0, 1) 0%, rgba(255, 104, 1, 1) 100%);
+		}
+		.btn-share {
+			background: #ffffff;
+			color: #666666;
+			float: left;
+			// margin: 22rpx 0;
+			margin-right: 15rpx;
+			border: 2rpx solid #999999;
+			position: relative;
+			.tips {
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background: #ff5b00;
+				border-radius: 8rpx;
+				position: absolute;
+				color: #ffffff;
+				line-height: 34rpx;
+				font-size: $font-size-24;
+				text-align: left;
+				right: 0;
+				top: -69rpx;
+				&:before {
+					content: '';
+					width: 25rpx;
+					height: 25rpx;
+					background: #ff5b00;
+					position: absolute;
+					bottom: -8rpx;
+					left: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
+				}
+			}
+		}
+	}
+}
+</style>

+ 471 - 0
pages/seller/order/components/cm-freight-popup.vue

@@ -0,0 +1,471 @@
+<template name="freight">
+	<!-- 运费信息 -->
+	<view>
+		<view class="goods-pros-m">
+			<view class="freight-main">
+				<view class="freight-left">运费:</view>
+				<view class="freight-right" @click.stop="handlePupShow">
+					<template v-if="handlePostageFlag === 0">
+						<view class="freight-text" v-if="handleSupplier.isColdChina"
+							>¥{{ handleSupplier.coldChain | NumFormat }}</view
+						>
+						<view class="freight-text" v-else>包邮</view>
+					</template>
+					<view class="freight-text" v-if="handlePostageFlag === 1"
+						>¥{{ handleTotalPostage | NumFormat }}</view
+					>
+					<template v-if="handlePostageFlag === 2">
+						<view class="freight-text" v-if="handleSupplier.isColdChina"
+							>¥{{ handleSupplier.coldChain | NumFormat }}</view
+						>
+						<view class="freight-text" v-else>到付</view>
+					</template>
+					<view class="select"><text class="iconfont icon-xiayibu"></text></view>
+				</view>
+			</view>
+			<tui-bottom-popup :radius="true" :show="popupShow" @close="handleComfirm">
+				<view class="freight-title">运费设置</view>
+				<view class="freight-content">
+					<radio-group @change="radioChange">
+						<label v-for="(item, index) in radioItems" :key="index">
+							<radio
+								style="transform:scale(0.7)"
+								color="#FF5B00"
+								:id="item.value"
+								:value="item.value"
+								:checked="item.checked"
+							></radio>
+							<label :for="item.value" class="label">
+								<text>{{ item.name }}</text>
+							</label>
+						</label>
+					</radio-group>
+					<template v-if="handlePostageFlag === 0">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view> <view class="texts red">包邮</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费</view>
+								<view class="texts red" v-if="handleSupplier.isColdChina"
+									>¥{{ handleSupplier.coldChain | NumFormat }}</view
+								>
+								<view class="texts red" v-else>包邮</view>
+							</view>
+						</view>
+					</template>
+					<template v-if="handlePostageFlag === 1">
+						<view class="freight-form">
+							<view class="freight-form-item">
+								<input
+									class="form-input"
+									type="number"
+									v-model="handlePostageVal"
+									@input="handleInputPostage"
+									placeholder="请填写运费"
+									maxlength="20"
+								/>
+							</view>
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view>
+								<view class="texts">¥{{ handleSupplier.postage | NumFormat }} </view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费 </view>
+								<view class="texts red">¥{{ handleTotalPostage | NumFormat }} </view>
+							</view>
+						</view>
+					</template>
+					<template v-if="handlePostageFlag === 2">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view><view class="texts red">到付</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费</view>
+								<view class="texts red" v-if="handleSupplier.isColdChina"
+									>¥{{ handleSupplier.coldChain | NumFormat }}</view
+								>
+								<view class="texts red" v-else>到付</view>
+							</view>
+						</view>
+					</template>
+					<view class="freight-btn" @click="handleComfirm"> 确定 </view>
+				</view>
+			</tui-bottom-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'freight',
+	props: {
+		supplier: {
+			type: Object
+		},
+		index: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			popupShow: false,
+			isColdChina: false,
+			handleColdChain:0,// 记录冷链费
+			handlePostage: 0, // 记录原始运费
+			handlePostageVal: 0, // 记录修改的运费
+			handlePostageFlag: 0, //  记录运费类型
+			radioItems: [
+				{
+					name: '包邮',
+					value: 0,
+					checked: false
+				},
+				{
+					name: '不包邮',
+					value: 1,
+					checked: false
+				},
+				{
+					name: '到付',
+					value: 2,
+					checked: false
+				}
+			],
+			handleTotalPrice: 0, // 记录原始供应商总价
+			handleSupplier: {} // 记录原始信息
+		}
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	created() {
+		this.infoSupplier(this.supplier)
+	},
+	computed: {
+		// 计算总运费
+		handleTotalPostage() {
+			if (this.handleSupplier.isColdChina) {
+				return (this.handleSupplier.postage * 100 + this.handleSupplier.coldChain * 100) / 100
+			} else {
+				return this.handleSupplier.postage
+			}
+		}
+	},
+	watch: {
+		supplier: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.supplier = el
+			},
+			deep: true
+		}
+	},
+	methods: {
+		// 初始化
+		infoSupplier(data) {
+			this.handleSupplier = data
+			this.isColdChina = data.isColdChina
+			this.handleColdChain = data.coldChain
+			this.handleTotalPrice = data.totalPrice
+			this.handlePostage = this.handlePostageVal = data.postage
+			this.handlePostageFlag = data.handlePostageFlag
+			console.log('handlePostageFlag', this.handlePostageFlag)
+			switch (this.handlePostageFlag) {
+				case 0:
+					this.radioItems[0].checked = true
+					break
+				case 1:
+					this.radioItems[1].checked = true
+					break
+				case 2:
+					this.radioItems[2].checked = true
+					break
+			}
+		},
+		handleInputPostage(e) {
+			//处理邮费显示
+			// if (e.detail.value == '') {
+			// 	this.handleSupplier.postage = 0
+			// }
+		},
+		// 勾选冷链费
+		handleChangeColdChina() {
+			this.isColdChina = !this.isColdChina
+			this.handleSupplier.isColdChina = this.isColdChina
+			if (this.isColdChina) {
+				this.handleSupplier.totalPrice = Number(
+					(this.handleSupplier.totalPrice * 100 + this.handleSupplier.coldChain * 100) / 100
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			} else {
+				this.handleSupplier.totalPrice = Number(
+					this.repiceNumSub(this.handleSupplier.totalPrice, this.handleSupplier.coldChain)
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			}
+		},
+		// 切换运费类型0包邮 1 不包邮 2 到付
+		radioChange($event) {
+			this.handlePostageFlag = this.handleSupplier.handlePostageFlag = $event.detail.value * 1
+			if (this.handlePostageFlag === 1) {
+				this.handleSupplier.postage = this.handlePostage
+			} else {
+				this.handleSupplier.postage = this.handlePostage
+			}
+		},
+		// 确定运费
+		handleComfirm() {
+			if (this.handlePostageFlag === 0) {
+				let handleTotalPrice = this.isColdChina ? this.handleTotalPrice : Number(this.repiceNumSub(this.handleTotalPrice, this.handleColdChain))
+				this.handleSupplier.totalPrice = Number(this.repiceNumSub(handleTotalPrice, this.handleSupplier.postage))
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			} else if (this.handlePostageFlag === 1) {
+				if (this.handlePostageVal == 0 || !this.handlePostageVal) {
+					this.$util.msg('请填写运费', 2000)
+					return
+				}
+				this.handleSupplier.totalPrice = Number(
+					(this.handleTotalPrice * 100 - this.handlePostage * 100 + this.handlePostageVal * 100) / 100
+				)
+				this.handleSupplier.postage = this.handlePostageVal
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			} else {
+				let handleTotalPrice = this.isColdChina ? this.handleTotalPrice : Number(this.repiceNumSub(this.handleTotalPrice, this.handleColdChain))
+				this.handleSupplier.totalPrice = Number(this.repiceNumSub(handleTotalPrice, this.handleSupplier.postage))
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			}
+			this.popupShow = false
+		},
+		//减法精确,arg2:被减数,arg1:减数
+		repiceNumSub(arg1, arg2) {
+			var r1, r2, m, n
+			try {
+				r1 = arg1.toString().split('.')[1].length
+			} catch (e) {
+				r1 = 0
+			}
+			try {
+				r2 = arg2.toString().split('.')[1].length
+			} catch (e) {
+				r2 = 0
+			}
+			m = Math.pow(10, Math.max(r1, r2))
+			// last modify by deeka
+			// 动态控制精度长度
+			n = r1 >= r2 ? r1 : r2
+			return ((arg1 * m - arg2 * m) / m).toFixed(n)
+		},
+		handlePupShow() {
+			this.popupShow = true
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-pros-m {
+	width: 100%;
+	box-sizing: border-box;
+	padding: 10rpx 0;
+	.freight-main {
+		width: 100%;
+		height: 78rpx;
+		line-height: 78rpx;
+		font-size: $font-size-28;
+		color: $text-color;
+		background: #ffffff;
+		float: left;
+		.freight-left {
+			float: left;
+			font-weight: bold;
+		}
+		.freight-right {
+			float: right;
+			color: #333333;
+			position: relative;
+			.freight-text {
+				float: left;
+			}
+			.select {
+				float: right;
+				height: 78rpx;
+				padding: 0 20rpx;
+				line-height: 78rpx;
+				color: #333333;
+				font-weight: normal;
+				position: relative;
+				.select-text {
+					display: inline-block;
+					float: left;
+					margin-right: 30rpx;
+				}
+				.iconfont {
+					width: 60rpx;
+					height: 78rpx;
+					line-height: 78rpx;
+					text-align: right;
+					position: absolute;
+					right: 0;
+					top: 0;
+					font-size: $font-size-30;
+					color: #b2b2b2;
+				}
+			}
+		}
+	}
+	.freight-bean {
+		width: 100%;
+		height: 58rpx;
+		line-height: 58rpx;
+		float: left;
+		.bean-le {
+			float: left;
+			color: #666666;
+			font-size: $font-size-26;
+			font-weight: normal;
+		}
+		.bean-ri {
+			float: right;
+			display: flex;
+			align-items: center;
+			.checkbox-box {
+				display: flex;
+				width: 60rpx;
+				float: left;
+				height: 100%;
+				font-size: $font-size-26;
+				margin-top: 8rpx;
+				.checkbox {
+					width: 40rpx;
+					text-align: right;
+					box-sizing: border-box;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $color-system;
+				}
+			}
+		}
+	}
+}
+.freight-title {
+	color: #333333;
+	font-size: 32rpx;
+	text-align: center;
+	margin: 40rpx 0;
+}
+.freight-content {
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	font-weight: normal;
+	radio {
+		margin-right: 8rpx;
+	}
+	.label {
+		color: #666666;
+		font-size: 28rpx;
+		margin-right: 102rpx;
+	}
+	.freight-btn {
+		height: 90rpx;
+		background: $btn-confirm;
+		border-radius: 45rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #ffffff;
+		width: 100%;
+		margin: 100rpx 0 0 0;
+	}
+}
+.freight-form {
+	margin-top: 50rpx;
+	width: 100%;
+	.freight-form-item {
+		width: 100%;
+		height: 60rpx;
+		line-height: 60rpx;
+		margin-bottom: 24rpx;
+		color: #666666;
+		font-size: 28rpx;
+		.label {
+			width: 50%;
+			float: left;
+			margin-right: 0;
+		}
+		.texts {
+			width: 50%;
+			float: right;
+			text-align: right;
+			&.red {
+				color: #f94b4b;
+			}
+			.iconfont {
+				margin-left: 20rpx;
+				color: $color-system;
+			}
+		}
+		.form-input {
+			width: 100%;
+			height: 60rpx;
+			line-height: 60rpx;
+			flex-grow: 1;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+			border: 1px solid #e1e1e1;
+			border-radius: 4rpx;
+		}
+	}
+}
+.freight-pay {
+	position: absolute;
+	right: -60%;
+	transform: scale(0.7);
+}
+</style>

+ 399 - 0
pages/seller/order/components/cm-goods-temp.vue

@@ -0,0 +1,399 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list">
+			<view v-for="(supplier, index) in goodsData" :key="index" class="goods-item">
+				<view class="shoptitle">
+					<view v-if="supplier.promotions" class="floor-item-act">
+						<view class="floor-tags">{{ supplier.promotions.name }}</view>
+					</view>
+					<view class="title-text">{{ supplier.shopName }}</view>
+				</view>
+				<view class="productlist" v-for="(pros, idx) in supplier.cartList" :key="idx">
+					<view class="goods-pros-t">
+						<view class="pros-img">
+							<image :src="pros.image" alt="" />
+							<text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1">赠品</text>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ pros.name }}</view>
+							<view class="productspec" v-if="pros.productCategory != 2">规格:{{ pros.unit }}</view>
+							<view class="productspec" v-if="pros.productCode != '' && pros.productCode != null">
+								<view>商品编码:{{ pros.productCode }}</view>
+							</view>
+							<view class="productprice">
+								<view class="price"
+									><text>¥{{ pros.price | NumFormat }}</text></view
+								>
+								<view class="count"><text class="small">x</text>{{ pros.number }}</view>
+							</view>
+							<view class="floor-item-act">
+								<template v-if="pros.actStatus == 1 && pros.promotions">
+									<view v-if="PromotionsFormat(pros.promotions)" class="floor-tags">
+										{{ pros.promotions.name }}
+										<text v-if="pros.promotions">
+											:¥{{
+												pros.promotions == null
+													? '0.00'
+													: pros.promotions.touchPrice | NumFormat
+											}}
+										</text>
+									</view>
+									<view v-else-if="pros.promotions.type != 3" class="floor-tags">{{
+										pros.promotions.name
+									}}</view>
+								</template>
+								<template v-if="pros.svipProductFlag == 1 && vipFlag == 1">
+									<view class="svip-tags">
+										<view class="tags">SVIP</view>
+										<view class="price">{{ pros.svipPriceTag }}</view>
+									</view>
+								</template>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="goods-pros-m">
+					<view class="m-text">留言:</view>
+					<view class="m-input">
+						<input
+							type="text"
+							v-model="remark[index]"
+							@change="changeHandle(index)"
+							placeholder-class="placeholder"
+							maxlength="50"
+							placeholder="选填,最多不超过50个汉字"
+						/>
+					</view>
+				</view>
+				<!-- 运费 -->
+				<cm-freight-popup         
+					ref="freight"
+					v-if="isFreight"
+					:index.sync="index"
+					:supplier.sync="supplier"
+					@changePostage="changePostageFlag"
+					@changeColdChina="hanldChangeColdChina"
+				/>
+				<view class="goods-pros-b">
+					<view class="sum-none" v-if="supplier.originalPrice - supplier.totalPrice > 0">
+						<text class="money-sign">¥</text>
+						<text class="money">{{ supplier.originalPrice | NumFormat }}</text>
+						<text class="money-reduced"
+							>减<text>¥{{ (supplier.originalPrice - supplier.totalPrice) | NumFormat }}</text></text
+						>
+					</view>
+					<view class="sum" v-if="secondflag"
+						>合计:<text class="money">¥{{ supplier.totalPrice | NumFormat }}</text></view
+					>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import cmFreightPopup from './cm-freight-popup'
+export default {
+	name: 'goods',
+	components: {
+		cmFreightPopup
+	},
+	props: {
+		goodsData: {
+			type: Array
+		},
+		secondflag: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {
+			isFreight:false,
+			remark: [],
+			vipFlag: 0
+		}
+	},
+	created() {
+		this.initGetStotage()
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	watch: {
+		goodsData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.goodsData = el
+			},
+			deep: true
+		}
+	},
+	computed: {},
+	methods: {
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.isFreight = true
+		},
+		// 勾选冷链费操作
+		hanldChangeColdChina(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changeChina', supplier)
+		},
+		// 更换运费类型 1 不包邮  2 到付
+		changePostageFlag(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changePostage', supplier)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		changeHandle(index) {
+			//输入框的值被改变后
+			this.goodsData[index].note = this.remark[index]
+			this.$emit('handleGoodList', this.goodsData)
+		}
+	}
+}
+</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: 0 24rpx;
+			background: #ffffff;
+			margin-bottom: 24rpx;
+			&:last-child {
+				margin-bottom: 0;
+			}
+		}
+		.shoptitle {
+			display: flex;
+			align-items: center;
+			height: 80rpx;
+			line-height: 80rpx;
+			.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;
+			}
+			.floor-item-act {
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 12rpx 0;
+				margin-right: 12rpx;
+			}
+		}
+		.productlist {
+			width: 100%;
+			height: auto;
+		}
+		.goods-pros-t {
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: auto;
+			padding: 12rpx 0;
+			.pros-img {
+				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: 40rpx;
+			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: 40rpx;
+				line-height: 40rpx;
+				color: #999999;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 1;
+				overflow: hidden;
+			}
+			.productprice {
+				height: 54rpx;
+				width: 100%;
+				float: left;
+				.price {
+					line-height: 54rpx;
+					font-size: $font-size-28;
+					width: 48%;
+					color: #ff2a2a;
+					float: left;
+				}
+				.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;
+			}
+		}
+		.goods-pros-b {
+			width: 100%;
+			height: auto;
+			padding: 10rpx 0;
+			.sum-none {
+				width: 100%;
+				height: 48rpx;
+				line-height: 48rpx;
+				color: $text-color;
+				float: left;
+				text-align: right;
+				.money {
+					font-size: $font-size-26;
+					color: #999999;
+					text-decoration: line-through;
+				}
+				.money-sign {
+					font-size: $font-size-26;
+					color: #999999;
+					text-decoration: line-through;
+				}
+				.money-reduced {
+					margin-left: 10rpx;
+					font-size: $font-size-26;
+					color: $color-system;
+					.iconfont {
+						font-size: $font-size-34;
+					}
+				}
+			}
+			.sum {
+				width: 100%;
+				height: 48rpx;
+				font-size: $font-size-28;
+				line-height: 48rpx;
+				color: $text-color;
+				display: flex;
+				justify-content: flex-end;
+				.money {
+					color: #ff2a2a;
+					font-size: $font-size-28;
+				}
+			}
+		}	
+	}
+}
+.goods-pros-m {
+	height: 76rpx;
+	line-height: 76rpx;
+	font-size: $font-size-26;
+	color: $text-color;
+	margin-top: 12rpx;
+	.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: 580rpx;
+		height: 36rpx;
+		padding: 20rpx;
+		background: #f7f7f7;
+		border-radius: 10rpx;
+		input {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			font-size: $font-size-26;
+			line-height: 36rpx;
+			color: #333333;
+			min-height: 36rpx;
+		}
+	}
+}
+</style>

+ 454 - 0
pages/seller/order/components/cm-invice-popup.vue

@@ -0,0 +1,454 @@
+<template name="cm-parameter">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-title" @tap.stop="handleShowPopup">
+			<text class="text">发票信息:</text> <text class="invoice-text">{{ invoiceText }}</text>
+			<text class="iconfont icon-xiangyou"></text>
+		</view>
+		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="title">发票信息</view>
+				<view class="tui-popup-close" @click="hidePopup">
+					<text class="iconfont icon-iconfontguanbi"></text>
+				</view>
+				<view class="tui-popup-main">
+					<view class="popup-form">
+						<text
+							class="radio"
+							v-for="(invoice, index) in invoiceType"
+							:key="index"
+							@click="handleTnvoiceType(invoice.type, index)"
+							:class="invoiceTypeIndex === index ? 'active' : ''"
+						>
+							{{ invoice.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex === 1">
+						<view class="label">抬头类型:</view>
+						<text
+							class="radio"
+							v-for="(title, index) in titleType"
+							:key="index"
+							@click="handleTitleType(title.type, index)"
+							:class="titleIndex === index ? 'active' : ''"
+						>
+							{{ title.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex > 0">
+						<view class="label">发票抬头:</view>
+						<input
+							class="input"
+							type="text"
+							v-model="invoiceData.invoiceTitle"
+							placeholder="请输入发票抬头"
+							maxlength="50"
+							cursor-spacing="40"
+						/>
+					</view>
+					<template v-if="invoiceTypeIndex === 2 || titleIndex === 1">
+						<view class="popup-form">
+							<view class="label">单位税号:</view>
+							<input
+								class="input"
+								type="text"
+								v-model="invoiceData.corporationTaxNum"
+								placeholder="请输入单位税号"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册地址:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.registeredAddress"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册地址' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册电话:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.registeredPhone"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册电话' : '选填'"
+								maxlength="11"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">开户银行:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.openBank"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入开户银行' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">银行账号:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.bankAccountNo"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入银行账号' : '选填'"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+					</template>
+				</view>
+				<view class="tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-modal-flex">
+						<button
+							class="tui-modal-button"
+							:disabled="disabled"
+							@click="handleConfirm"
+						>
+							确定
+						</button>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'cm-prams-popup',
+	props: {},
+	data() {
+		return {
+			popupShow: false,
+			isIphoneX: this.$store.state.isIphoneX,
+			userId:0,
+			invoiceTypeIndex: 0,
+			titleIndex: 0,
+			invoiceType: [
+				{
+					name: '不开发票',
+					type: 0
+				},
+				{
+					name: '普通发票',
+					type: 1
+				},
+				{
+					name: '增值税专用发票',
+					type: 2
+				}
+			],
+			titleType: [
+				{
+					name: '个人',
+					type: 0
+				},
+				{
+					name: '单位',
+					type: 1
+				}
+			],
+			invoiceText: '不开发票',
+			invoiceData: {
+				type: 0, 		//发票类型 0 不开发票 1 普通发票 2 增值税发票
+				headingType: 0, 		//抬头类型 0 个人 1 单位
+				invoiceTitle: '', 		//发票抬头
+				corporationTaxNum: '',  //单位税号
+				registeredAddress: '',  //单位地址
+				registeredPhone: '',    //注册电话
+				openBank: '', 		    //开户银行
+				bankAccountNo: ''       //银行账号
+			}
+		}
+	},
+	created() {
+		
+	},
+	computed: {
+		
+	},
+	methods: {
+		// 切换发票类型
+		handleTnvoiceType(type, index) {
+			this.invoiceTypeIndex = index
+			this.invoiceData.type = type
+			if(this.invoiceTypeIndex === 1){
+				this.titleIndex = 0
+				this.invoiceData.headingType = 0
+			}
+		},
+		// 切换抬头类型
+		handleTitleType(type, index) {
+			this.titleIndex = index
+			this.invoiceData.headingType = type
+		},
+		// 显示发票弹窗 查询发票信息
+		handleShowPopup(){
+			this.getUseFindInvoice()
+		},
+		// 确认保存发票
+		handleConfirm(){
+			if(this.invoiceTypeIndex === 0){
+				this.invoiceData = {...this.invoiceData , ...{ type : 0 }}
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.hidePopup()
+			}else{
+				this.checkedInput()
+			}
+		},
+		// 校验必填项
+		checkedInput(){
+			/**
+			 *  普通发票 个人 仅校验发票抬头
+			 * 	普通发票 单位 校验发票抬头 校验单位税号
+			 *  增值税发票 校验全部
+			 * */ 
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 0){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 1){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 2){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredAddress) {
+					this.$util.msg('请输入注册地址', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredPhone) {
+					this.$util.msg('请输入注册电话', 2000)
+					return
+				}
+				if (!this.invoiceData.openBank) {
+					this.$util.msg('请输入开户银行', 2000)
+					return
+				}
+				if (!this.invoiceData.bankAccountNo) {
+					this.$util.msg('请输入银行账号', 2000)
+					return
+				}
+			}
+			this.updateInvoiceFn()
+		},
+		//获取发票信息
+		async getUseFindInvoice() {
+			try {
+				this.popupShow = true
+				const resolve = await this.$api.getComStorage('orderUserInfo')
+				this.userId = resolve.userId
+				const res = await this.OrderService.GetFindInvoice({ userId: resolve.userId })
+				this.invoiceData = {...this.invoiceData, ...res.data}
+				console.log('invoiceData',this.invoiceData)
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		//保存发票信息
+		async updateInvoiceFn() {
+			try {
+				const resolve = await this.$api.getComStorage('orderUserInfo')
+				const res = await this.OrderService.UpdateInvoice({ ...this.invoiceData,...{userId: resolve.userId }})
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.$emit('handleChoiceaInvoice', this.invoiceData)
+				this.popupShow = false
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data){
+			const map = {
+				0:'个人',
+				1:'单位'
+			}
+			switch (data.type){
+				case 0:
+					return `不开发票`
+					break;
+				case 1:
+					return `普票-${map[data.headingType]}(${this.nameFilters(data.invoiceTitle)})`
+					break;
+				case 2:
+					return `专票(${this.nameFilters(data.invoiceTitle)})`
+					break;
+			}
+		},
+		nameFilters(value) {
+			if(value && value.length>10){
+				return value.substring(0,10)+"..." 
+			}else{
+				return value
+			}
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.invoice-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.invoice-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		border-bottom: 1px solid #ebebeb;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+			font-weight: bold;
+		}
+		.invoice-text {
+			font-size: $font-size-28;
+			color: #F85050;
+			line-height: 90rpx;
+			display: inline-block;
+			float: right;
+			box-sizing: border-box;
+			padding-right: 40rpx;
+		}
+		.iconfont {
+			width: 50rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			color: #999999;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 0;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 24rpx 0 24rpx;
+	.title {
+		font-size: $font-size-34;
+		color: $text-color;
+		line-height: 88rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 88rpx;
+		font-weight: bold;
+	}
+	.tui-popup-close {
+		width: 90rpx;
+		height: 90rpx;
+		position: absolute;
+		right: 0;
+		top: 24rpx;
+		line-height: 90rpx;
+		text-align: center;
+		color: #b2b2b2;
+		.icon-iconfontguanbi {
+			font-size: $font-size-40;
+		}
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		min-height: 400rpx;
+		.popup-form {
+			width: 100%;
+			height: 112rpx;
+			box-sizing: border-box;
+			padding: 23rpx 0;
+			border-bottom: 1px solid #e1e1e1;
+			&.none{
+				border-bottom: none;
+			}
+			.label {
+				width: 140rpx;
+				float: left;
+				font-size: $font-size-28;
+				line-height: 64rpx;
+				color: #666666;
+			}
+			.radio {
+				height: 64rpx;
+				padding: 0 28rpx;
+				line-height: 64rpx;
+				color: #666666;
+				text-align: center;
+				border-radius: 32rpx;
+				margin: 0 8rpx;
+				display: inline-block;
+				background: #f5f5f5;
+				font-size: $font-size-28;
+				&.active {
+					background: #fff4e6;
+					color: #f3b574;
+				}
+			}
+			.input {
+				line-height: 64rpx;
+				height: 64rpx;
+				color: #333333;
+				font-size: $font-size-28;
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+	}
+	.tui-modal-flex {
+		width: 100%;
+		height: 84rpx;
+		margin-top: 40rpx;
+		display: flex;
+		.tui-modal-button {
+			flex: 1;
+			line-height: 84rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 42rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			background: $btn-confirm;
+			color: #ffffff;
+			&.disabled {
+				background: #e1e1e1;
+				border-radius: 42rpx;
+			}
+		}
+	}
+}
+</style>

+ 237 - 0
pages/seller/order/components/cm-list-button.vue

@@ -0,0 +1,237 @@
+<template name="button">
+	<view class="button-template">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<view
+				class="btn btn-cancel"
+				v-if="secondHandOrderFlag != 1 && !rechargeGoods"
+				@click.stop="btnConfirm('again', shopOrderId)"
+				>再来一单</view
+			>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel', shopOrderId)"
+				>取消订单</view
+			>
+			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',orderId)">删除订单</view> -->
+			<template>
+				<view class="btn btn-cancel" v-if="btnState.isPay" @click.stop="onShareCode(shopOrderId, userId, 1)"
+					>分享支付</view
+				>
+				<view class="btn btn-cancel" v-else @click.stop="onShareCode(shopOrderId, userId, 2)">分享订单</view>
+			</template>
+			<view
+				class="btn btn-query"
+				v-if="btnState.isQuery && order.secondHandOrderFlag != 1"
+				@click.stop="btnConfirm('query', shopOrderId)"
+				>查看物流</view
+			>
+			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', shopOrderId)"
+				>确认订单</view
+			>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'button',
+	props: {
+		status: {
+			type: Number
+		},
+		order: {
+			type: Object
+		},
+		shopOrderId: {
+			type: Number
+		},
+		userId: {
+			type: Number
+		},
+		rechargeGoods: {
+			type: Boolean
+		},
+		serviceProviderId: {
+			type: Number
+		},
+		secondHandOrderFlag: {
+			type: String
+		}
+	},
+	data() {
+		return {
+			isShare: true,
+			shareCode: '',
+			btnState: this.initStatus(),
+			mapStateArr: [
+				{ label: 'isQuery', val: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], 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 = {
+				isDelete: false,
+				isCancel: false,
+				isConfirm: false,
+				isShare: true
+			}
+			return btnState
+		},
+		getShareCode(code) {
+			this.shareCode = code
+		},
+		onShareCode(shopOrderId, userId, type) {
+			if (this.order.onlinePayFlag == 1) {
+				this.$util.modal(
+					'提示',
+					'本订单不能进行线上支付,请让客户选择线下转账方式付款',
+					'继续分享',
+					'知道了',
+					true,
+					() => {
+						this.$parent.isShareModal = true
+						;(this.$parent.handleShopOrderId = shopOrderId), (this.$parent.btnClubUserId = userId)
+						this.$parent.isShareType = type
+						this.$emit('shareConfirm')
+					}
+				)
+			} else {
+				this.$parent.isShareModal = true
+				;(this.$parent.handleShopOrderId = shopOrderId), (this.$parent.btnClubUserId = userId)
+				this.$parent.isShareType = type
+				this.$emit('shareConfirm')
+			}
+		},
+		btnConfirm(type, shopOrderId) {
+			let data = {
+				type: type,
+				shopOrderId: shopOrderId
+			}
+			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;
+		margin: 20rpx 0;
+		.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: 160rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 34rpx;
+			// float: right;
+			display: inline-block;
+		}
+		.btn-color {
+			background: $btn-confirm;
+			// margin: 22rpx 0 22rpx 22rpx;
+		}
+		.btn-cancel {
+			border: 2rpx solid #999999;
+			background: #ffffff;
+			color: #666666;
+			// float: left;
+			margin-right: 15rpx;
+		}
+		.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: linear-gradient(315deg, rgba(231, 0, 0, 1) 0%, rgba(255, 104, 1, 1) 100%);
+		}
+		.btn-share {
+			background: linear-gradient(315deg, rgba(0, 212, 150, 1) 0%, rgba(126, 243, 174, 1) 100%);
+			margin-right: 0;
+			position: relative;
+			.tips {
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background: #ff5b00;
+				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: #ff5b00;
+					position: absolute;
+					bottom: -8rpx;
+					left: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
+				}
+			}
+		}
+	}
+}
+</style>

+ 1 - 0
components/cm-module/modelAlert/order-alert.vue → pages/seller/order/components/cm-orderpay-popup.vue

@@ -54,6 +54,7 @@
 		methods:{
 			infoData(el){
 				this.dataInfo = el
+				console.log('payModelData',this.dataInfo)
 			},
 			hideConfirm(){
 				this.$parent.isPayModel = false

+ 10 - 2
pages/seller/order/components/sellerRegulations.vue → pages/seller/order/components/cm-regula-popup.vue

@@ -1,7 +1,7 @@
 <template name="regulations">
 	<view class="regulations-template">
 		<view class="regulations-title" @tap.stop="hanldOperationConfim">
-			<text class="text">售后条款</text>
+			<text class="text">售后条款:</text>
 			<view class="freight-right">
 				<text class="text-l">{{regulaText}}</text>
 				<text class="iconfont icon-xiayibu"></text>
@@ -106,6 +106,7 @@
 			float: left;
 			font-weight: bold;
 			border-bottom: 1rpx solid #EBEBEB;
+			position: relative;
 			.freight-left{
 				float: left;
 				.icon-yunfeishuoming{
@@ -125,7 +126,8 @@
 				float: right;
 				color: #2A81FF;
 				.text-l{
-					margin-right: 20rpx;
+					margin-right: 40rpx;
+					font-weight: normal;
 				}
 				.text{
 					line-height: 88rpx;
@@ -134,8 +136,14 @@
 					font-weight: normal;
 				}
 				.icon-xiayibu{
+					width: 50rpx;
+					height: 88rpx;
 					line-height: 88rpx;
 					color: #999999;
+					display: block;
+					position: absolute;
+					right: 0;
+					top: 0;
 					font-weight: normal;
 				}
 			}

+ 12 - 10
pages/seller/order/components/sellerShareAlert.vue → pages/seller/order/components/cm-share-popup.vue

@@ -27,7 +27,7 @@
 	export default{
 		name:'sharealert',
 		props:{
-			orderId:{
+			shopOrderId:{
 				type:Number
 			},
 			shareType:{
@@ -40,17 +40,19 @@
 			}
 		},
 		created() {
-			this.getShareCode(this.orderId)
+			this.getShareCode(this.shopOrderId)
 		},
 		methods:{
-			getShareCode(res){
-				this.OrderService.QueryOrderShareCode({orderId:res}).then(response =>{
-					this.shareCode = response.data
-					this.$parent.shareCode = this.shareCode
-				}).catch(error =>{
-					this.$parent.isShareModal = false
-					this.$util.modal('提示',error.msg,'确定','',false,() =>{})
-				})
+			//获取订单分享码
+			async getShareCode(shopOrderId){
+				try{
+					const res = await this.OrderService.QueryOrderShareCode({shopOrderId:shopOrderId})
+					this.shareCode = res.data
+					this.$parent.shareCode = this.shareCode;
+				}catch(error){
+					this.$parent.isShareModal = false;
+					this.$util.msg(error.msg, 2000)
+				}
 			},
 			hideConfirm(){
 				this.$parent.isShareModal = false

+ 164 - 0
pages/seller/order/components/details/cm-address-temp.vue

@@ -0,0 +1,164 @@
+<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 class="a-bg"  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
+	</view>
+</template>
+
+<script>
+	import { mapState, mapMutations } from 'vuex'	
+	export default{
+		name:'address',
+		props:{
+			addressData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				initData:'',
+				StaticUrl: this.$Static,
+			}
+		},
+		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;
+        }
+		image{
+			float: left;
+			width: 100%;
+			height: 12rpx;
+		}
+	}
+	.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: 40rpx;
+			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-xiayibu {
+			font-size: 32rpx;
+			color: $text-color;
+			margin-right: 30rpx;
+		}
+	}
+</style>

+ 524 - 0
pages/seller/order/components/details/cm-goods-temp.vue

@@ -0,0 +1,524 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list clearfix">
+			<view v-for="(item, index) in dataList" :key="index" class="goods-item clearfix">
+				<view class="shoptitle">
+					<view v-if="item.shopPromotion" class="floor-item-act">
+						<view class="floor-tags" @click.stop="clickPopupShow(item.shopPromotion)">{{
+							item.shopPromotion.name
+						}}</view>
+					</view>
+					<view class="title-text" v-if="orderInfo.secondHandOrderFlag == 1"
+						>{{ item.shopName }}
+						<label class="paymenttext" v-if="orderInfo.affirmPaymentFlag == 1">已确认打款供应商</label>
+					</view>
+					<view class="title-text" v-else @click="goShophome(item)">
+						{{ item.shopName }} <label class="iconfont icon-jinrudianpu"></label>
+					</view>
+				</view>
+				<view class="productlist">
+					<view class="goods-pros-t " @click="details(item)">
+						<view class="pros-left">
+							<view class="pros-img">
+								<image :src="item.image" alt="" />
+								<text class="tips" v-if="item.giftType == 2 || item.giftType == 1">赠品</text>
+							</view>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ item.name }}</view>
+							<view class="productspec product-view" v-if="item.productCategory != 2"
+								>规格:{{ item.productUnit ? item.productUnit : '' }}</view
+							>
+							<view class="product-view">
+								<view
+									class="view-num red"
+									:class="
+										item.svipPriceFlag == 1 || PromotionsFormat(item.productPromotion) ? 'none' : ''
+									"
+									>¥{{ item.price | NumFormat }}</view
+								>
+								<view class="view-num right">x {{ item.num }}</view>
+							</view>
+							<view class="floor-item-act">
+								<template v-if="item.productPromotion">
+									<view
+										v-if="PromotionsFormat(item.productPromotion)"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+									>
+										{{ item.productPromotion.name }}
+										<text v-if="item.productPromotion != null && item.productPromotion.type != 3">
+											:¥{{
+												item.productPromotion == null
+													? '0.00'
+													: item.productPromotion.touchPrice | NumFormat
+											}}
+										</text>
+									</view>
+									<view
+										v-else-if="item.productPromotion.type != 3"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+										>{{ item.productPromotion.name }}</view
+									>
+								</template>
+								<template v-if="item.svipPriceFlag == 1">
+									<view class="svip-tags">
+										<view class="tags">SVIP</view>
+										<view class="price">{{ item.svipPriceTag }}</view>
+									</view>
+								</template>
+							</view>
+						</view>
+					</view>
+					<view class=" product-info clearfix"> 
+						<view class="product-view" v-if="item.returnedNum > 0 || item.actualCancelNum > 0">
+							<view class="view-num">已退货/已取消:<text class="text">{{ item.returnedNum }}/{{ item.actualCancelNum }}</text></view>
+						</view>
+<!-- 						<view class="product-view" v-if="item.svipPriceType != 1">
+							<view class="view-num">折扣:<text class="text">{{ item.discount == null ? '0' : item.discount }}%</text></view>
+						</view> -->
+						<view class="product-view">
+							<view class="view-num">税率:<text class="text">{{ item.taxRate }}%</text></view>
+						</view>
+						<!-- <view class="product-view">
+							<view class="view-num">折后单价:<text class="text">¥{{ item.discountPrice | NumFormat }}</text></view>
+						</view> -->
+						<view class="product-view allPrice">
+							<view class="view-num">合计:<text class="text">¥{{ item.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>
+			<view class="goods-item">
+				<view class="goods-pros-b clearfix">
+					<view class="pros-price-view">
+						<view class="price-view-le">商品总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">运费:</view>
+						<view class="price-view-ri">{{ orderInfo.postageInfo }}</view>
+					</view>
+					<view class="pros-price-view"v-if="orderInfo.eachDiscount > 0">>
+						<view class="price-view-le">优惠:</view>
+						<view class="price-view-ri">¥{{ orderInfo.eachDiscount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">订单总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">已付金额:</view>
+						<view class="price-view-ri">
+							¥{{ orderInfo.receiptAmount | NumFormat }}
+							<text v-if="orderInfo.accountAmount > 0">(余额抵扣:¥{{ orderInfo.accountAmount | NumFormat }})</text>
+						</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">待付金额:</view>
+						<view class="price-view-ri red">¥{{ orderInfo.obligation | NumFormat }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'goods',
+	props: {
+		
+		list: {
+			type: Array
+		},
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			dataList: [], 
+			isHandelShow:false,
+			vipFlag: 0,
+		}
+	},
+	created() {
+		this.initGetStotage(this.list)
+	},
+	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(list) {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.dataList = list
+		},
+		handelShowDetails(){
+			this.isHandelShow = !this.isHandelShow
+		},
+		goShophome(shop) {
+			if(shop.shopType === 2){
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
+		},
+		details(item) {
+			if (pros.validFlag == 9) {
+				return
+			} else {
+				this.$api.navigateTo(`/pages/goods/product?id=${item.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;
+			border-bottom: 1px solid #E1E1E1;
+			float: left;
+			&:last-child {
+				border-bottom: none;
+			}
+		}
+		.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%;
+			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>

+ 151 - 0
pages/seller/order/components/details/cm-invice-temp.vue

@@ -0,0 +1,151 @@
+<template name="invoice">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-content">
+			<view class="invoice-title">发票信息</view>
+			<view class="invoice-empty">
+				<text>{{ invoiceText }}</text>
+			</view>
+			<view class="invoice-text" v-if="orderInvoice.type > 0">
+				<view class="table">
+					<text class="label-name">发票抬头:</text>
+					<text class="label-text">{{ orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : '无' }}</text>
+				</view>
+				<template v-if="orderInvoice.type === 2 || orderInvoice.headingType === 1">
+					<view class="table">
+						<text class="label-name">单位税号:</text>
+						<text class="label-text">{{
+							orderInvoice.corporationTaxNum ? orderInvoice.corporationTaxNum : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册地址:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredAddress ? orderInvoice.registeredAddress : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册电话:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredPhone ? orderInvoice.registeredPhone : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">开户银行:</text>
+						<text class="label-text">{{ orderInvoice.openBank ? orderInvoice.openBank : '无' }}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">银行账号:</text>
+						<text class="label-text">{{ bankAccountNo ? bankAccountNo : '无' }}</text>
+					</view>
+				</template>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'invoice',
+	props: {
+		orderInvoice: {
+			type: Object
+		}
+	},
+	filters: {},
+	data() {
+		return {
+			invoiceText: '不开发票',
+			title: '发票信息',
+			isOpen: false,
+			bankAccountNo: ''
+		}
+	},
+	created() {
+		this.initData(this.orderInvoice)
+	},
+	computed: {},
+	methods: {
+		initData(data) {
+			if (data) {
+				this.bankAccountNo = this.$reg.bankRegex(data.bankAccountNo)
+				this.invoiceText = this.setInvoiceText(data)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data) {
+			const map = {
+				0: '个人',
+				1: '单位'
+			}
+			switch (data.type) {
+				case 0:
+					return `不开发票`
+					break
+				case 1:
+					return `普票-${map[data.headingType]}`
+					break
+				case 2:
+					return `专票`
+					break
+			}
+		},
+		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: 64rpx;
+		.txt {
+			font-size: $font-size-24;
+			color: #999999;
+		}
+	}
+	.invoice-text {
+		width: 100%;
+		height: auto;
+		.table {
+			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;
+				color: #999999;
+			}
+			.label-text {
+				color: #333333;
+			}
+		}
+	}
+}
+</style>

+ 246 - 0
pages/seller/order/components/details/cm-order-temp.vue

@@ -0,0 +1,246 @@
+<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.shopOrderNo ? orderData.shopOrderNo : '' }}</label>
+					</view>
+				</view>
+			</view>
+			<view class="information-view same">
+				<view class="view-man">
+					赠品总数:<label class="label">{{
+						orderData.presentNum
+					}}</label>
+				</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num time">
+					下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</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>
+	</view>
+</template>
+
+<script>
+const thorui = require('@/components/clipboard/clipboard.thorui.js')
+export default {
+	name: 'orderInfo',
+	props: {
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			orderData: '',
+			openShowflag: false,
+		}
+	},
+	created() {
+		this.initData(this.orderInfo)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value)
+			return number.toFixed(2)
+		}
+	},
+	computed: {},
+	watch: {
+		orderInfo: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	methods: {
+		openShow() {
+			this.openShowflag = true
+			this.infoflag = false
+		},
+		initData(data) {
+			this.orderData = data
+		},
+		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>

+ 1 - 0
components/cm-module/orderDetails/paymentRecord.vue → pages/seller/order/components/details/cm-payment-temp.vue

@@ -68,6 +68,7 @@
 					14: '支付宝',
 					15: '微信支付',
 					16: '余额抵扣',
+					31: '线下支付凭证'
 				}
 				if(record.payType === 28 || record.payType === 29 ){
 					return record.quickPayStr

+ 0 - 0
components/cm-module/orderDetails/activipopu.vue → pages/seller/order/components/details/cm-promote-popup.vue


+ 0 - 0
components/cm-module/orderDetails/refundRecord.vue → pages/seller/order/components/details/cm-refund-temp.vue


+ 150 - 0
pages/seller/order/components/details/cm-voucher-temp.vue

@@ -0,0 +1,150 @@
+<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 voucherList">
+				<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" v-if="item.remarks">
+					备注:{{ item.remarks }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"refund",
+		props:{
+			list:{
+				type:Array
+			},
+		},
+		data() {
+			return{
+				isEmpty:true,
+				voucherList:[]
+			}
+		},
+		created(){
+			this.initData(this.list)
+		},
+		computed: {
+		
+		},
+		methods:{
+			initData(data) {
+				this.voucherList = data
+			},
+			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;
+			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>

+ 0 - 256
pages/seller/order/components/sellerDetaileButton.vue

@@ -1,256 +0,0 @@
-<template name="button">
-	<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
-		<!-- 底部按钮 -->
-		<view class="button-content">
-			<view class="btn btn-cancel"  v-if="secondHandOrderFlag!=1 && !rechargeGoods"  @click.stop="btnConfirm('again',order)">再来一单</view>
-			<view class="btn btn-cancel" v-if="btnState.isCancel"  @click.stop="btnConfirm('cancel',order)">取消订单</view>
-			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete"  @click.stop="btnConfirm('delete',order)">删除订单</view> -->
-			<template>
-				<view class="btn btn-share" v-if="btnState.isPay" @click.stop="onShareCode(1)">
-					<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
-					分享支付
-				</view>	
-				<view class="btn btn-share" v-else @click.stop="onShareCode(2)">
-					<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
-					分享订单
-				</view>	
-			</template>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',order)">确认订单</view>
-			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',order)">查看物流</view>
-			<view class="btn btn-color" v-if="btnState.isPay && ableUserMoney > 0 && !rechargeGoods" @click.stop="btnConfirm('balance',order)">余额抵扣</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'button',
-		props:{
-			status:{
-				type:Number
-			},
-			order: {
-				type:Object
-			},
-			ableUserMoney:{
-				type:Number
-			},
-			rechargeGoods:{
-				type:Boolean
-			},
-			shareCode:{
-				type:String
-			},
-			serviceProviderId:{
-				type:Number
-			},
-			secondHandOrderFlag:{
-				type:String
-			}
-		},
-		watch:{
-			status:{
-				handler:function(val){
-					this.initData(val)
-				},
-				deep:true//对象内部的属性监听,也叫深度监听
-			}
-		},
-		data() {
-			return{
-				btnState:this.initStatus(),
-				isIphoneX:this.$store.state.isIphoneX,
-				invoiceStatus:false,
-				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],status: true},
-					{label:'isConfirm',val:[0],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],status: true},
-				]
-			}
-		},
-		created(){
-			console.log(this.rechargeGoods)
-			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
-							//console.log(this.btnState[el.label]);
-						}
-					})
-				})
-			},
-			initStatus(){
-				let btnState= {
-						isQuery: false,
-						isDelete: false,
-						isCancel: false,
-						isConfirm: false,
-						isPay: false,
-					}
-				return 	btnState
-			},
-			getShareCode(code){
-				this.shareCode = code
-			},
-			onShareCode(type){
-				if(this.order.onlinePayFlag == 1){
-					this.$util.modal('提示','本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
-						this.$parent.isShareModal = true
-					})	
-				}else{
-					this.$parent.isShareModal = true
-					this.$parent.isShareType = type
-				}
-			},
-			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;
-		.button-content{
-			padding:0 24rpx;
-			height: auto;
-			float: right;
-			position: relative;
-			margin: 20rpx 0;
-			.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: 160rpx;
-				height:  64rpx;
-				// margin:22rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius: 34rpx;
-				float: right;
-			}
-			.btn-color{
-				background: #f94b4b;
-				// margin: 20rpx 0 20rpx 20rpx;
-				.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: 24rpx;
-					top: -45rpx;
-					&: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);
-					}
-				}
-			}
-			.btn-cancel{
-				background:#FFFFFF;
-				color: #666666;
-				float: left;
-				// margin: 22rpx 0;
-				margin-right: 15rpx;
-				border: 2rpx solid #999999;
-			}
-			.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:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
-			}
-			.btn-share{
-				background:#FFFFFF;
-				color: #666666;
-				float: left;
-				// margin: 22rpx 0;
-				margin-right: 15rpx;
-				border: 2rpx solid #999999;
-				position: relative;
-				.tips{
-					width: 160rpx;
-					height: 34rpx;
-					padding: 10rpx 10rpx;
-					background:#FF5B00;
-					border-radius: 8rpx;
-					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 0;
-					top: -69rpx;
-					&:before{
-						content: "";
-						width: 25rpx;
-						height: 25rpx;
-						background:#FF5B00;
-						position: absolute;
-						bottom: -8rpx;
-						left: 30rpx;
-						z-index: -1;
-						transform:rotate(45deg);
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 524
pages/seller/order/components/sellerFreight.vue

@@ -1,524 +0,0 @@
-<template name="freight">
-	<view class="freight-template">
-		 <!-- 运费信息 -->
-		<view class="invoice-freight" @tap.stop="hanldOperationConfim">
-			<view class="freight-left">运费</view>
-			<view class="freight-right">
-				<text class="text-l">{{freightText}}</text>
-				<text class="text" v-if="hanldFreightData.postageFlag == 1">¥{{orderPriceToFixed(freightMoney)}}</text>
-				<text class="iconfont icon-xiayibu"></text>
-			</view>
-		</view>
-		<!--底部选择模态层弹窗组件 -->
-		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @click="freightConfim">
-			<!-- 遮罩层 -->
-			<view class="mask"></view>
-			<view class="layer" @tap.stop="discard">
-				<view class="content">
-					<view class="freight-ltitle">选择运费</view>
-					<view class="freight-radio">
-						<radio-group class="row-group" @change="radioChange">
-							<label class="row-input" v-for="(item, index) in freightList" :key="item.value">
-								<radio class="row-radio" :value="item.value" :checked="index === current" color="#FF5B00"/>
-								<view class="row-text">{{item.name}}</view>
-							</label>
-						</radio-group>
-					</view>
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == 1">
-						<view class="group-from">
-							<input class="form-input" type="number" v-model="hanldFreight" @input="setFreightMoney" placeholder="请填写运费" maxlength="20">
-						</view>
-					</view>	
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == 0">
-						<text class="text">{{freightText}}</text>
-					</view>
-					<view class="freight-group" v-if="hanldFreightData.postageFlag == -1">
-						<text class="text">{{freightText}}</text>
-					</view>
-				</view>
-				<view class="btn">
-					<view class="button add" @click="freightConfim">完成</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'freight',
-		props:{
-			freightDatas:{
-				type:Object
-			}
-		},
-		data() {
-			return{
-				freightText:'不包邮',
-				freightMoney:0,
-				specClass: '',//规格弹窗css类,控制开关动画
-				freightList:[
-					{value:1,name:'不包邮'},
-					{value:0,name:'包邮'},
-					{value:-1,name:'到付'},
-				],
-				current:0,
-				hanldFreight:0,
-				hanldFreightData:{
-					postageFlag:1,
-					postage:0
-				}
-			}
-		},
-		created(){
-			this.infoData(this.freightDatas)
-		},
-		watch: {
-			freightDatas: {
-				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
-					this.freightDatas = el
-					this.infoData(this.freightDatas)
-				},
-				deep: true
-			}
-		},
-		methods:{
-			infoData(data){//初始化运费
-				console.log('初始化运费',data)
-				switch(data.postageFlag){
-					case 1:
-						this.current = 0
-						this.hanldFreightData.postageFlag = data.postageFlag
-						if(data.freight == 0){
-							this.hanldFreight = ''
-						}else{
-							this.hanldFreight = data.postage
-						}
-						this.hanldFreightData.postage = data.postage
-						this.freightMoney = this.hanldFreight
-						this.freightText = ''
-						break
-					case 0:
-						this.current = 1
-						this.hanldFreightData.postageFlag = data.postageFlag
-						this.freightText = '包邮'
-						break
-					case -1:
-						this.current = 2
-						this.hanldFreightData.postageFlag = data.postageFlag
-						this.freightText = '到付'
-						break
-				}
-			},
-			freightConfim(){//提交完成运费选择
-				switch(this.hanldFreightData.postageFlag){
-					case 1:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break
-					case 0:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break
-					case -1:
-						this.choiceaFreightFirst(this.hanldFreightData.postageFlag)
-						break	
-				}		
-			},
-			choiceaFreightFirst(index){//校验运费形式及运费价
-				if(index == 1){
-					if(this.hanldFreight == 0 || this.hanldFreight== ''){
-						this.$util.msg('请填写运费',2000)
-						return
-					}
-					this.hanldFreightData.postage = this.hanldFreight
-					this.$emit('handleChoiceaFreight',this.hanldFreightData)
-				}else{
-					this.hanldFreightData.postage = 0
-					this.$emit('handleChoiceaFreight',this.hanldFreightData)
-				}
-				this.hideSpec()
-			},
-			showTip(){//显示运费弹窗
-				this.$emit('showFreightAlert')
-			},
-			hideSpec() {//关闭编辑运费弹窗
-				this.specClass = 'hide'
-				setTimeout(() => {
-					this.specClass = 'none'
-				}, 200)
-			},
-			hanldOperationConfim(data){//显示编辑运费弹窗
-				if(this.$parent.rebatecheck){
-					this.$util.msg('返佣订单不能编辑运费',2000)
-				}else{
-					this.specClass = 'show'
-					this.freightMoney = this.hanldFreight
-				}
-			},
-			radioChange(e) {//运费选择切换
-				this.hanldFreightData.postageFlag = parseInt(e.target.value)
-				switch(this.hanldFreightData.postageFlag){
-					case 1:
-						this.freightText = '不包邮'
-						break
-					case 0:
-						this.freightText = '包邮'
-						break
-					case -1:
-						this.freightText = '到付'
-						break	
-				}		
-				for (let i = 0; i < this.freightList.length; i++) {
-					if (this.freightList[i].value === this.postageFlag) {
-						this.current = i
-						break
-					}
-				}
-			},
-			setFreightMoney(e){//处理邮费显示
-				if(e.detail.value == ''){
-					this.freightMoney=0
-					this.hanldFreightData.postage=0
-				}else{
-					this.hanldFreightData.postage = e.detail.value
-					this.freightMoney = this.orderPriceToFixed(e.detail.value)
-				}
-			},
-			orderPriceToFixed (num){
-				let price =''
-				price = parseInt(num).toFixed(2)
-				return price
-			},
-			discard(){
-				//丢弃
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.freight-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.invoice-freight{
-			width: 702rpx;
-			padding: 0 24rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			font-size: $font-size-28;
-			color: $text-color;
-			background: #FFFFFF;
-			float: left;
-			font-weight: bold;
-			.freight-left{
-				float: left;
-				.icon-yunfeishuoming{
-					height: 100%;
-					padding:15rpx;
-					color: $color-system;
-					font-weight: normal;
-				}
-			}
-			.freight-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					margin-right: 20rpx;
-				}
-				.text{
-					line-height: 88rpx;
-					color: #ff0000;
-					margin:0 20rpx;
-					font-weight: normal;
-				}
-				.icon-xiayibu{
-					line-height: 88rpx;
-					color: #999999;
-					font-weight: normal;
-				}
-			}
-		}
-	}
-	.freight-ltitle{
-		width: 100%;
-		line-height: 60rpx;
-		height: 60rpx;
-		font-size: $font-size-28;
-		color: #333333;
-	}
-	.freight-radio{
-		width: 100%;
-		height: 88rpx;
-		line-height: 88rpx;
-		display: flex;
-		border-bottom: 1px solid #EBEBEB;
-		.row-group{
-			flex:1;
-			display: flex;
-		}
-		.row-input{
-			flex: 1;
-			height: 88rpx;
-			line-height: 88rpx;
-		}
-		.row-radio{
-			float: left;
-			transform: scale(0.6);
-		}
-		.row-text{
-			font-size: $font-size-24;
-			color: $text-color;
-		}
-	}
-	.freight-group{
-		width: 100%;
-		height: 88rpx;
-		display: flex;
-		border-bottom: 1px solid #FFFFFF;
-		flex-direction: row;
-		.text{
-			display: block;
-			flex: 1;
-			line-height: 88rpx;
-			font-size: $font-size-24;
-			color: #999999;
-			text-align: left;
-			padding-left: 10rpx;
-		}
-		.group-from{
-			flex: 1;
-			height: 40rpx;
-			padding: 20rpx;
-			line-height: 40rpx;
-			align-items: flex-start;
-			font-size: $font-size-24;
-			color: $text-color;
-			background: #F7F7F7;
-			border-radius: 14rpx;
-			margin-bottom: 20rpx;
-			margin-top: 10rpx;
-			.form-input{
-				height: 40rpx;
-				line-height: 40rpx;
-				flex-grow: 1;
-			}
-		}
-	}	
-	/* 加入购物模态层*/
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
-		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
-		}
-		100% {
-			opacity: 0;
-		}
-	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(0);
-		}
-		100% {
-			transform: translateY(-100%);
-		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(-100%);
-		}
-		100% {
-			transform: translateY(0);
-		}
-	}
-	@keyframes showAmnation {
-		0% {
-			top: -12rpx;
-			opacity: 0;
-		}
-		50% {
-			top: -60rpx;
-			opacity: 1;
-		}
-		100% {
-			top: -100rpx;
-			opacity: 0;
-		}
-	}
-	@keyframes hideAmnation {
-		0% {
-			top: -100rpx;
-			opacity: 0;
-		}
-		100% {
-			top: -12rpx;
-			opacity: 0;
-		}
-	}
-	.popup {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
-			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: fixed;
-			z-index: 22;
-			bottom: -460rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 36rpx 24rpx;
-			height: 400rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
-				width: 100%;
-			}
-			.btn {
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				.button {
-					width: 702rpx;
-					height: 88rpx;
-					color: #fff;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					font-size: $font-size-28;
-					border-radius: 44rpx;
-					background: $btn-confirm;
-				}
-			}
-		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
-		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
-		}
-		&.none {
-			display: none;
-		}
-		&.service {
-			.row {
-				margin: 30upx 0;
-				.title {
-					font-size: 30upx;
-					margin: 10upx 0;
-				}
-				.description {
-					font-size: 28upx;
-					color: #999;
-				}
-			}
-		}
-		.layer-smimg{
-			width: 114rpx;
-			height: 114rpx;
-			float: left;
-			border-radius: 10rpx;
-			margin-right: 24rpx;
-			image{
-				width: 114rpx;
-				height: 114rpx;	
-				border-radius: 10rpx;
-			}
-		}
-		.layer-nunbox{
-			justify-content: space-between;
-			align-items: center;
-			width: 536rpx;
-			height: 88rpx;
-			padding: 13rpx 0 0 0;
-			float: left;
-			.layer-nunbox-t{
-				width: 100%;
-				height:44rpx;
-				position:relative;
-				display: flex;
-				.layer-nunbox-text{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-				}
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-32;
-						padding:0 18rpx;
-						font-size: $text-color;
-					}
-					.btn-input{
-						width: 62rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-28;
-					}
-				}
-				.product-step{
-					position: absolute;
-					left: 45rpx;
-					bottom: 0;
-					height: 44rpx;
-					background: #FFFFFF;
-				}
-			}
-			.layer-nunbox-b{
-				width: 100%;
-				height:44rpx;
-				margin-top: 13rpx;
-			}
-			.text{
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				.p{
-					color: #FF2A2A;
-				}
-				.p:first-child{
-					margin-left: 30rpx;
-				}
-				.p.sm{
-					font-size: $font-size-24;
-				}
-			}
-		}
-	}	
-</style>

+ 0 - 695
pages/seller/order/components/sellerInvoice.vue

@@ -1,695 +0,0 @@
-<template name="invoice">
-	<view class="invoice-template">
-		 <!-- 发票信息 -->
-		<view class="invoice-title" @tap.stop="hanldOperationConfim">
-			<text class="text">发票信息</text>
-			<view class="invoice-right">
-				<text class="text-l">{{invoiceText}}</text>
-				<text class="iconfont icon-xiayibu"></text>
-			</view>
-		</view>
-		<!-- <view class="invoice-text">
-			<text>{{invoiceText}}</text>
-		</view> -->
-		<!--底部选择模态层弹窗组件 -->
-		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="choiceaInvoiceConfim">
-			<!-- 遮罩层 -->
-			<view class="mask"></view>
-			<view class="layer" @tap.stop="discard">
-				<view class="content clearfix">
-					<view class="invoice-ltitle">发票类型</view>
-					<view class="invoice-radio">
-						<radio-group class="row-group" @change="radioChange">
-							<label class="row-input" v-for="(item, index) in invoiceTypeList" :key="item.value">
-								<radio class="row-radio" :value="item.value" :checked="index === current" color="#FF5B00"/>
-								<view class="row-text">{{item.name}}</view>
-							</label>
-						</radio-group>
-					</view>
-					<view class="invoice-main from" v-if="invoiceType == '2'">
-						<view class="invoice-from">
-							<view class="label">单位名称:</view>
-							<input class="form-input" type="text" v-model="invoiceData.invoiceTitle" placeholder="请填写单位信息(必填)" placeholder-class="placeholder" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">纳税人识别号:</view>
-							<input class="form-input" type="text" v-model="invoiceData.corporationTaxNum" placeholder="请填写纳税人识别号(必填)" placeholder-class="placeholder" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册地址:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredAddress" placeholder="请填写单位注册地址(必填)" placeholder-class="placeholder" maxlength="100">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册电话:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredPhone" placeholder="请填写注册电话(必填)" placeholder-class="placeholder" maxlength="15">
-						</view>
-						<view class="invoice-from">
-							<view class="label">开户银行:</view>
-							<input class="form-input" type="text" v-model="invoiceData.openBank"   placeholder="请填写开户银行(必填)" placeholder-class="placeholder" maxlength="30">
-						</view>
-						<view class="invoice-from">
-							<view class="label">银行账号:</view>
-							<input class="form-input" 
-								   type="text" 
-								   v-model="invoiceData.bankAccountNo" 
-								   placeholder="请填写银行账号(必填)" 
-								   maxlength="30"
-								   placeholder-class="placeholder">
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '3'">
-						<view class="invoice-ltitle">发票内容</view>
-						<view class="invoice-group tit">
-							<checkbox-group class="row-group" @change="checkboxChange">
-								<view class="text">商品明细</view>
-								<checkbox class="row-radio" value="明细"  :checked="inventoryChecked" color="#FF5B00"></checkbox>
-							</checkbox-group>
-						</view>
-						<view class="invoice-ltitle">发票抬头</view>
-						<view class="invoice-group tit">
-							<radio-group class="row-group radio" @change="radioChangeTitle">
-								<label class="row-input" v-for="(item, index) in invoiceTitleList" :key="item.value">
-									<radio class="row-radio" :value="item.value" :checked="index === titleCurrent" color="#FF5B00"/>
-									<view class="row-text">{{item.name}}</view>
-								</label>
-							</radio-group>
-						</view>
-						<view class="invoice-group from">
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '0'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写个人抬头" placeholder-class="placeholder" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写公司抬头" placeholder-class="placeholder" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.corporationTaxNum"   placeholder="请填写纳税人识别号" placeholder-class="placeholder" maxlength="20">
-							</view>
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '1'">
-						<view class="invoice-none">不开具发票信息</view>
-					</view>
-				</view>
-				<view class="btn">
-					<view class="button add" @click="choiceaInvoiceConfim">完成</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'invoice',
-		data() {
-			return{
-				invoiceText:'不要发票',
-				specClass: '',//规格弹窗css类,控制开关动画
-				invoiceType:'1',//发票类型
-				current:0,
-				titleCurrent:0,
-				inventoryChecked:false,
-				invoiceTypeList:[
-					{value:'1',name:'不要发票'},
-					{value:'2',name:'增值税发票'},
-				],
-				invoiceTitleList:[
-					{value:'0',name:'个人'},
-					{value:'1',name:'公司'},
-				],
-				peopleInvoiceData:{
-					invoiceTitle:'',
-					invoiceContent:'',
-					corporationTaxNum:'',
-					invoiceTitleType:'0'//发票抬头类型 1企业 0个人
-				},
-				invoiceData:{
-					invoiceTitle:'',	 //单位名称
-					corporationTaxNum:'',//纳税人识别号
-					registeredAddress: '',//单位地址
-					registeredPhone:'',	 //注册电话
-					openBank:'',		//开户银行
-					bankAccountNo: ''  ,//银行账号
-				},
-			}
-		},
-		created(){
-			// this.initData(this.invoiceDatas)
-		},
-		computed: {
-
-		},
-		methods:{
-			getUseFindInvoice(){//获取发票信息
-				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-					this.OrderService.GetFindInvoice({userId:resolve.userId}).then(response =>{
-						if(response.data == null){
-							this.invoiceData = Object.assign(this.invoiceData,'',{type:0})
-						}else{
-							this.invoiceData = response.data
-						} 
-					})
-				})
-			},
-			updateInvoiceFn(){//保存发票信息
-				this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-					let params =Object.assign(this.invoiceData,'',{userId:resolve.userId})
-					this.OrderService.UpdateInvoice(params).then(response =>{})
-				})
-			},
-			choiceaInvoiceConfim(){
-				switch(this.invoiceType){
-					case '1':
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-						break
-					// case '2':
-					// 	this.choiceaInvoiceTwo()
-					// 	this.invoiceText = this.peopleInvoiceData.invoiceTitle
-					// 	break;
-					case '2':
-						this.choiceaInvoiceFirst()
-						this.invoiceText = this.invoiceData.invoiceTitle
-						break
-						default:
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-				}
-			},
-			choiceaInvoiceFirst(){//增值税发票
-				if(this.invoiceData.invoiceTitle == ''){
-					this.$util.msg('请输入单位名称',2000)
-					return
-				}
-				if(this.invoiceData.corporationTaxNum == ''){
-					this.$util.msg('请输入纳税人识别号',2000)
-					return
-				}
-				if(this.invoiceData.registeredAddress == ''){
-					this.$util.msg('请输入单位地址',2000)
-					return
-				}
-				if(this.invoiceData.registeredPhone == ''){
-					this.$util.msg('请输入注册电话',2000)
-					return
-				}
-				if(this.invoiceData.openBank == ''){
-					this.$util.msg('请输入开户银行',2000)
-					return
-				}
-				if(this.invoiceData.bankAccountNo == ''){
-					this.$util.msg('请输入银行账号',2000)
-					return
-				}
-				this.updateInvoiceFn()
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:2}))
-				this.hideSpec()
-			},
-			choiceaInvoiceTwo(){//普通发票			
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '0':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入个人抬头',2000)
-							return
-						}
-						break
-					case '1':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入公司抬头',2000)
-							return
-						}
-						if(this.peopleInvoiceData.corporationTaxNum == ''){
-							this.$util.msg('请输入纳税人识别号',2000)
-							return
-						}
-						break
-				}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.peopleInvoiceData,'',{type:1}))
-				this.hideSpec()
-			},
-			choiceaInvoiceThree(){//不要发票
-				this.invoiceData = {}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:0}))
-				this.hideSpec()
-			},
-			hideSpec() {//关闭弹窗
-				this.specClass = 'hide'
-				setTimeout(() => {
-					this.specClass = 'none'
-				}, 200)
-			},
-			hanldOperationConfim(){//显示发票弹窗
-				this.specClass = 'show'
-			},
-			radioChange(e) {
-				this.invoiceType = e.target.value
-				for (let i = 0; i < this.invoiceTypeList.length; i++) {
-					if (this.invoiceTypeList[i].value === this.invoiceType) {
-						this.current = i
-						break
-					}
-				}
-				switch(this.invoiceType){
-					case '2':
-						this.getUseFindInvoice()
-						break
-				}		
-			},
-			radioChangeTitle(e) {
-				this.peopleInvoiceData.invoiceTitleType = e.target.value
-				for (let i = 0; i < this.invoiceTitleList.length; i++) {
-					if (this.invoiceTitleList[i].value === this.peopleInvoiceData.invoiceTitleType) {
-						this.titleCurrent = i
-						break
-					}
-				}
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '1':
-						this.inventoryChecked = false
-						this.peopleInvoiceData.invoiceTitle = ''
-						this.peopleInvoiceData.invoiceContent = ''
-						break
-				}		
-			},
-			checkboxChange(e){
-				this.inventoryChecked = !this.inventoryChecked
-				this.peopleInvoiceData.invoiceContent = e.detail.value[0]
-			},
-			inputBankNum(val) {
-				if (/\S{5}/.test(val)) {
-					this.invoiceData.bankAccountNo = val.replace(/\s/g, '').replace(/(.{4})/g, '$1 ')
-				}
-			},
-			discard(){
-				//丢弃
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.invoice-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		.invoice-title{
-			width: 702rpx;
-			padding: 0 24rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			position: relative;
-			font-size: $font-size-28;
-			font-weight: bold;
-			border-bottom: 1px solid #EBEBEB;
-			.text{
-				font-size: $font-size-28;
-				color: $text-color;
-				font-weight: bold;
-			}
-			.invoice-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					margin-right: 40rpx;
-				}
-				.iconfont{
-					width: 50rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					color: #999999;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 0;
-				}
-			}
-		}
-		.invoice-text{
-			width: 702rpx;
-			padding: 0 24rpx;
-			font-size: $font-size-24;
-			color: #666666;
-			line-height: 60rpx;
-		}
-		.invoice-ltitle{
-			width: 100%;
-			line-height: 60rpx;
-			height: 60rpx;
-			font-size: $font-size-28;
-			color: #333333;
-		}
-		.invoice-radio{
-			width: 100%;
-			height: 88rpx;
-			line-height: 88rpx;
-			display: flex;
-			border-bottom: 1px solid #EBEBEB;
-			.row-group{
-				flex:1;
-				display: flex;
-			}
-			.row-input{
-				flex: 1;
-				height: 88rpx;
-				line-height: 88rpx;
-			}
-			.row-radio{
-				float: left;
-				transform: scale(0.6);
-			}
-			.row-text{
-				font-size: $font-size-24;
-				color: $text-color;
-			}
-		}
-		.invoice-main{
-			width: 100%;
-			height: auto;
-			margin-top: 30rpx;
-			&.from{
-				padding-bottom: 40rpx;
-			}
-			.invoice-none{
-				line-height: 60rpx;
-				height: 60rpx;
-				font-size: $font-size-24;
-				color: #666666;
-				text-align: center;
-			}
-			.invoice-from{
-				width: 662rpx;
-				height: 40rpx;
-				padding: 20rpx;
-				line-height: 40rpx;
-				align-items: flex-start;
-				font-size: $font-size-28;
-				color: $text-color;
-				// background: #F7F7F7;
-				// border-radius: 14rpx;
-				margin-bottom: 20rpx;
-				border-bottom: 2rpx solid #e1e1e1;
-				.label{
-					height: 40rpx;
-					line-height: 40rpx;
-					float: left;
-				}
-				.form-input{
-					height: 40rpx;
-					line-height: 40rpx;
-					flex-grow: 1;
-					padding-left: 20rpx;
-				}
-			}
-			.invoice-group{
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				border-bottom: 1px solid #EBEBEB;
-				&.tit{
-					margin-bottom: 30rpx;
-				}
-				&.from{
-					margin-bottom: 30rpx;
-					border-bottom: 1px solid #FFFFFF;
-					flex-direction: row;
-					display: block;
-					.group-from{
-						flex: 1;
-						height: 40rpx;
-						padding: 20rpx;
-						line-height: 40rpx;
-						align-items: flex-start;
-						font-size: $font-size-24;
-						color: $text-color;
-						background: #F7F7F7;
-						border-radius: 14rpx;
-						margin-bottom: 20rpx;
-						.form-input{
-							height: 40rpx;
-							line-height: 40rpx;
-							flex-grow: 1;
-						}
-					}
-				}
-				.row-group{
-					line-height: 88rpx;
-					flex: 1;
-					.text{
-						font-size: $font-size-24;
-						color: $text-color;
-						line-height: 88rpx;
-						float: left;
-					}
-					.row-radio{
-						float: right;
-						transform: scale(0.8);
-						border-radius: 50%;
-					}
-					&.radio{
-						display: flex;
-						.row-input{
-							flex: 1;
-							height: 88rpx;
-							line-height: 88rpx;
-						}
-						.row-radio{
-							float: left;
-							transform: scale(0.6);
-						}
-						.row-text{
-							font-size: $font-size-24;
-							color: $text-color;
-						}
-					}
-				}
-			}
-		}
-	}
-	/* 加入购物模态层*/
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
-		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
-		}
-		100% {
-			opacity: 0;
-		}
-	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(0);
-		}
-		100% {
-			transform: translateY(-100%);
-		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(-100%);
-		}
-		100% {
-			transform: translateY(0);
-		}
-	}
-	@keyframes showAmnation {
-		0% {
-			top: -12rpx;
-			opacity: 0;
-		}
-		50% {
-			top: -60rpx;
-			opacity: 1;
-		}
-		100% {
-			top: -100rpx;
-			opacity: 0;
-		}
-	}
-	@keyframes hideAmnation {
-		0% {
-			top: -100rpx;
-			opacity: 0;
-		}
-		100% {
-			top: -12rpx;
-			opacity: 0;
-		}
-	}
-	.popup {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
-			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: absolute;
-			z-index: 22;
-			bottom: -1010rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 65rpx 24rpx;
-			height: 920rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
-				width: 100%;
-			}
-			.btn {
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				.button {
-					width: 702rpx;
-					height: 88rpx;
-					color: #fff;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					font-size: $font-size-28;
-					border-radius: 44rpx;
-					background: $btn-confirm;
-				}
-			}
-		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
-		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
-		}
-		&.none {
-			display: none;
-		}
-		&.service {
-			.row {
-				margin: 30upx 0;
-				.title {
-					font-size: 30upx;
-					margin: 10upx 0;
-				}
-				.description {
-					font-size: 28upx;
-					color: #999;
-				}
-			}
-		}
-		.layer-smimg{
-			width: 114rpx;
-			height: 114rpx;
-			float: left;
-			border-radius: 10rpx;
-			margin-right: 24rpx;
-			image{
-				width: 114rpx;
-				height: 114rpx;	
-				border-radius: 10rpx;
-			}
-		}
-		.layer-nunbox{
-			justify-content: space-between;
-			align-items: center;
-			width: 536rpx;
-			height: 88rpx;
-			padding: 13rpx 0 0 0;
-			float: left;
-			.layer-nunbox-t{
-				width: 100%;
-				height:44rpx;
-				position:relative;
-				display: flex;
-				.layer-nunbox-text{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-				}
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-32;
-						padding:0 18rpx;
-						font-size: $text-color;
-					}
-					.btn-input{
-						width: 62rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-28;
-					}
-				}
-				.product-step{
-					position: absolute;
-					left: 45rpx;
-					bottom: 0;
-					height: 44rpx;
-					background: #FFFFFF;
-				}
-			}
-			.layer-nunbox-b{
-				width: 100%;
-				height:44rpx;
-				margin-top: 13rpx;
-			}
-			.text{
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				.p{
-					color: #FF2A2A;
-				}
-				.p:first-child{
-					margin-left: 30rpx;
-				}
-				.p.sm{
-					font-size: $font-size-24;
-				}
-			}
-		}
-	}	
-	.placeholder{
-		color: #b2b2b2;
-	}
-</style>

+ 0 - 218
pages/seller/order/components/sellerOrderButton.vue

@@ -1,218 +0,0 @@
-<template name="button">
-	<view class="button-template">
-		<!-- 底部按钮 -->
-		<view class="button-content"> 
-			<view class="btn btn-cancel" v-if="secondHandOrderFlag!=1 && !rechargeGoods"  @click.stop="btnConfirm('again',orderId)">再来一单</view>
-			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel',orderId)">取消订单</view>
-			<!-- <view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',orderId)">删除订单</view> -->
-			<template>
-				<view class="btn btn-cancel" v-if="btnState.isPay" @click.stop="onShareCode(orderId,userId,1)">分享支付</view>
-				<view class="btn btn-cancel" v-else @click.stop="onShareCode(orderId,userId,2)">分享订单</view>	
-			</template>
-			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',orderId)">查看物流</view>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',orderId)">确认订单</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'button',
-		props:{
-			status: {
-				type:Number
-			},
-			order: {
-				type:Object
-			},
-			orderId: {
-				type:Number
-			},
-			userId:{
-				type:Number
-			},
-			rechargeGoods:{
-				type:Boolean
-			},
-			serviceProviderId:{
-				type:Number
-			},
-			secondHandOrderFlag:{
-				type:String
-			}
-		},
-		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],status: true},
-					{label:'isConfirm',val:[0],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],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= {
-						isDelete: false,
-						isCancel: false,
-						isConfirm: false,
-						isShare: true
-					}
-				return 	btnState
-			},
-			getShareCode(code){
-				this.shareCode = code
-			},
-			onShareCode(oID,uID,type){
-				if(this.order.onlinePayFlag == 1){
-					this.$util.modal('提示','本订单不能进行线上支付,请让客户选择线下转账方式付款','继续分享','知道了',true,() =>{
-						this.$parent.isShareModal = true
-						this.$parent.btnoRderID = oID,
-						this.$parent.btnClubUserID = uID
-						this.$parent.isShareType = type
-						this.$emit('shareConfirm')
-					})	
-				}else{
-					this.$parent.isShareModal = true
-					this.$parent.btnoRderID = oID,
-					this.$parent.btnClubUserID = uID
-					this.$parent.isShareType = type
-					this.$emit('shareConfirm')
-				}
-			},
-			btnConfirm(type,orderId){
-				let data = {
-						type:type,
-						orderId:orderId,
-					}
-				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;
-			margin: 20rpx 0;
-			.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: 160rpx;
-				height:  64rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius:34rpx;
-				// float: right; 
-				display: inline-block;
-			}
-			.btn-color{
-				background: $btn-confirm;
-				// margin: 22rpx 0 22rpx 22rpx;
-			}
-			.btn-cancel{
-				border: 2rpx solid #999999;
-				background:#FFFFFF;
-				color: #666666;
-				// float: left;
-				margin-right: 15rpx;
-			}
-			.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:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
-			}
-			.btn-share{
-				background:linear-gradient(315deg,rgba(0,212,150,1) 0%,rgba(126,243,174,1) 100%);
-				margin-right: 0;
-				position: relative;
-				.tips{
-					width: 160rpx;
-					height: 34rpx;
-					padding: 10rpx 10rpx;
-					background:#FF5B00;
-					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:#FF5B00;
-						position: absolute;
-						bottom: -8rpx;
-						left: 30rpx;
-						z-index: -1;
-						transform:rotate(45deg);
-					}
-				}
-			}
-		}
-	}
-</style>

+ 828 - 941
pages/seller/order/create-order.vue

@@ -1,97 +1,104 @@
 <template>
-	<view class="container order clearfix" :style="{paddingBottom :isIphoneX ? '190rpx' : '134rpx'}">
+	<view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '190rpx' : '134rpx' }">
 		<!-- 地址选择 -->
-		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
+		<cm-address-temp ref="choiceAddress" v-if="isRequest" :addressData="addressData" />
 		<!-- 商品 -->
-		<seller-goodsList ref='goods' v-if="isRequest" :secondflag="secondflag" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList"></seller-goodsList>
+		<cm-goods-temp
+			ref="goods"
+			v-if="isRequest"
+			:secondflag="secondflag"
+			:goodsData.sync="goodsData"
+			@handleGoodList="handChangeInputGoodsList"
+			@changeChina="handleChangeChina"
+			@changePostage="handleChangePostage"
+		/>
 		<!-- 返佣订单 -->
-		<view class="order-return" v-if="goodsData.length==1 && secondflag">
+		<!-- 		<view class="order-return" v-if="goodsData.length == 1 && secondflag">
 			<view class="order-return-main" @click="handleRebateFlag">
 				<view class="label">是否返佣</view>
 				<view class="label-right">
-					<text class="text-l">{{ rebateFeeText }}</text>
-					<text class="iconfont icon-xiayibu"></text>
+					<text class="text-l">{{ rebateFeeText }}</text> <text class="iconfont icon-xiayibu"></text>
 				</view>
 			</view>
 			<view class="order-return-input" v-if="confirmParam.payInfo.rebateFlag === 2">
-				<input class="input" v-model="rebateFee" type="number" placeholder="请输入返佣服务费" maxlength="20">
+				<input class="input" v-model="rebateFee" type="number" placeholder="请输入返佣服务费" maxlength="20" />
 			</view>
-		</view>
+		</view> -->
 		<!-- 返佣订单 -->
-		<view class="Rebate" @click="handleSecondFlag" v-if="!secondflag">
+		<!-- 		<view class="Rebate" @click="handleSecondFlag" v-if="!secondflag">
 			<text class="rebate-title">二手返佣订单</text>
-			<text class="iconfont" :class="rebatecheck?'icon-yixuanze':'icon-weixuanze'" ></text>
-		</view>
+			<text class="iconfont" :class="rebatecheck ? 'icon-yixuanze' : 'icon-weixuanze'"></text>
+		</view> -->
 		<!-- 发票信息 -->
-		<seller-invoice ref="invoice" 
-						v-if="isRequest" 
-						:invoiceDatas="invoiceData" 
-						@handleChoiceaInvoice="handleChoiceaInvoiceData">
-		</seller-invoice>
+		<cm-invice-popup
+			ref="invoice"
+			v-if="isRequest"
+			:invoiceDatas="invoiceData"
+			@handleChoiceaInvoice="handleChoiceaInvoiceData"
+		/>
 		<!-- 优惠券选择弹窗 -->
-		<sellerCoupon ref="coupon" 
-				v-if="isCouponShow"
-				:couponList="couponList" 
-				@handleChoiceaCoupon="handleChoiceaCouponData">
-		</sellerCoupon>
+		<cm-coupon-popup
+			ref="coupon"
+			v-if="isCouponShow"
+			:couponList="couponList"
+			@handleChoiceaCoupon="handleChoiceaCouponData"
+		/>
 		<!-- 兑换优惠券弹窗 -->
-		<sellerExchangeCoupon v-if="isExchangePopup"></sellerExchangeCoupon>
-		<!-- 运费 -->
-		<seller-freight ref="freight" 
-						v-if="isFreight" 
-						:freightDatas="freightData" 
-						@handleChoiceaFreight="handleChoiceaFreightData" 
-						@showFreightAlert="handFreightAlertShow">
-		</seller-freight>
-		<freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
+		<cm-coupon-chang v-if="isExchangePopup" />
 		<!-- 余额抵扣 -->
-		<view class="invoice-balance" v-if="!rechargeGoods">
+		<view class="invoice-balance" v-if="isRequest && !rechargeGoods">
 			<view class="balabce-t">
-				<view class="balabce-t-le">余额抵扣</view>
+				<view class="balabce-t-le">余额抵扣:</view>
 				<view class="balabce-t-ri">
 					<view class="money">
-						<text>可用余额:</text>
-						<text>¥{{ userMoney | NumFormat }}</text>
+						<text>可用余额:</text> <text>¥{{ userMoney | NumFormat }}</text>
 					</view>
 					<view class="checkbox-box">
-						<button class="checkbox iconfont" 
-								hover-class="btn-hover"
-								v-if="userMoney!=0"
-								@click.stop="checkedBalabce"
-								:class="[ischecked ?'icon-yixuanze':'icon-weixuanze']"
-						>
-						</button>
+						<button
+							class="checkbox iconfont"
+							hover-class="btn-hover"
+							v-if="userMoney != 0"
+							@click.stop="checkedBalabce"
+							:class="[ischecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+						></button>
 					</view>
 				</view>
 			</view>
-			<view class="balabce-b" :class="{'balabce-b--hide':!ischecked}">	
-				<view class="balabce-b-text animation" 
-					  :style="{'transform':ischecked?'translateY(0)':'translateY(-50%)','-webkit-transform':ischecked?'translateY(0)':'translateY(-50%)'}">
-					<text>当前使用:¥{{deductMoney | NumFormat}},剩余:¥{{ surplusMoney | NumFormat }}</text>
+			<view class="balabce-b" :class="{ 'balabce-b--hide': !ischecked }">
+				<view
+					class="balabce-b-text animation"
+					:style="{
+						transform: ischecked ? 'translateY(0)' : 'translateY(-50%)',
+						'-webkit-transform': ischecked ? 'translateY(0)' : 'translateY(-50%)'
+					}"
+				>
+					<text>当前使用:¥{{ deductMoney | NumFormat }},剩余:¥{{ surplusMoney | NumFormat }}</text>
 				</view>
 			</view>
 		</view>
 		<!-- 选择对机构是否可见 -->
-		<sellerClubVisible ref="clubVisible"  v-if="isRequest" @handleClubVisible="handleClubVisibleData"></sellerClubVisible>
+		<cm-club-visible ref="clubVisible" v-if="isRequest" @handleClubVisible="handleClubVisibleData" />
 		<!-- 售后条例 -->
-		<seller-regulations  ref="regulations"
-							 v-if="isRequest && seconDepositFlg" 
-							:regulaDatas="clauseList" 
-							@handleData="handleClauseData">
-		</seller-regulations>
-		<regula-alert v-if="isregulaTip" ref="csPhone"></regula-alert>
+		<cm-regula-popup
+			ref="regulations"
+			v-if="isRequest && seconDepositFlg"
+			:regulaDatas="clauseList"
+			@handleData="handleClauseData"
+		/>
 		<!-- 底部 -->
-		<view class="footer" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+		<view class="footer" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
 			<view class="footer-le">
 				<view class="footer-count">
 					<text>共{{ totalCount }}件商品</text>
 				</view>
 				<view class="footer-price">
 					<view class="sum" :class="totalDiscountAmount == 0 ? 'none' : ''">
-						总价:<text class="price">¥{{orderShouldPayFee | NumFormat}}</text>
+						总价:<text class="price">¥{{ orderShouldPayFee | NumFormat }}</text>
 					</view>
 					<view class="sum-none" v-if="totalDiscountAmount > 0">
-						<text class="money-reduced">共减<text>¥{{ totalDiscountAmount  | NumFormat}}</text></text>
+						<text class="money-reduced"
+							>共减<text>¥{{ totalDiscountAmount | NumFormat }}</text></text
+						>
 					</view>
 				</view>
 			</view>
@@ -99,39 +106,6 @@
 				<view class="btn" :class="isSubLoading ? 'disabled' : ''">提交订单</view>
 			</view>
 		</view>
-		<!-- 优惠券 -->
-		<view class="coupon-content-model" v-if="isCouponModel">
-			<view class="coupon-alert-content">
-				<view class="coupon">
-					<view class="coupon-list">
-						<view class="list-cell-tags">{{ ExchangeCouponData.couponType | TypeFormat }}</text></view>
-						<view class="list-cell-le">
-							<view class="coupon-maxMoney">
-								<text class="small">¥</text>
-								{{ ExchangeCouponData.couponAmount }}
-							</view>
-							<view class="coupon-minMoney">
-								<text class="txt">满{{ ExchangeCouponData.touchPrice }}可用</text>
-							</view>
-						</view>
-						<view class="list-cell-ri">
-							<view class="list-cell-top">
-								<text v-if="ExchangeCouponData.couponType == 0">
-									{{ ExchangeCouponData.productType && ExchangeCouponData.productType == 1 ? '全商城商品通用' : '仅可购买指定商品'  }}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 1">
-									{{ ExchangeCouponData.categoryType == 1 ? '仅限购买产品类商品' : '仅限购买仪器类商品' }}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 3">仅限购买店铺【{{ ExchangeCouponData.shopName }}】的商品</text>
-								<text v-if="ExchangeCouponData.couponType == 4 || ExchangeCouponData.couponType == 2">全商城商品通用</text>
-							</view>
-							<view class="list-cell-time">{{ ExchangeCouponData.startDate  }} - {{ ExchangeCouponData.endDate }}</view>
-						</view>
-					</view>
-					<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
-				</view>
-			</view>
-		</view>
 		<!-- 弹窗提示 -->
 		<tui-modal
 			:show="modal"
@@ -149,946 +123,859 @@
 </template>
 
 <script>
-	import freightAlert from '@/components/cm-module/modelAlert/freightAlert.vue'
-	import choiceAddress from './components/sellerAddress'  
-	import sellerGoodsList from './components/sellerGoodsList'
-	import sellerInvoice from './components/sellerInvoice'
-	import sellerFreight from './components/sellerFreight'
-	import sellerCoupon from './components/sellerCoupon'
-	import sellerExchangeCoupon from './components/sellerExchangeCoupon'
-	import sellerClubVisible from './components/sellerClubVisible'
-	import sellerRegulations from './components/sellerRegulations.vue'
-	
-	export default {
-		components:{
-			choiceAddress,
-			sellerGoodsList,
-			sellerInvoice,
-			sellerFreight,
-			sellerCoupon,
-			sellerExchangeCoupon,
-			sellerClubVisible,
-			freightAlert,
-			sellerRegulations
-		},
-		data() {
-			return {
-				isSubLoading:false,
-				modalButton: [
-					{
-						text: '再想一想',
-						type: 'gray',
-						plain: true //是否空心
-					},
-					{
-						text: '继续提交',
-						customStyle: {
-							color: '#fff',
-							bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
-						},
-						plain: false
-					}
-				],
-				contentModalText: '', //操作文字提示语句
-				modal: false,
-				showModalstauts:1,
-				isIphoneX:this.$store.state.isIphoneX,
-				cartParam: {// 购物车立即结算确认订单参数
-					skuIds:0,		// 商品Id(逗号隔开)
-					serviceProviderId:0,// 协销Id
-					clubId:0			// 机构Id
-				}, 		
-				productParam: {// 商品立即购买确认订单参数
-					productCount:0, 	// 商品数量
-					productId:0,		// 商品Id
-					serviceProviderId:0,// 协销Id
-					clubId:0			// 机构Id
-				}, 	
-				postageParam: {// 邮费计算参数
-					skuIds:0,			// 商品Id(逗号隔开)
-					userId:0,			// 用户Id
-					townId:0			// 地区Id
-				},	
-				confirmParam: {// 提交订单参数
-					cartType:3, 		// 购买类型:(1自主下单, 3协销下单)
-					orderMiniType:0,    // 订单提交状态 0初始提交 1 继续提交
-					orderSource:6,		// 订单来源 1WWW 6小程序[采美,星范]
-					addressId:0,		// 收货地址Id
-					clubCouponId:0,		// 关联优惠券Id
-					clubId:0,			// 机构Id
-					orderInfo:[],		// 订单商品数据
-					orderInvoice:{type:0},	// 订单发票信息
-					orderSeen:1,		// 订单对机构可见度 1可见  2不可见
-					payInfo:{			// 订单金额数据
-						isColdChina:0, 		//是否勾选冷链费
-						orderShouldPayFee: 0,	// 订单最终支付金额
-						balancePayFlag: 0,		// 勾选余额的状态(1使用,0不使用)
-						clauseId:0,				// 条款Id
-						postage: 0,				// 运费金额
-						postageFlag: 0,			// 运费类型
-						userBeans: 0,			// 抵扣采美豆数量
-						rebateFee:0, 			// 返佣服务费
-						rebateFlag:0			// 是否返佣订单
+import cmAddressTemp from './components/cm-address-temp'
+import cmGoodsTemp from './components/cm-goods-temp'
+import cmInvicePopup from './components/cm-invice-popup'
+import cmFreightPopup from './components/cm-freight-popup'
+import cmCouponPopup from './components/cm-coupon-popup'
+import cmCouponChang from './components/cm-coupon-chang'
+import cmClubVisible from './components/cm-club-visible'
+import cmRegulaPopup from './components/cm-regula-popup'
+import cmCouponTips from './components/cm-coupon-tips'
+import conMixins from './mixins/conMixins.js'
+
+export default {
+	mixins: [conMixins],
+	components: {
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmInvicePopup,
+		cmFreightPopup,
+		cmCouponPopup,
+		cmCouponChang,
+		cmClubVisible,
+		cmRegulaPopup,
+		cmCouponTips
+	},
+	data() {
+		return {
+			isSubLoading: false,
+			modalButton: [
+				{
+					text: '再想一想',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '继续提交',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
 					},
-					unionId:uni.getStorageSync('unionId'),// 用户unionId
-				}, 	
-				rebateFee:'',
-				rebateFeeText:'否',
-				confirmType:1,			  
-				submitState:'',  		  // 提交状态
-				totalCount:0,			  // 订单提交总数量
-				reducedPrice:0,			  // 满减金额
-				couponAmount:0,	  		  // 优惠券金额
-				totalDiscountAmount:0,	  // 共减金额
-				orderShouldPayFee:0.00,	  // 订单提交总金额
-				allPrice:0.00,			  // 订单总金额
-				surplusMoney:0.00,		  // 显示勾选后的剩余抵扣
-				userMoney:0.00,			  // 显示可使用余额
-				deductMoney:0.00,		  // 显示已使用的余额
-				isRequest:false,		  // 是否加载完成渲染子组件
-				isFreight:false,		  // 是否加载完成渲染子组件
-				isAddress:false,		  // 是否加载完成地址
-				isExchangePopup:false, 	  // 控制兑换优惠券弹窗
-				isfreightTip:false,		  // 控制邮费弹窗
-				ischecked:false,	      // 是否勾选余额
-				addressData:{},			  // 初始化地址信息
-				goodsData:[],			  // 初始化商品信息
-				couponList:[],		  	  // 初始化优惠券信息
-				invoiceData:{type:0},	  // 初始化发票信息
-				freightData:{},			  // 邮费数据
-				handleFreightData:{},	  // 监听邮费数据
-				orderInfo:[],			  // 提交的商品信息
-				payInfo:{},				  // 订单信息
-				rechargeGoods:false,
-				clauseList:[],
-				seconDepositFlg:true,
-				rebatecheck:false,
-				isCouponShow:false,		  // 是否显示可选优惠券
-				secondflag:true,
-				isCouponModel:false,	  // 兑换优惠券成功提示
-				ExchangeCouponData:{},	  // 兑换优惠券信息
-			}
-		},
-		onLoad(option){//商品数据
-			this.initStorage(option)
-		},
-		filters:{
-			NumFormat(value) {//处理金额
-				return Number(value).toFixed(2)
+					plain: false
+				}
+			],
+			contentModalText: '', //操作文字提示语句
+			modal: false,
+			showModalstauts: 1,
+			isIphoneX: this.$store.state.isIphoneX,
+			confirmParam: {
+				// 提交订单参数
+				cartType: 3, // 购买类型:(1自主下单, 3协销下单)
+				orderMiniType: 0, // 订单提交状态 0初始提交 1 继续提交
+				orderSource: 6, // 订单来源 1WWW 6小程序[采美,星范]
+				addressId: 0, // 收货地址Id
+				clubCouponId: 0, // 关联优惠券Id
+				clubId: 0, // 机构Id
+				orderInfo: [], // 订单商品数据
+				orderInvoice: { type: 0 }, // 订单发票信息
+				orderSeen: 1, // 订单对机构可见度 1可见  2不可见
+				payInfo: {
+					// 订单金额数据
+					orderShouldPayFee: 0, // 订单最终支付金额
+					balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
+					clauseId: 0, // 条款Id
+					postage: 0, // 运费金额
+					postageFlag: 0, // 运费类型
+					userBeans: 0, // 抵扣采美豆数量
+					rebateFee: 0, // 返佣服务费
+					rebateFlag: 0 // 是否返佣订单
+				},
+				unionId: uni.getStorageSync('unionId') // 用户unionId
 			},
+			rebateFee: '',
+			rebateFeeText: '否',
+			confirmType: 1,
+			submitState: '', // 提交状态
+			isRequest: false, // 是否加载完成渲染子组件
+			isFreight: false, // 是否加载完成渲染子组件
+			isExchangePopup: false, // 控制兑换优惠券弹窗
+			isfreightTip: false, // 控制邮费弹窗
+			ischecked: false, // 是否勾选余额
+			addressData: {}, // 初始化地址信息
+			goodsData: [], // 初始化商品信息
+			couponList: [], // 初始化优惠券信息
+			invoiceData: { type: 0 }, // 初始化发票信息
+			orderInfo: [], // 提交的商品信息
+			payInfo: {}, // 订单信息
+			rechargeGoods: false,
+			clauseList: [],
+			seconDepositFlg: true,
+			rebatecheck: false,
+			isCouponShow: false, // 是否显示可选优惠券
+			secondflag: true,
+			isCouponModel: false, // 兑换优惠券成功提示
+			ExchangeCouponData: {} // 兑换优惠券信息
+		}
+	},
+	onLoad(option) {
+		//商品数据
+		this.initStorage(option)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	methods: {
+		async initStorage(option) {
+			const data = JSON.parse(option.data)
+			const clubInfo = await this.$api.getComStorage('orderUserInfo')
+			const userInfo = await this.$api.getStorage()
+			this.handleComType = option.type * 1
+			this.productParam.clubId = this.cartParam.clubId = this.confirmParam.clubId = clubInfo.clubId
+			this.productParam.serviceProviderId = userInfo.serviceProviderId
+			this.cartParam.serviceProviderId = userInfo.serviceProviderId
+			this.confirmParam.serviceProviderId = userInfo.serviceProviderId
+			if (option.type == '1') {
+				this.confirmType = 1
+				this.productParam.productCount = data.data.productCount
+				this.productParam.productId = data.data.productIds
+				this.getAddressData(clubInfo.userId, 1)
+			} else {
+				this.confirmType = 2
+				this.cartParam.skuIds = data.data.skuIds
+				this.getAddressData(clubInfo.userId, 2)
+			}
 		},
-		methods: {
-			async initStorage(option){
-					const data = JSON.parse(option.data)
-					const clubInfo = await this.$api.getComStorage('orderUserInfo')
-					const userInfo = await this.$api.getStorage()
-					this.productParam.clubId = this.cartParam.clubId = this.confirmParam.clubId = clubInfo.clubId ? clubInfo.clubId : 0
-					this.postageParam.userId = clubInfo.userId ? clubInfo.userId : 0
-					this.productParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					this.cartParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					this.confirmParam.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-					if(option.type =='prodcut'){
-						this.confirmType = 1
-						this.productParam.productCount = data.data.productCount
-						this.productParam.productId = data.data.productIds
-						this.getInitProdcutCrearOrder()
-					}else{
-						this.confirmType = 2
-						this.cartParam.skuIds = data.data.skuIds
-						this.getInitCrearOrder()
-					}
-			},
-			getInitCrearOrder(){//协销购物车跳转确认订单初始化信息
-				this.SellerService.SellerSettlement(this.cartParam).then(response =>{
-					let data = response.data
-					this.isRequest = true
-					this.goodsData = data.list
-					this.userMoney = data.userMoney
-					this.couponList = data.couponList
-					this.reducedPrice = data.reducedPrice
-					this.totalCount = data.totalCount
-					this.allPrice = data.totalPrice
-					this.rechargeGoods = data.includeRecharge
-					this.clauseList = data.clauseList
-					this.postageParam.skuIds  = this.getProductIds(data.list)
-					this.isCouponShow = true
-					if(this.couponList.length>0){
-						this.couponAmount = data.couponList[0].couponAmount
-						this.confirmParam.clubCouponId = data.couponList[0].clubCouponId 
-					}
-					this.orderShouldPayFee = this.allPrice - this.couponAmount
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-					this.getAddressData()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+		//协销购物车跳转确认订单初始化信息
+		async getInitCrearOrder() {
+			try {
+				const res = await this.SellerService.SellerSettlement(this.cartParam)
+				const data = res.data
+				this.goodsData = data.list.map(el => {
+					el.handlePostageFlag = el.postageFlag
+					return el
 				})
-			},
-			getInitProdcutCrearOrder(){//二手下单初始化查询
+				this.userMoney = data.userMoney
+				this.couponList = data.couponList
+				this.reducedPrice = data.reducedPrice
+				this.totalCount = data.totalCount
+				this.allPrice = data.totalPrice
+				this.rechargeGoods = data.includeRecharge
+				this.clauseList = data.clauseList
+				this.isCouponShow = true
+				if (this.couponList.length > 0) {
+					this.couponAmount = data.couponList[0].couponAmount
+					this.confirmParam.clubCouponId = data.couponList[0].clubCouponId
+				}
+				this.orderShouldPayFee = this.allPrice - this.couponAmount
+				this.isRequest = true
+			} catch (error) {
+				console.log('获取订单信息异常')
+			}
+		},
+		//二手下单初始化查询
+		async getInitProdcutCrearOrder() {
+			try {
 				this.seconDepositFlg = false
-				this.SellerService.GetSettlementBySencondProduct(this.productParam).then(response =>{
-					const data = response.data
-					this.isRequest = true
-					this.goodsData = data.list
-					this.userMoney = data.userMoney
-					this.totalCount = data.totalCount
-					this.allPrice = data.totalPrice
-					this.orderShouldPayFee = this.allPrice
-					this.isCouponShow = false
-					this.secondflag = false
-					this.getAddressData()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+				const res = await this.SellerService.GetSettlementBySencondProduct(this.productParam)
+				const data = res.data
+				this.goodsData = data.list.map(el => {
+					el.handlePostageFlag = el.postageFlag
+					return el
 				})
-			},
-			getProductIds(list){// 获取订单商品id列表
-				let skuId = []
-				list.forEach(function(supplier){
-					supplier.cartList.forEach(function(product){
-						skuId.push(product.skuId)
-					})
-				})
-				return skuId.join(',')
-			},
-			getFreightData(){//获取邮费信息
-				this.OrderService.GetOrderPostage(this.postageParam).then(response =>{
-					let data = response.data
-					this.freightData  = data
-					this.handleFreightData = data
-					this.isFreight = true
-					if(data.postageFlag== 1){
-						this.orderShouldPayFee = this.allPrice + data.postage
-						this.attributePallPrice()
-					}else{
-						this.orderShouldPayFee = this.allPrice
-						this.attributePallPrice()
-					}
-				})
-			},
-			async getAddressData(){//获取地址信息
-				const clubInfo = await this.$api.getComStorage('orderUserInfo')
-				this.UserService.QueryAddressList(
-					{
-						pageNum:1,
-						pageSize:1,
-						userId:clubInfo.userId,
-					}
-				).then(response =>{
-					let data = response.data
-					this.isAddress = true
-					this.addressData = {}
-					if(response.data.results != ''){
-						this.confirmParam.addressId = data.list[0].addressId
-						this.postageParam.townId = data.list[0].townId
-						this.addressData = data.list[0]
-						this.getFreightData()
-					}else{
-						this.addressData = this.addressData
-					}
-				})
-			},
-			handChangeInputGoodsList(data){//对应供应商的留言信息
-				this.goodsData = data
-			},
-			handleChoiceaInvoiceData(data){//获取发票信息
-				this.confirmParam.orderInvoice = data
-			},
-			handleChoiceaFreightData(data){//获取运费信息
-				console.log('编辑运费信息',data)
-				if(data.postageFlag == 1){
-					this.handleFreightData = data
-					this.orderShouldPayFee = this.allPrice + parseInt(data.postage)
-					this.attributePallPrice()
-				}else{
-					this.handleFreightData = data
-					this.orderShouldPayFee = this.allPrice
-					this.attributePallPrice()
-				}
-			},
-			handleClauseData(clauseId){// 条款Id
-				this.confirmParam.payInfo.clauseId = parseInt(clauseId)
-			},
-			handleChoiceaCouponData(data){// 勾选使用优惠券
-				console.log('优惠券信息',data)
-				this.couponAmount = data.couponAmount
-				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-				this.confirmParam.clubCouponId = data.clubCouponId
-				this.attributePallPrice()
-			},
-			handleClubVisibleData(data){// 订单对机构是否可见
-				console.log('对机构是否可见',data)
-				this.confirmParam.orderSeen = Number(data) 
-			},
-			checkedBalabce(){//勾选使用余额
-				if(this.rebatecheck){
-					this.$util.msg('返佣订单不能使用余额抵扣',2000)
-				}else{
-					if(this.userMoney > 0){
-						this.ischecked = !this.ischecked
-						if(this.ischecked){
-							this.confirmParam.payInfo.balancePayFlag = 1
-							this.attributePallPrice()
-						}else{
-							this.confirmParam.payInfo.balancePayFlag = 0
-							if( this.handleFreightData.postageFlag == 1 ){
-								this.orderShouldPayFee = this.allPrice + parseInt(this.handleFreightData.postage) - this.couponAmount
-							}else{
-								this.orderShouldPayFee = this.allPrice - this.couponAmount
-							}
-						}
-						console.log('最终订单支付金额',this.orderShouldPayFee)
-						console.log('优惠券金额',this.couponAmount)
-					}else{
-						return
-					}
-				}
-			},	
-			attributePallPrice(){//计算价格
-				if( this.handleFreightData.postageFlag == 1){
-					this.attributeHashfreight(this.handleFreightData.postage)
-				}else{
-					this.attributeNofreight()
-				}
-			},
-			attributeNofreight(){//计算没有邮费的支付价格
-				if(this.ischecked){
-					let totalAmount = this.allPrice - this.couponAmount//计算不包邮的价格 总价等于商品价格+邮费
-					if(this.userMoney > totalAmount){
-						this.orderShouldPayFee = 0.00
-						this.deductMoney = this.allPrice - this.couponAmount		// 勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    // 勾选后的剩余抵扣
-					}else{
-						this.orderShouldPayFee = this.allPrice - this.userMoney -	this.couponAmount //勾选后的总价
-						this.deductMoney = this.userMoney				            // 勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    // 勾选后的剩余抵扣
-					}
-				}else{
-					this.orderShouldPayFee = this.allPrice  - this.couponAmount
-					this.deductMoney = 0.00
-					this.surplusMoney = this.userMoney
-				}
-				console.log('最终订单支付金额',this.orderShouldPayFee)
-				console.log('优惠券金额',this.couponAmount)
-			},
-			attributeHashfreight(postage){//计算需要邮费的支付价格
-				let totalAmount = this.allPrice + parseInt(postage) - this.couponAmount//计算不包邮的价格 总价等于商品价格+邮费
-				if(this.ischecked){
-					if(this.userMoney > totalAmount ){							//余额大于支付金额
-						this.orderShouldPayFee = 0.00
-						this.deductMoney = this.allPrice + parseInt(postage) - this.couponAmount			//勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
-					}else{
-						this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.userMoney  - this.couponAmount       	//勾选后的总价
-						this.deductMoney = this.userMoney				            //勾选后使用抵余额
-						this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
-					}
-				}else{
-					this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.couponAmount
-					this.deductMoney = 0.00
-					this.surplusMoney = this.userMoney
+				this.userMoney = data.userMoney
+				this.totalCount = data.totalCount
+				this.allPrice = data.totalPrice
+				this.orderShouldPayFee = this.allPrice
+				this.isCouponShow = false
+				this.secondflag = false
+				this.isRequest = true
+			} catch (error) {
+				console.log('获取订单信息异常')
+			}
+		},
+		//获取地址信息
+		async getAddressData(userId, type) {
+			try {
+				const params = { pageNum: 1, pageSize: 1, userId: userId }
+				const res = await this.UserService.QueryAddressList(params)
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					this.addressData = data.list[0]
+					this.confirmParam.addressId = this.addressData.addressId
+					this.cartParam.townId = this.addressData.townId
+					this.productParam.townId = this.addressData.townId
 				}
-				console.log('最终订单支付金额',this.orderShouldPayFee)
-				console.log('优惠券金额',this.couponAmount)
-			},
-			orderSubmitMit(){//提交订单
-				if(this.confirmParam.addressId == ''){
-					this.$util.msg('请先添加收货地址~',2000)
-					return
+				if (type === 1) {
+					//立即都买提交
+					this.getInitProdcutCrearOrder()
 				}
-				if(this.confirmParam.payInfo.rebateFlag ===2){
-					if(this.rebateFee == 0){
-						this.$util.msg('请输入返佣服务费',2000)
-						return
-					}
-					this.confirmParam.payInfo.rebateFee = Number(this.rebateFee).toFixed(2)
+				if (type === 2) {
+					//购物车提交
+					this.getInitCrearOrder()
 				}
-				this.modal = true
-				this.contentModalText = '请仔细确认订单是否为返佣订单后再提交订单'
-			},
-			SellerCreateOrderSubmit(){
-				//提交订单
-				if(this.isSubLoading){ return }
-				this.confirmParam.orderInfo = this.goodsData.map(el => {
-					let productInfo = []
-					el.cartList.forEach(pros => {
-						productInfo.push({
-							skuId:pros.skuId,
-							productNum:pros.number,
-							presentNum:0,
-							productType:pros.giftType
-						})
+			} catch (error) {
+				console.log('获取订单地址异常')
+			}
+		},
+		handChangeInputGoodsList(data) {
+			//对应供应商的留言信息
+			this.goodsData = data
+		},
+		handleChoiceaInvoiceData(data) {
+			//获取发票信息
+			this.confirmParam.orderInvoice = data
+		},
+		handleClauseData(clauseId) {
+			// 条款Id
+			this.confirmParam.payInfo.clauseId = parseInt(clauseId)
+		},
+		handleChoiceaCouponData(data) {
+			// 勾选使用优惠券
+			console.log('优惠券信息', data)
+			this.couponAmount = data.couponAmount
+			this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+			this.confirmParam.clubCouponId = data.clubCouponId
+			this.attributePallPrice()
+		},
+		handleClubVisibleData(data) {
+			// 订单对机构是否可见
+			console.log('对机构是否可见', data)
+			this.confirmParam.orderSeen = Number(data)
+		},
+		orderSubmitMit() {
+			//提交订单
+			if (this.confirmParam.addressId == '') {
+				this.$util.msg('请先添加收货地址~', 2000)
+				return
+			}
+			this.SellerCreateOrderSubmit()
+			// if (this.confirmParam.payInfo.rebateFlag === 2) {
+			// 	if (this.rebateFee == 0) {
+			// 		this.$util.msg('请输入返佣服务费', 2000)
+			// 		return
+			// 	}
+			// 	this.confirmParam.payInfo.rebateFee = Number(this.rebateFee).toFixed(2)
+			// }
+			// this.modal = true
+			// this.contentModalText = '请仔细确认订单是否为返佣订单后再提交订单'
+		},
+		SellerCreateOrderSubmit() {
+			//提交订单
+			if (this.isSubLoading) {
+				return
+			}
+			this.confirmParam.orderInfo = this.goodsData.map(el => {
+				let productInfo = []
+				el.cartList.forEach(pros => {
+					productInfo.push({
+						skuId: pros.skuId,
+						productNum: pros.number,
+						presentNum: 0,
+						productType: pros.giftType
 					})
-					return {splitCode:el.splitCode,shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
 				})
-				this.confirmParam.payInfo.postage = parseInt(this.handleFreightData.postage).toFixed(2)
-				this.confirmParam.payInfo.postageFlag = parseInt(this.handleFreightData.postageFlag)
-				this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
-				this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
-				this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
-				this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
-				this.isSubLoading = true	
-				this.hanldeOrderSubmit(this.confirmParam)
-			},
-			hanldeOrderSubmit(params){// 提交订单
-				this.SellerService.SellerCreateOrderSubmit(params).then(response =>{
-					const data = response.data
-					if(data.code === 1){
-						this.$util.msg('支付成功',2000,true,'success')
-						setTimeout(() =>{
-							this.isSubLoading = false
-							this.$api.redirectTo(`/pages/seller/order/order-details?type=cash&orderId=${data.orderId}&userId=${this.postageParam.userId}`)
-						},2000)
-					}else{
-						this.$util.msg('订单提交成功',2000,true,'success')
-						setTimeout(()=>{
-							this.isSubLoading = false
-							this.$api.redirectTo(`/pages/seller/order/order-details?type=cash&orderId=${data.orderId}&userId=${this.postageParam.userId}`)
-						},2000)
-					}
-				}).catch(error =>{
-					this.isSubLoading = false
-					this.handleError(error)
-				})
-			},
-			handleError(data){// 提交订单异常处理
-				this.formatConfirmParam()
-				const buttonMap = {
-						1:{
-							contentModalText :  '订单内存在械字号三类商品,需要拥有医疗执业许可证的医美机构才能购买。建议升级医美机构后再下单,否则会导致订单退款或影响发货。',
-							modalButton :  [
-								{ text: '取消',  type: 'gray', plain: true },
-								{ text: '继续提交', customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)' },plain: false }
-							]
-						}
+				return {
+					splitCode: el.splitCode,
+					shopId: el.shopId,
+					note: el.note ? el.note : '',
+					postage: parseInt(el.postage).toFixed(2),
+					postageFlag: parseInt(el.handlePostageFlag),
+					isColdChina: el.isColdChina ? 1 : 0,
+					productInfo: productInfo
 				}
-				if(data.code === -6){// 非医美机构下三类商品订单
-					this.modal = true
-					this.showModalstauts = 2
-					this.contentModalText = buttonMap[1].contentModalText
-					this.modalButton= buttonMap[1].modalButton
-				}else{
-					this.$util.msg(error.msg,3000)
+			})
+			this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
+			this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
+			this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
+			this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
+			this.isSubLoading = true
+			this.hanldeOrderSubmit(this.confirmParam)
+		},
+		// 提交订单
+		async hanldeOrderSubmit(params) {
+			try {
+				const res = await this.SellerService.SellerCreateOrderSubmit(params)
+				const data = res.data
+				if (data.code === 1) {
+					this.$util.msg('支付成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.isSubLoading = false
+						this.$api.redirectTo('/pages/seller/order/order-list?listType=0')
+					}, 2000)
+				} else {
+					this.$util.msg('订单提交成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.isSubLoading = false
+						this.$api.redirectTo('/pages/seller/order/order-list?listType=0')
+					}, 2000)
 				}
-			},
-			formatConfirmParam(){// 还原提交订单参数格式
-				this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo)
-				this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
-				this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
-			},
-			handleRebateFlag(){// 普通订单返佣
-				let self = this
-				uni.showActionSheet({
-					itemList: ['返佣订单', '普通订单,存在返佣服务费','否'],
-					success: (e) => {
-						switch(e.tapIndex){
-							case 0:
-								self.confirmParam.payInfo.rebateFlag = 1
-								self.rebateFeeText = '返佣订单'
-								break
-							case 1:
-								self.confirmParam.payInfo.rebateFlag = 2
-								self.rebateFeeText = '普通订单,存在返佣服务费'
-								break
-							case 2:
-								self.confirmParam.payInfo.rebateFlag = 0
-								self.rebateFeeText = '否'
-								break
+			} catch (error) {
+				this.isSubLoading = false
+				this.handleError(error)
+			}
+		},
+		handleError(data) {
+			// 提交订单异常处理
+			this.formatConfirmParam()
+			const buttonMap = {
+				1: {
+					contentModalText:
+						'订单内存在械字号三类商品,需要拥有医疗执业许可证的医美机构才能购买。建议升级医美机构后再下单,否则会导致订单退款或影响发货。',
+					modalButton: [
+						{ text: '取消', type: 'gray', plain: true },
+						{
+							text: '继续提交',
+							customStyle: { color: '#fff', bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)' },
+							plain: false
 						}
-					}
-				})
-				if(this.confirmParam.payInfo.rebateFlag ===1){
-					this.confirmParam.payInfo.balancePayFlag = 0
-					this.couponAmount = 0
-					this.confirmParam.clubCouponId = 0
-					this.confirmParam.orderSeen = 2
-					this.$refs.clubVisible.orderVisibleText = '不可见'
-					this.$refs.clubVisible.current = 1
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-					this.$refs.coupon.coupon.couponAmount = 0
-					this.$refs.freight.infoData(this.freightData)
-					this.$refs.freight.freightData  = this.freightData
-					this.handleFreightData = this.freightData
-				}else{
-					this.confirmParam.orderSeen = 1
-					this.$refs.clubVisible.orderVisibleText = '可见'
-					if(this.couponList.length>0){
-						this.confirmParam.clubCouponId = this.couponList[0].clubCouponId 
-						this.$refs.coupon.coupon.couponAmount = this.couponAmount = this.couponList[0].couponAmount
-					}
-					this.totalDiscountAmount = this.reducedPrice + this.couponAmount 
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+					]
 				}
-			},
-			handleClick(e){
-				//确认提交
-				if (e.index == 1) {
-					if(this.showModalstauts == 2){
-						this.confirmParam.orderMiniType = 2
-						this.SellerCreateOrderSubmit()
-					}else{
-						this.SellerCreateOrderSubmit()
+			}
+			if (data.code === -6) {
+				// 非医美机构下三类商品订单
+				this.modal = true
+				this.showModalstauts = 2
+				this.contentModalText = buttonMap[1].contentModalText
+				this.modalButton = buttonMap[1].modalButton
+			} else {
+				this.$util.msg(data.msg, 3000)
+			}
+		},
+		formatConfirmParam() {
+			// 还原提交订单参数格式
+			this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo)
+			this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
+			this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
+		},
+		handleRebateFlag() {
+			// 普通订单返佣
+			let self = this
+			uni.showActionSheet({
+				itemList: ['返佣订单', '普通订单,存在返佣服务费', '否'],
+				success: e => {
+					switch (e.tapIndex) {
+						case 0:
+							self.confirmParam.payInfo.rebateFlag = 1
+							self.rebateFeeText = '返佣订单'
+							break
+						case 1:
+							self.confirmParam.payInfo.rebateFlag = 2
+							self.rebateFeeText = '普通订单,存在返佣服务费'
+							break
+						case 2:
+							self.confirmParam.payInfo.rebateFlag = 0
+							self.rebateFeeText = '否'
+							break
 					}
 				}
-				this.confirmParam.orderMiniType = 0
-				this.modal = false
-			},
-			handleSecondFlag(){// 二手订单勾选返佣
-				this.rebatecheck = !this.rebatecheck
-				if(this.rebatecheck){
-					this.ischecked = false
-					this.confirmParam.payInfo.rebateFlag=1
-					this.confirmParam.payInfo.balancePayFlag = 0
-					this.confirmParam.clubCouponId = 0
-					this.confirmParam.orderSeen = 2
-					this.$refs.clubVisible.orderVisibleText = '不可见'
-					this.$refs.clubVisible.current = 1
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
-					this.$refs.freight.infoData(this.freightData)
-					this.$refs.freight.freightData  = this.freightData
-					this.handleFreightData = this.freightData
-				}else{
-					this.confirmParam.orderSeen = 1
-					this.$refs.clubVisible.orderVisibleText = '可见'
-					this.confirmParam.payInfo.rebateFlag=0
-					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+			})
+			if (this.confirmParam.payInfo.rebateFlag === 1) {
+				this.confirmParam.payInfo.balancePayFlag = 0
+				this.couponAmount = 0
+				this.confirmParam.clubCouponId = 0
+				this.confirmParam.orderSeen = 2
+				this.$refs.clubVisible.orderVisibleText = '不可见'
+				this.$refs.clubVisible.current = 1
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+				this.$refs.coupon.coupon.couponAmount = 0
+				this.$refs.freight.infoData(this.freightData)
+				this.$refs.freight.freightData = this.freightData
+				this.handleFreightData = this.freightData
+			} else {
+				this.confirmParam.orderSeen = 1
+				this.$refs.clubVisible.orderVisibleText = '可见'
+				if (this.couponList.length > 0) {
+					this.confirmParam.clubCouponId = this.couponList[0].clubCouponId
+					this.$refs.coupon.coupon.couponAmount = this.couponAmount = this.couponList[0].couponAmount
 				}
-			},
-			handFreightAlertShow(){//显示邮费弹窗
-				this.isfreightTip = true
-			},
-			handleClickCancel(){// 关闭优惠券弹窗
-				this.isCouponModel = false
-				this.getInitCrearOrder()
-			},
-			hideFreight(){//关闭邮费弹窗
-				this.isfreightTip = false
-			},
-			hideMobel() {
-				this.modal = false
-			},
+				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+			}
+		},
+		handleClick(e) {
+			//确认提交
+			if (e.index == 1) {
+				if (this.showModalstauts == 2) {
+					this.confirmParam.orderMiniType = 2
+					this.SellerCreateOrderSubmit()
+				} else {
+					this.SellerCreateOrderSubmit()
+				}
+			}
+			this.confirmParam.orderMiniType = 0
+			this.modal = false
+		},
+		handleSecondFlag() {
+			// 二手订单勾选返佣
+			this.rebatecheck = !this.rebatecheck
+			if (this.rebatecheck) {
+				this.ischecked = false
+				this.confirmParam.payInfo.rebateFlag = 1
+				this.confirmParam.payInfo.balancePayFlag = 0
+				this.confirmParam.clubCouponId = 0
+				this.confirmParam.orderSeen = 2
+				this.$refs.clubVisible.orderVisibleText = '不可见'
+				this.$refs.clubVisible.current = 1
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+				this.$refs.freight.infoData(this.freightData)
+				this.$refs.freight.freightData = this.freightData
+				this.handleFreightData = this.freightData
+			} else {
+				this.confirmParam.orderSeen = 1
+				this.$refs.clubVisible.orderVisibleText = '可见'
+				this.confirmParam.payInfo.rebateFlag = 0
+				this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage)
+			}
+		},
+		handFreightAlertShow() {
+			//显示邮费弹窗
+			this.isfreightTip = true
+		},
+		handleClickCancel() {
+			// 关闭优惠券弹窗
+			this.isCouponModel = false
+			this.getInitCrearOrder()
 		},
-		onShow() {
-			let pages = getCurrentPages()
-			let currPage = pages[pages.length-1]
-			if(currPage.data.select =='select'){
-				this.isAddress = true
-				let SelectData = uni.getStorageSync('selectAddress')
-				this.confirmParam.addressId = SelectData.addressId
-				this.postageParam.townId = SelectData.townId 
-				this.addressData = SelectData
-				this.getFreightData()
-			}else{
-				this.getAddressData()
+		hideFreight() {
+			//关闭邮费弹窗
+			this.isfreightTip = false
+		},
+		hideMobel() {
+			this.modal = false
+		}
+	},
+	onShow() {
+		let pages = getCurrentPages()
+		let currPage = pages[pages.length - 1]
+		if (currPage.data.select == 'select') {
+			let address = uni.getStorageSync('selectAddress')
+			this.confirmParam.addressId = address.addressId
+			this.cartParam.townId = address.townId
+			this.productParam.townId = address.townId
+			this.addressData = address
+			this.ischecked = false
+			this.isRequest = false
+			if (this.handleComType === 1) {
+				//立即都买提交
+				this.getInitProdcutCrearOrder()
+			}
+			if (this.handleComType === 2) {
+				//购物车提交
+				this.getInitCrearOrder()
 			}
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	page {
-		height: auto;
-		background:#F7F7F7;
-	}
-	.btn-hover{
-		background: #FFFFFF;
+page {
+	height: auto;
+	background: #f7f7f7;
+}
+.btn-hover {
+	background: #ffffff;
+}
+.animation {
+	/* transition: transform 0.3s ease;*/
+	transition-property: transform;
+	transition-duration: 0.3s;
+	transition-timing-function: ease;
+}
+.invoice-freight {
+	width: 702rpx;
+	padding: 0 24rpx;
+	height: 86rpx;
+	line-height: 86rpx;
+	font-size: $font-size-28;
+	color: $text-color;
+	background: #ffffff;
+	float: left;
+	font-weight: bold;
+	.freight-left {
+		float: left;
+		.icon-yunfeishuoming {
+			height: 100%;
+			padding: 0 15rpx;
+			color: $color-system;
+			font-weight: normal;
+		}
 	}
-	.animation{
-		/* transition: transform 0.3s ease;*/
-		transition-property: transform;
-		transition-duration: 0.3s;
-		transition-timing-function: ease;
+	.freight-right {
+		float: right;
+		color: #2a81ff;
 	}
-	.invoice-freight{
-		width: 702rpx;
-		padding: 0 24rpx;
+}
+.invoice-balance {
+	width: 702rpx;
+	height: auto;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	margin-bottom: 24rpx;
+	.balabce-t {
+		width: 100%;
 		height: 86rpx;
 		line-height: 86rpx;
 		font-size: $font-size-28;
 		color: $text-color;
-		background: #FFFFFF;
 		float: left;
-		font-weight: bold;
-		.freight-left{
+		.balabce-t-le {
 			float: left;
-			.icon-yunfeishuoming{
-				height: 100%;
-				padding: 0 15rpx;
-				color: $color-system;
-				font-weight: normal;
-			}
+			font-weight: bold;
 		}
-		.freight-right{
+		.balabce-t-ri {
 			float: right;
-			color: #2A81FF;
-		}
-	}
-	.invoice-balance{
-		width: 702rpx;
-		height: auto;
-		padding:0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		margin-bottom: 24rpx;
-		.balabce-t{
-			width: 100%;
-			height: 86rpx;
-			line-height: 86rpx;
-			font-size: $font-size-28;
-			color: $text-color;
-			float: left;
-			.balabce-t-le{
+			display: flex;
+			align-items: center;
+			.money {
+				display: flex;
 				float: left;
-				font-weight: bold;
 			}
-			.balabce-t-ri{
-				float: right;
+			.checkbox-box {
 				display: flex;
-				align-items: center;
-				.money{
-					display: flex;
-					float: left;
-				}
-				.checkbox-box{
-					display: flex;
-					width: 60rpx;
-					float: left;
-					height: 100%;
-					font-size: $font-size-24;
-					.checkbox{
-						width: 40rpx;
-						text-align: right;
-						box-sizing: border-box;
-						text-align: center;
-						text-decoration: none;
-						border-radius: 0;
-						-webkit-tap-highlight-color: transparent;
-						overflow: hidden;
-						color: $color-system;
-						padding: 5rpx;
-					}
-				}	
-			}
-		}
-		.balabce-b{
-			width: 100%;	
-			float: left;
-			overflow: hidden;
-			.balabce-b-text{
-				width: 100%;
-				line-height: 58rpx;
+				width: 60rpx;
+				float: left;
+				height: 100%;
 				font-size: $font-size-24;
-				color: #FF2A2A;
-				text-align: right;
-				float: right;
+				.checkbox {
+					width: 40rpx;
+					text-align: right;
+					box-sizing: border-box;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $color-system;
+					padding: 5rpx;
+				}
 			}
-			&.balabce-b--hide {
-				padding: 0 0;
-				height: 0px;
-				line-height: 0px;
-			}	
 		}
 	}
-	.footer{
-		position: fixed;
-		left: 0;
-		bottom: 0;
-		display: flex;
-		align-items: center;
+	.balabce-b {
 		width: 100%;
-		height: 110rpx;
-		line-height: 110rpx;
-		justify-content: space-between;
-		font-size: $font-size-28;
-		background-color: #FFFFFF;
-		z-index: 990;
-		color: $text-color;
-		.footer-le{
-			width:570rpx;
-			height:100%;
-			float: left;
+		float: left;
+		overflow: hidden;
+		.balabce-b-text {
+			width: 100%;
+			line-height: 58rpx;
+			font-size: $font-size-24;
+			color: #ff2a2a;
+			text-align: right;
+			float: right;
 		}
-		.footer-count{
-			float: left;
-			padding-left: 24rpx;
-			width:190rpx;
-			box-sizing: border-box;
-			font-size: $font-size-26;
+		&.balabce-b--hide {
+			padding: 0 0;
+			height: 0px;
+			line-height: 0px;
 		}
-		.footer-price{
-			width:370rpx;
-			float: right;
-			text-align: right;
+	}
+}
+.footer {
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	display: flex;
+	align-items: center;
+	width: 100%;
+	height: 110rpx;
+	line-height: 110rpx;
+	justify-content: space-between;
+	font-size: $font-size-28;
+	background-color: #ffffff;
+	z-index: 990;
+	color: $text-color;
+	.footer-le {
+		width: 570rpx;
+		height: 100%;
+		float: left;
+	}
+	.footer-count {
+		float: left;
+		padding-left: 24rpx;
+		width: 190rpx;
+		box-sizing: border-box;
+		font-size: $font-size-26;
+	}
+	.footer-price {
+		width: 370rpx;
+		float: right;
+		text-align: right;
+		color: $text-color;
+		padding: 10rpx 20rpx 10rpx 0;
+		box-sizing: border-box;
+		.sum-none {
+			width: 100%;
+			height: 45rpx;
+			line-height: 45rpx;
 			color: $text-color;
-			padding: 10rpx 20rpx 10rpx 0;
-			box-sizing: border-box;
-			.sum-none{
-				width: 100%;
-				height: 45rpx;
-				line-height: 45rpx;
-				color: $text-color;
-				float: left;
-				text-align: right;
-				.money{
-					font-size: $font-size-26;
-					color: #999999;
-					text-decoration: line-through;
-				}
-				.money-sign{
-					font-size: $font-size-26;
-					color: #999999;
-					text-decoration: line-through;
-				}
-				.money-reduced{
-					margin-left: 10rpx;
-					font-size: $font-size-26;
-					color:$color-system;
-				}
+			float: left;
+			text-align: right;
+			.money {
+				font-size: $font-size-26;
+				color: #999999;
+				text-decoration: line-through;
 			}
-			.sum{
-				width: 100%;
-				height: 45rpx;
-				line-height: 45rpx;
-				float: left;
-				&.none{
-					height: 90rpx;
-					line-height: 90rpx;
-				}
-				.price{
-					font-size: $font-size-32;
-					color: #FF2A2A;
-				}
+			.money-sign {
+				font-size: $font-size-26;
+				color: #999999;
+				text-decoration: line-through;
 			}
-			
-		}
-		.footer-submit{
-			display:flex;
-			align-items:center;
-			justify-content: center;
-			width: 180rpx;
-			height: 100%;
-			box-sizing: border-box;
-			padding: 15rpx 5rpx;
-			.btn{
-				width: 100%;
-				height: 100%;
-				color: #FFFFFF;
-				background:linear-gradient(90deg, #FF9300 0%, #FF5B00 100%);
+			.money-reduced {
+				margin-left: 10rpx;
 				font-size: $font-size-26;
-				text-align: center;
-				line-height: 80rpx;
-				border-radius: 40rpx;
-				&.disabled{
-					background: #e4e8eb;
-					color: #999999;
-				}
+				color: $color-system;
 			}
 		}
-	}
-	.order-return{
-		width: 100%;
-		height: auto;
-		box-sizing: border-box;
-		padding: 0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin: 24rpx 0;
-		.order-return-main{
-			width:100%;
-			height: 86rpx;
-			line-height: 86rpx;
-			.label{
-				float: left;
-				font-weight: bold;
-				color: #333333;
-				font-size: $font-size-28;
+		.sum {
+			width: 100%;
+			height: 45rpx;
+			line-height: 45rpx;
+			float: left;
+			&.none {
+				height: 90rpx;
+				line-height: 90rpx;
 			}
-			.label-right{
-				float: right;
-				color: #2A81FF;
-				.text-l{
-					font-size: 28rpx;
-					font-weight: bold;
-					margin-right: 20rpx;
-				}
-				.icon-xiayibu{
-					line-height: 88rpx;
-					color: #999999;
-					font-weight: normal;
-				}
+			.price {
+				font-size: $font-size-32;
+				color: #ff2a2a;
 			}
-			
 		}
-		.order-return-input{
+	}
+	.footer-submit {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 180rpx;
+		height: 100%;
+		box-sizing: border-box;
+		padding: 15rpx 5rpx;
+		.btn {
 			width: 100%;
-			height: 86rpx;
-			padding-bottom: 20rpx;
-			box-sizing: border-box;
-			.input{
-				width: 100%;
-				height: 66rpx;
-				font-size: $font-size-26;
-				border: 1px solid #e1e1e1;
-				line-height: 66rpx;
-				color: #333333;
-				border-radius: 4rpx;
-				box-sizing: border-box;
-				padding: 0 20rpx;
+			height: 100%;
+			color: #ffffff;
+			background: linear-gradient(90deg, #ff9300 0%, #ff5b00 100%);
+			font-size: $font-size-26;
+			text-align: center;
+			line-height: 80rpx;
+			border-radius: 40rpx;
+			&.disabled {
+				background: #e4e8eb;
+				color: #999999;
 			}
 		}
 	}
-	.Rebate{
-		width: 702rpx;
-		height: auto;
-		padding: 0 24rpx;
-		background: #FFFFFF;
-		float: left;
-		margin-bottom: 24rpx;
-		margin-top: 24rpx;
+}
+.order-return {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin: 24rpx 0;
+	.order-return-main {
+		width: 100%;
+		height: 86rpx;
 		line-height: 86rpx;
-		.rebate-title{
+		.label {
 			float: left;
 			font-weight: bold;
 			color: #333333;
 			font-size: $font-size-28;
 		}
-		.iconfont{
+		.label-right {
 			float: right;
-			color: #b2b2b2;
-			font-size: 40rpx;
-			&.icon-yixuanze{
-				color: $color-system;
+			color: #2a81ff;
+			.text-l {
+				font-size: 28rpx;
+				font-weight: bold;
+				margin-right: 20rpx;
+			}
+			.icon-xiayibu {
+				line-height: 88rpx;
+				color: #999999;
+				font-weight: normal;
 			}
 		}
 	}
-	.coupon-content-model{
+	.order-return-input {
 		width: 100%;
-		height: 100%;
-		background: rgba(0,0,0,.5);
-		position: fixed;
+		height: 86rpx;
+		padding-bottom: 20rpx;
+		box-sizing: border-box;
+		.input {
+			width: 100%;
+			height: 66rpx;
+			font-size: $font-size-26;
+			border: 1px solid #e1e1e1;
+			line-height: 66rpx;
+			color: #333333;
+			border-radius: 4rpx;
+			box-sizing: border-box;
+			padding: 0 20rpx;
+		}
+	}
+}
+.Rebate {
+	width: 702rpx;
+	height: auto;
+	padding: 0 24rpx;
+	background: #ffffff;
+	float: left;
+	margin-bottom: 24rpx;
+	margin-top: 24rpx;
+	line-height: 86rpx;
+	.rebate-title {
+		float: left;
+		font-weight: bold;
+		color: #333333;
+		font-size: $font-size-28;
+	}
+	.iconfont {
+		float: right;
+		color: #b2b2b2;
+		font-size: 40rpx;
+		&.icon-yixuanze {
+			color: $color-system;
+		}
+	}
+}
+.coupon-content-model {
+	width: 100%;
+	height: 100%;
+	background: rgba(0, 0, 0, 0.5);
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 8888;
+	transition: all 0.4s;
+	.coupon-alert-content {
+		width: 600rpx;
+		height: 612rpx;
+		position: absolute;
 		top: 0;
 		left: 0;
-		z-index: 8888;
-		transition: all 0.4s;
-		.coupon-alert-content{
+		bottom: 0;
+		right: 0;
+		margin: auto;
+		box-sizing: border-box;
+		padding-top: 92rpx;
+		.coupon {
 			width: 600rpx;
-			height: 612rpx;
-			position: absolute;
-			top: 0;
-			left: 0;
-			bottom: 0;
-			right: 0;
-			margin: auto;
+			height: 522rpx;
+			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
+			background-size: cover;
 			box-sizing: border-box;
-			padding-top: 92rpx;
-			.coupon{
-				width: 600rpx;
-				height: 522rpx;
-				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
-				background-size: cover;
+			padding: 230rpx 40rpx 0 40rpx;
+			.coupon-list {
+				width: 100%;
+				height: 147rpx;
+				margin-bottom: 32rpx;
 				box-sizing: border-box;
-				padding: 230rpx 40rpx 0 40rpx;
-				.coupon-list{
-					width: 100%;
-					height: 147rpx;
-					margin-bottom: 32rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
+				background-size: cover;
+				position: relative;
+				.list-cell-tags {
+					display: inline-block;
+					padding: 0 10rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					background-color: #f94b4b;
+					color: #ffffff;
+					font-size: 18rpx;
+					border-radius: 16rpx 0 16rpx 0;
+					text-align: center;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.list-cell-le {
+					width: 154rpx;
+					height: 100%;
 					box-sizing: border-box;
-					background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
-					background-size: cover;
-					position: relative;
-					.list-cell-tags{
-						display: inline-block;
-						padding: 0 10rpx;
-						height: 32rpx;
-						line-height: 32rpx;
-						background-color: #f94b4b;
-						color: #FFFFFF;
-						font-size: 18rpx;
-						border-radius: 16rpx 0 16rpx 0;
+					padding: 30rpx 0;
+					float: left;
+					.coupon-maxMoney {
+						width: 100%;
+						height: 54rpx;
+						line-height: 54rpx;
+						font-size: 42rpx;
+						color: #f94b4b;
 						text-align: center;
-						position: absolute;
-						top: 0;
-						left: 0;
+						margin-top: 10rpx;
+						.small {
+							font-size: $font-size-20;
+						}
 					}
-					.list-cell-le{
-						width: 154rpx;
-						height: 100%;
-						box-sizing: border-box;
-						padding: 30rpx 0;
+					.coupon-minMoney {
+						width: 100%;
+						height: 28rpx;
 						float: left;
-						.coupon-maxMoney{
-							width: 100%;
-							height: 54rpx;
-							line-height: 54rpx;
-							font-size: 42rpx;
+						box-sizing: border-box;
+						padding-left: 24rpx;
+						.txt {
+							display: block;
+							height: 28rpx;
+							line-height: 28rpx;
+							font-size: 16rpx;
 							color: #f94b4b;
 							text-align: center;
-							margin-top: 10rpx;
-							.small{
-								font-size: $font-size-20;
-							}
-						}
-						.coupon-minMoney{
-							width: 100%;
-							height: 28rpx;
+							padding: 0 5rpx;
+							background-color: #fff1eb;
+							border-radius: 4rpx;
 							float: left;
-							box-sizing: border-box;
-							padding-left: 24rpx;
-							.txt{
-								display: block;
-								height: 28rpx;
-								line-height: 28rpx;
-								font-size: 16rpx;
-								color: #f94b4b;
-								text-align: center;
-								padding: 0 5rpx;
-								background-color: #fff1eb;
-								border-radius: 4rpx;
-								float: left;
-							}
 						}
 					}
-					.list-cell-ri{
-						width: 366rpx;
-						height: 100%;
-						box-sizing: border-box;
-						padding:30rpx 20rpx;
+				}
+				.list-cell-ri {
+					width: 366rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 20rpx;
+					float: left;
+					.list-cell-top {
+						width: 100%;
+						height: 64rpx;
+						line-height: 64rpx;
+						font-size: $font-size-26;
+						color: #333333;
 						float: left;
-						.list-cell-top{
-							width: 100%;
-							height: 64rpx;
-							line-height: 64rpx;
-							font-size: $font-size-26;
-							color: #333333;
-							float: left;
-							text-overflow:ellipsis;
-							display: -webkit-box;
-							word-break: break-all;
-							-webkit-box-orient: vertical;
-							-webkit-line-clamp: 1;
-							overflow: hidden;
-						}
-						.list-cell-time{
-							width: 100%;
-							height: 28rpx;
-							line-height: 28rpx;
-							text-align: left;
-							font-size: $font-size-20;
-							color: #999999;
-						}
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
+						overflow: hidden;
+					}
+					.list-cell-time {
+						width: 100%;
+						height: 28rpx;
+						line-height: 28rpx;
+						text-align: left;
+						font-size: $font-size-20;
+						color: #999999;
 					}
 				}
-				.coupon-btn{
-					width: 100%;
-					height: 78rpx;
-					background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
-					background-size: cover;
-					line-height: 78rpx;
-					text-align: center;
-					color: #FFFFFF;
-					font-size: $font-size-36;
-				}
+			}
+			.coupon-btn {
+				width: 100%;
+				height: 78rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
+				background-size: cover;
+				line-height: 78rpx;
+				text-align: center;
+				color: #ffffff;
+				font-size: $font-size-36;
 			}
 		}
 	}
+}
 </style>

+ 94 - 0
pages/seller/order/mixins/conMixins.js

@@ -0,0 +1,94 @@
+import Vue from 'vue'
+const conMixins = {
+    data() {
+        return {
+            handleComType:0,//跳转类型
+            cartParam: {
+                // 购物车立即结算确认订单参数
+                townId:'',          //地址ID
+                skuIds:'',
+                serviceProviderId: 0, // 协销Id
+                clubId: 0 // 机构Id
+            },
+            productParam: {
+                // 商品立即购买确认订单参数
+                townId:'',          //地址ID
+                productCount: 0, // 商品数量
+                productId: 0, // 商品Id
+                serviceProviderId: 0, // 协销Id
+                clubId: 0 // 机构Id
+            },
+            totalCount: 1, // 订单提交总数量
+            reducedPrice: 0, // 满减金额
+            couponAmount: 0, // 优惠券金额
+            allPrice: 0.0, // 订单总金额
+            userMoney: 0.0, // 显示可使用余额
+            deductMoney: 0.0, // 显示已使用的余额
+            orderShouldPayFee:0 //显示最终订单金额
+        }
+    },
+    computed: {
+        // 计算订单最终支付金额 = 供应商下的合计金额之和
+        orderTotalPrice(){
+            let totalPrice = 0
+            this.goodsData.forEach(el =>{
+                totalPrice += el.totalPrice
+            })
+            console.log('订单最终金额',totalPrice)
+            return totalPrice - this.couponAmount
+        },
+        // 显示勾选后的剩余抵扣 = 用户总余额-当前使用金额
+        surplusMoney(){
+			 console.log('剩余抵扣', (this.userMoney - this.deductMoney))
+            return this.userMoney - this.deductMoney
+        },
+        // 共减 = 减金额 + 优惠券金额
+        totalDiscountAmount(){
+			 console.log('共减金额', (this.reducedPrice + this.couponAmount))
+            return this.reducedPrice + this.couponAmount
+        }
+    },
+    methods: {
+        //勾选使用余额
+        checkedBalabce() {
+            if (this.userMoney > 0) {
+                this.ischecked = !this.ischecked
+                if (this.ischecked) {
+                    this.confirmParam.payInfo.balancePayFlag = 1
+                    this.attributePallPrice()
+                } else {
+                    this.confirmParam.payInfo.balancePayFlag = 0
+                    this.attributePallPrice()
+                }
+                console.log('勾选使用余额最终订单支付金额', this.orderShouldPayFee)
+            }
+        },
+        // 是否勾选冷链费计算
+        handleChangeChina(supplier){
+        	this.attributePallPrice()
+        },
+        // 修改供应商运费类型
+        handleChangePostage(supplier){
+            this.attributePallPrice()
+        },
+        // 计算最终订单支付金额
+        attributePallPrice() {
+            if (this.ischecked) {// 是否勾选余额抵扣
+                if (this.userMoney >= this.orderTotalPrice) {
+                    this.orderShouldPayFee =0.0
+                    this.deductMoney = this.orderTotalPrice// 当前使用金额等于订单金额
+                } else {
+                    this.orderShouldPayFee = this.orderTotalPrice - this.userMoney // 订单最终支付金额等于订单金额-账户余额
+                    this.deductMoney = this.userMoney // 当前使用金额等于总余额
+                }
+                console.log('余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            } else {
+                this.orderShouldPayFee = this.orderTotalPrice
+                this.deductMoney = 0 // 当前使用
+                console.log('未余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            }
+        }
+    }
+}
+
+export default conMixins

+ 168 - 0
pages/seller/order/mixins/orderMixins.js

@@ -0,0 +1,168 @@
+import Vue from 'vue'
+const orderMixins = {
+    data() {
+        return {
+            btnClubUserId: 0,
+            handleShopOrderId: 0, //点击按钮传入的的订单ID
+            handleModelEven: 0,
+            modal: false,
+            contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+            modalButton: [
+            	{
+            		text: '取消',
+            		type: 'gray',
+            		plain: true //是否空心
+            	},
+            	{
+            		text: '确定',
+            		customStyle: {
+            			color: '#fff',
+            			bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
+            		},
+            		plain: false
+            	}
+            ]
+        }
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        },
+        statusFilters(value) {
+            //处理订单状态显示
+            const map = {
+                0: '待确认',
+                2: '交易完成',
+                4: '已关闭',
+                5: '交易全退',
+                6: '交易全退',
+                11: '待付款待发货',
+                12: '待付款部分发货',
+                13: '待付款已发货',
+                21: '部分付款待发货',
+                22: '部分付款部分发货',
+                23: '部分付款已发货',
+                31: '已付款待发货',
+                32: '已付款部分发货',
+                33: '已付款已发货'
+            }
+            return map[value]
+        }
+    },
+    computed: {
+       
+    },
+    methods: {
+        //确认操作
+        handleClick(e) {
+            if (e.index == 1) {
+                switch (this.handleModelEven) {
+                case 1: //取消订单
+                    this.cancelOrder(this.handleShopOrderId)
+                    break
+                case 2: //删除订单
+                    this.deleteOrder(this.handleShopOrderId)
+                    break
+                case 3: //确认订单
+                    this.affirmOrder(this.handleShopOrderId)
+                    break
+                }
+            }
+            this.modal = false
+        },
+        //取消订单
+        async cancelOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.CancelOrder({ shopOrderId: shopOrderId, userIdentity: 1 })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        //删除订单
+        async deleteOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.DeleteOrder({ shopOrderId: shopOrderId })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        //确认订单
+        async affirmOrder(shopOrderId) {
+        	try {
+        		const res = await this.OrderService.AffirmOrder({ shopOrderId: shopOrderId })
+        		this.$util.msg(res.msg, 2000, true, 'success')
+        		setTimeout(() => {
+        			this.getOrderDatainit(this.currentTab)
+        		}, 2000)
+        	} catch (error) {
+        		this.$util.msg(error.msg, 2000)
+        	}
+        },
+        // 再来一单
+        async handOrderAgain(shopOrderId) {
+        	try {
+        		const res = await this.SellerService.SellerCreateOrderAgain({
+        			confirmFlag: 0,
+        			shopOrderId: shopOrderId,
+        			serviceProviderId: this.listQuery.serviceProviderId
+        		})
+        		const data = res.data
+        		this.$api.setStorage('orderUserInfo', {
+        			clubId: data.clubId,
+        			againBuyProductIds: data.productIds,
+        			userId: data.userId
+        		})
+        		this.$api.navigateTo('/pages/seller/cart/cart')
+        	} catch (error) {
+        		if (error.code == -3) {
+        			this.showAgan = true
+        			this.promptitle = error.msg
+        			this.failList = error.data
+        		} else if (error.code == -2) {
+        			this.$util.modal('', error.msg, '确定', '', false, () => {})
+        		} else {
+        			this.$util.msg(error.msg, 2000)
+        		}
+        	}
+        },
+        // 再来一单弹窗
+        async handleAddAgian() {
+        	try {
+        		await this.SellerService.SellerCreateOrderAgain({
+        			confirmFlag: 1,
+        			shopOrderId: this.handleShopOrderId,
+        			serviceProviderId: this.listQuery.serviceProviderId
+        		})
+        		this.$api.navigateTo('/pages/seller/cart/cart')
+        		this.showAgan = false
+        	} 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?shopOrderId=${this.handleShopOrderId}&userId=${
+                    this.btnClubUserId
+                }&serviceProviderId=${this.listQuery.serviceProviderId}`,
+                imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+            }
+        }
+    }
+}
+
+export default orderMixins

+ 38 - 258
pages/seller/order/order-club-details.vue

@@ -1,12 +1,7 @@
 <template>
 	<view class="container details clearfix" :style="{ paddingBottom: isIphoneX ? 130 + 68 + 'rpx' : '130rpx' }">
 		<!-- 自定义返回 -->
-		<header-back
-			:systeminfo="systeminfo"
-			:navbar-data="nvabarData"
-			:headerBtnPosi="headerBtnPosi"
-			:isShare="isOrderShare"
-		></header-back>
+		<header-back :systeminfo="systeminfo" :navbar-data="nvabarData" :headerBtnPosi="headerBtnPosi" :isShare="isOrderShare" />
 		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
 				<view class="view-type">{{ information.status | TextFormat }}</view>
@@ -27,37 +22,21 @@
 				>
 			</view>
 			<!-- 地址选择 -->
-			<order-address
-				ref="orderAddress"
-				v-if="isRequest && !rechargeGoods"
-				:addressData="addressData"
-			></order-address>
+			<cm-address-temp ref="orderAddress" v-if="isRequest && !rechargeGoods" :addressData="addressData" /> 
+			<!-- 特殊商品退货须知 -->
+			<view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
 			<!-- 商品 -->
-			<goods-list
-				ref="goods"
-				v-if="isRequest"
-				:shopOrderData="shopOrderData"
-				:information="information"
-				@popupClick="hanldePopupFn"
-			></goods-list>
+			<cm-goods-temp ref="goods" v-if="isRequest" :shopOrderData="shopOrderData" :information="information" @popupClick="hanldePopupFn" />
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<cm-order-temp ref="information" v-if="isRequest" :information="information"/>
 			<!-- 发票信息 -->
-			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<cm-invice-temp ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
-			<payment-record
-				ref="payment"
-				v-if="isRequest"
-				:discernReceiptList="discernReceiptList"
-				:receiptAmount="receiptAmount"
-			></payment-record>
+			<cm-payment-temp ref="payment" v-if="isRequest" :discernReceiptList="discernReceiptList" :receiptAmount="receiptAmount" />
 			<!-- 退款记录 -->
-			<refund-record
-				ref="refund"
-				v-if="!isManage"
-				:returnedPurchaseList="returnedPurchaseList"
-				:returnedPurchaseFee="returnedPurchaseFee"
-			></refund-record>
+			<cm-refund-temp ref="refund" v-if="isRequest" :returnedPurchaseList="returnedPurchaseList" :returnedPurchaseFee="returnedPurchaseFee" />
+			<!-- 支付凭证记录 -->
+			<cm-voucher-temp ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
 			<view
 				class="clause"
 				v-if="information.secondHandOrderFlag != 1"
@@ -68,82 +47,41 @@
 					clauseData.name
 				}}</label>
 			</view>
-			<!-- 底部button -->
-<!-- 			<order-button
-				ref="orderButton"
-				v-if="isRequest"
-				:status="btnStatus"
-				:order="information"
-				:rechargeGoods="rechargeGoods"
-				:ableUserMoney="ableUserMoney"
-				:shareCode="shareCode"
-				:serviceProviderId="serviceProviderId"
-				:secondHandOrderFlag="information.secondHandOrderFlag"
-				@buttonConfirm="handButtonConfirm"
-			>
-			</order-button> -->
 		</view>
-		<!-- 付款弹窗 -->
-		<order-model
-			v-if="isPayModel"
-			:payModelData="payModelData"
-			:modelType="modelType"
-			@paymentConfirm="hanldPaymentConfirm"
-		/>
 		<!-- 分享弹窗 -->
-		<share-alert :orderId="orderId" 
-					 :shareType="isShareType"
-					 v-if="isShareModal" 
-					 @shareConfirm="onShareAppMessage"> 
-		</share-alert>
+		<cm-share-popup :orderId="orderId" :shareType="isShareType" v-if="isShareModal" @shareConfirm="onShareAppMessage" />
 		<!-- 促销活动弹窗 -->
-		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
-		<!-- 再来一单 -->
-		<view class="aganBj" v-show="showAgan">
-			<view class="alertAgan">
-				<text class="title">{{ promptitle }}</text>
-				<view class="goods">
-					<view class="list" v-for="(item, index) in failList" :key="index">
-						<image class="image-left" :src="item.image"></image>
-						<view class="name-right">{{ item.name }}</view>
-					</view>
-				</view>
-				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
-				</view>
-			</view>
-		</view>
+		<cm-promote-popup :Promotion="handlerPros" :popupShow="popupShow" />
 	</view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import orderAddress from '../components/cm-seller-address.vue' //地址信息
-import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
-import invoiceTent from '@/components/cm-module/orderDetails/invoiceTent' //发票信息
-import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
-import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord' //支付记录
-import refundRecord from '@/components/cm-module/orderDetails/refundRecord' //退款记录
-import orderButton from './components/sellerDetaileButton' //底部按钮
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
-import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+import cmAddressTemp from './components/details/cm-address-temp' //地址信息
+import cmGoodsTemp from './components/details/cm-goods-temp' //商品列表
+import cmOrderTemp from './components/details/cm-order-temp' //订单信息
+import cmInviceTemp from './components/details/cm-invice-temp' //发票信息
+import cmPaymentTemp from './components/details/cm-payment-temp' //支付记录
+import cmRefundTemp from './components/details/cm-refund-temp' //退款记录
+import cmVoucherTemp from './components/details/cm-voucher-temp' //退款记录
+import cmDetailsButton from './components/cm-details-button' //底部按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import cmPromotePopup from './components/details/cm-promote-popup' //促销活动弹窗
 
 export default {
 	components: {
 		headerBack,
-		orderInformation,
-		orderAddress,
-		invoiceTent,
-		goodsList,
-		paymentRecord,
-		refundRecord,
-		orderButton,
-		shareAlert,
-		orderModel,
-		activiPopup
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmOrderTemp,
+		cmInviceTemp,
+		cmPaymentTemp,
+		cmRefundTemp,
+		cmVoucherTemp,
+		cmDetailsButton,
+		cmSharePopup,
+		cmPromotePopup
 	},
 	data() {
 		return {
@@ -219,11 +157,9 @@ export default {
 			let HtmlText,
 				typeTextObject = {
 					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
+					2: '交易完成',
+					4: '已关闭',
+					5: '交易全退',
 					11: '待付款待发货',
 					12: '待付款部分发货',
 					13: '待付款已发货',
@@ -232,8 +168,7 @@ export default {
 					23: '部分付款已发货',
 					31: '已付款待发货',
 					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
+					33: '已付款已发货'
 				}
 
 			Object.keys(typeTextObject).forEach(key => {
@@ -285,162 +220,7 @@ export default {
 					})
 				})
 		},
-		handButtonConfirm(data) {
-			//监听点击时间的按钮类型并执行...
-			this.handShowAlert(data)
-		},
-		handShowAlert(data) {
-			//判断点击的按钮类型并执行...
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele()
-					break
-				case 'cancel':
-					this.handCenceConfirm()
-					break
-				case 'confirm':
-					this.handOrderConfirm(data)
-					break
-				case 'balance':
-					this.getOrderPaymentValidation(data)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(data) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		hanldPaymentConfirm(data) {
-			//监听余额抵扣按钮
-			switch (data.type) {
-				case 3:
-					this.OrderService.OrderBalanceDeduction({ orderId: this.orderId })
-						.then(response => {
-							this.$util.msg('余额抵扣成功', 2000)
-							this.initOrderDetaileData()
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-					break
-			}
-		},
-		getOrderPaymentValidation(data) {
-			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
-				.then(response => {
-					let data = this.payModelData = response.data
-					if(data.balanceFlag == 0){// 0可以走余额抵扣,1不能走余额抵扣
-						if (data.code == -1) {
-							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
-						} else {
-							this.isPayModel = true
-							this.modelType = 3
-						}
-					}else{
-						this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		handOrderDetele() {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							if (this.shareType === 'share') {
-								this.$api.navigateTo('/pages/seller/index/index')
-							} else {
-								this.$api.navigateTo(
-									`/pages/seller/order/order-list?type=detele&listType=${this.listType}`
-								)
-							}
-						}, 500)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm() {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: this.orderId ,userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
+		
 		hanldePopupFn(data) {
 			//监听活动内容
 			this.popupShow = true

+ 303 - 277
pages/seller/order/order-details.vue

@@ -6,64 +6,69 @@
 			:navbar-data="nvabarData"
 			:headerBtnPosi="headerBtnPosi"
 			:isShare="isOrderShare"
-		></header-back>
+		/>
+		<tui-skeleton
+			v-if="!skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
 		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
-				<view class="view-type">{{ information.status | TextFormat }}</view>
+				<view class="view-type">{{ orderInfo.status | statusFilters }}</view>
 				<view class="status-visible">
-					{{ information.orderSeen == 2 ? '订单对机构不可见' : '订单对机构可见' }}
+					{{ orderInfo.orderSeen == 2 ? '订单对机构不可见' : '订单对机构可见' }}
 				</view>
-				<view class="Rebate " v-if="information.rebateFlag == 1">返佣</view>
-				<text class="bage-buss btn" v-if="information.orderSubmitType == 3 || information.orderSubmitType == 4"
+				<view class="Rebate " v-if="orderInfo.rebateFlag == 1">返佣</view>
+				<text class="bage-buss btn" v-if="orderInfo.orderSubmitType == 3 || orderInfo.orderSubmitType == 4"
 					>协销</text
 				>
 				<text
 					class="bage-auto btn"
 					v-if="
-						information.orderSubmitType == 0 ||
-							information.orderSubmitType == 1 ||
-							information.orderSubmitType == 2
+						orderInfo.orderSubmitType == 0 ||
+							orderInfo.orderSubmitType == 1 ||
+							orderInfo.orderSubmitType == 2
 					"
 					>自主</text
 				>
 			</view>
 			<!-- 地址选择 -->
-			<order-address
-				ref="orderAddress"
-				v-if="isRequest && !rechargeGoods"
-				:addressData="addressData"
-			></order-address> 
-            <!-- 特殊商品退货须知 -->
-            <view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
+			<cm-address-temp ref="orderAddress" v-if="skeletonShow && !rechargeGoods" :addressData="addressData" />
+			<!-- 特殊商品退货须知 -->
+			<view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
 			<!-- 商品 -->
-			<goods-list
+			<cm-goods-temp
 				ref="goods"
-				v-if="isRequest"
-				:shopOrderData="shopOrderData"
-				:information="information"
+				v-if="skeletonShow"
+				:list="orderInfo.orderProductList"
+				:orderInfo="orderInfo"
 				@popupClick="hanldePopupFn"
-			></goods-list>
+			/>
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<cm-order-temp ref="orderInfo" v-if="skeletonShow" :orderInfo="orderInfo" />
 			<!-- 发票信息 -->
-			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<cm-invice-temp ref="invoice" v-if="skeletonShow" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
-			<payment-record
+			<cm-payment-temp
 				ref="payment"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:discernReceiptList="discernReceiptList"
 				:receiptAmount="receiptAmount"
-			></payment-record>
+			/>
 			<!-- 退款记录 -->
-			<refund-record
+			<cm-refund-temp
 				ref="refund"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:returnedPurchaseList="returnedPurchaseList"
 				:returnedPurchaseFee="returnedPurchaseFee"
-			></refund-record>
+			/>
+			<!-- 支付凭证记录 -->
+			<cm-voucher-temp ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
 			<view
 				class="clause"
-				v-if="information.secondHandOrderFlag != 1"
+				v-if="orderInfo.secondHandOrderFlag != 1"
 				@click="openclauseConten(clauseData.id)"
 				:class="clauseData.name == '无条款' ? 'noclick' : ''"
 			>
@@ -72,32 +77,34 @@
 				}}</label>
 			</view>
 			<!-- 底部button -->
-			<order-button
+			<cm-details-button
 				ref="orderButton"
-				v-if="isRequest"
-				:status="btnStatus"
-				:order="information"
+				v-if="skeletonShow"
+				:status="orderInfo.status"
+				:order="orderInfo"
 				:rechargeGoods="rechargeGoods"
 				:ableUserMoney="ableUserMoney"
 				:shareCode="shareCode"
-				:serviceProviderId="serviceProviderId"
-				:secondHandOrderFlag="information.secondHandOrderFlag"
+				:secondHandOrderFlag="orderInfo.secondHandOrderFlag"
 				@buttonConfirm="handButtonConfirm"
-			>
-			</order-button>
+			/>
 		</view>
 		<!-- 付款弹窗 -->
-		<order-model
+		<cm-orderpay-popup
 			v-if="isPayModel"
 			:payModelData="payModelData"
 			:modelType="modelType"
 			@paymentConfirm="hanldPaymentConfirm"
 		/>
 		<!-- 分享弹窗 -->
-		<share-alert :orderId="orderId" :shareType="isShareType" v-if="isShareModal" @shareConfirm="onShareAppMessage">
-		</share-alert>
+		<cm-share-popup
+			:shopOrderId="shopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 促销活动弹窗 -->
-		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
+		<cm-promote-popup :Promotion="handlerPros" :popupShow="popupShow" />
 		<!-- 再来一单 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -109,40 +116,53 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
 	</view>
 </template>
 
 <script>
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import orderAddress from '@/components/cm-module/orderDetails/orderAddress' //地址信息
-import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
-import invoiceTent from '@/components/cm-module/orderDetails/invoiceTent' //发票信息
-import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
-import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord' //支付记录
-import refundRecord from '@/components/cm-module/orderDetails/refundRecord' //退款记录
-import orderButton from './components/sellerDetaileButton' //底部按钮
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
-import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+import cmAddressTemp from './components/details/cm-address-temp' //地址信息
+import cmGoodsTemp from './components/details/cm-goods-temp' //商品列表
+import cmOrderTemp from './components/details/cm-order-temp' //订单信息
+import cmInviceTemp from './components/details/cm-invice-temp' //发票信息
+import cmPaymentTemp from './components/details/cm-payment-temp' //支付记录
+import cmRefundTemp from './components/details/cm-refund-temp' //退款记录
+import cmVoucherTemp from './components/details/cm-voucher-temp' //退款记录
+import cmDetailsButton from './components/cm-details-button' //底部按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import cmOrderpayPopup from './components/cm-orderpay-popup' //付款弹窗
+import cmPromotePopup from './components/details/cm-promote-popup' //促销活动弹窗
 
 export default {
 	components: {
 		headerBack,
-		orderInformation,
-		orderAddress,
-		invoiceTent,
-		goodsList,
-		paymentRecord,
-		refundRecord,
-		orderButton,
-		shareAlert,
-		orderModel,
-		activiPopup
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmOrderTemp,
+		cmInviceTemp,
+		cmPaymentTemp,
+		cmRefundTemp,
+		cmVoucherTemp,
+		cmDetailsButton,
+		cmSharePopup,
+		cmOrderpayPopup,
+		cmPromotePopup
 	},
 	data() {
 		return {
@@ -153,15 +173,14 @@ export default {
 			},
 			state: 0,
 			userId: '',
-			orderId: '',
+			orderId: 0,
+			shopOrderId: 0,
 			clubUserId: 0,
 			serviceProviderId: '', //协销ID
 			shareCode: '', //分享码
 			shareType: '', //分享登录页过来记录的状态
 			cellPhone: '', //客服电话
-			payStatus: 0,
-			btnStatus: 0, //按钮组件状态
-			isRequest: false, //是否加载完成渲染子组件
+			skeletonShow: false, //是否加载完成渲染子组件
 			isOrderShare: false,
 			isShareModal: false,
 			isShareType: 2,
@@ -170,11 +189,11 @@ export default {
 			ableUserMoney: '', //机构余额
 			payModelData: {},
 			addressData: {}, //地址信息初始化
-			information: {}, //订单信息初始化
-			shopOrderData: {}, //商品信息初始化
+			orderInfo: {}, //订单信息初始化
 			orderInvoice: {}, //发票信息初始化
 			returnedPurchaseList: {}, //退款信息初始化
 			discernReceiptList: {}, //支付信息初始化
+			voucherList:[], // 线下支付凭证
 			receiptAmount: 0, //支付金额
 			returnedPurchaseFee: 0, //退款金额
 			navbarHeight: '',
@@ -189,15 +208,32 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0 ,// 再来一单商品id
-            returnGoodsStutas: false,
-            helpContent: '',
+			returnGoodsStutas: false,
+			helpContent: '',
+			handleModelEven: 0,
+			modal: false,
+			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确定',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
+					},
+					plain: false
+				}
+			],
 		}
 	},
 	onLoad(option) {
 		console.log(option)
 		this.shareType = option.type
-		this.orderId = option.orderId
+		this.shopOrderId = option.shopOrderId
 		this.clubUserId = option.userId
 		if (this.shareType === 'share') {
 			this.listType = 0
@@ -215,233 +251,223 @@ export default {
 			//处理金额
 			return Number(value).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
+		statusFilters(value) {
+			//处理订单状态显示
+			const map = {
+				0: '待确认',
+				2: '交易完成',
+				4: '已关闭',
+				5: '交易全退',
+				6: '交易全退',
+				11: '待付款待发货',
+				12: '待付款部分发货',
+				13: '待付款已发货',
+				21: '部分付款待发货',
+				22: '部分付款部分发货',
+				23: '部分付款已发货',
+				31: '已付款待发货',
+				32: '已付款部分发货',
+				33: '已付款已发货'
+			}
+			return map[value]
 		}
 	},
 	methods: {
-		openclauseConten(id) {
-			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
-		},
-		initOrderDetaileData() {
-			//初始化页面数据@参数:订单ID
-			this.OrderService.QueryOrderDetails({
-				orderId: this.orderId,
-				userId: this.clubUserId
-			})
-				.then(response => {
-					let data = response.data
-					this.isRequest = true
-					this.userId = data.order.userId
-					this.shareCode = data.shareCode
-					this.addressData = data.userInfo
-					this.information = data.order
-					this.rechargeGoods = data.order.rechargeGoods
-					this.btnStatus = data.order.status
-					this.payStatus = data.order.payStatus
-					this.shopOrderData = data.shopOrderList
-					this.orderInvoice = data.orderInvoice
-					this.returnedPurchaseList = data.returnedPurchaseList
-					this.discernReceiptList = data.discernReceiptList
-					this.receiptAmount = data.order.receiptAmount
-					this.returnedPurchaseFee = data.order.returnedPurchaseFee
-					this.ableUserMoney = data.ableUserMoney
-					this.clauseData = data.clause
-					if (this.clauseData && this.clauseData.name.length > 10) {
-						this.clauseData.name = this.clauseData.name.substr(0, 10) + '...'
-					}
-                    // 特殊商品退货须知
-                    this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
-                    this.helpContent = data.helpContent
-				})
-				.catch(error => {
-					this.$util.modal('提示', '订单查询失败,请稍后重试~', '确定', '', false, () => {
-						this.$api.switchTabTo('/pages/seller/index/index')
-					})
+		async initOrderDetaileData() {
+			try {
+				const res = await this.OrderService.QueryOrderDetails({
+					shopOrderId: this.shopOrderId,
+					userId: this.clubUserId
 				})
+				const data = res.data
+				this.orderInfo = data.shopOrder
+				this.userId = this.orderInfo.userId
+				this.rechargeGoods = this.orderInfo.rechargeGoods
+				// this.shareCode = data.shareCode
+				this.addressData = data.userInfo
+				this.receiptAmount = this.orderInfo.receiptAmount
+				this.returnedPurchaseFee = this.orderInfo.returnedPurchaseFee
+				this.orderInvoice = data.orderInvoice
+				this.returnedPurchaseList = data.returnedPurchaseList
+				this.discernReceiptList = data.discernReceiptList
+				this.voucherList = data.voucher
+				this.ableUserMoney = data.ableUserMoney
+				this.clauseData = data.clause
+				if (this.clauseData && this.clauseData.name.length > 10) {
+					this.clauseData.name = this.clauseData.name.substr(0, 10) + '...'
+				}
+				// 特殊商品退货须知
+				this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
+				this.helpContent = data.helpContent
+				this.skeletonShow = true
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
 		handButtonConfirm(data) {
-			//监听点击时间的按钮类型并执行...
-			this.handShowAlert(data)
-		},
-		handShowAlert(data) {
 			//判断点击的按钮类型并执行...
 			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
 					break
-				case 'delete':
-					this.handOrderDetele()
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
 					break
-				case 'cancel':
-					this.handCenceConfirm()
-					break
-				case 'confirm':
-					this.handOrderConfirm(data)
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
 					break
 				case 'balance':
 					this.getOrderPaymentValidation(data)
 					break
 				case 'again':
-					this.handOrderAgain(data.orderId)
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
 					break
 			}
 		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
+		handleClick(e) {
+			//确认操作
+			if (e.index == 1) {
+				switch (this.handleModelEven) {
+					case 1: //取消订单
+						this.cancelOrder(this.shopOrderId)
+						break
+					case 2: //删除订单
+						this.deleteOrder(this.shopOrderId)
+						break
+					case 3: //确认订单
+						this.affirmOrder(this.shopOrderId)
+						break
+				}
+			}
+			this.modal = false
+		},
+		//取消订单
+		async cancelOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.CancelOrder({ shopOrderId: shopOrderId, userIdentity: 1 })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//删除订单
+		async deleteOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.DeleteOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					if (this.shareType === 'share') {
+						this.$api.switchTabTo('/pages/tabBar/home/index')
 					} else {
-						this.$util.msg(error.msg, 2000)
+						this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
 					}
-				})
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		closeBtn() {
-			//
-			this.showAgan = false
+		//确认订单
+		async affirmOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.AffirmOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
+		// 再来一单
+		async handOrderAgain(shopOrderId) {
+			try{
+				const res = await this.SellerService.SellerCreateOrderAgain({
+					confirmFlag: 0,
+					shopOrderId: shopOrderId,
+					serviceProviderId: this.serviceProviderId
+				})
+				const data = res.data
+				this.$api.setStorage('orderUserInfo', {
+					clubId: data.clubId,
+					againBuyProductIds: data.productIds,
+					userId: data.userId
+				})
+				this.$api.navigateTo('/pages/seller/cart/cart')
+			}catch(error){
+				if (error.code == -3) {
+					this.showAgan = true
+					this.promptitle = error.msg
+					this.failList = error.data
+				} else if (error.code == -2) {
+					this.$util.modal('', error.msg, '确定', '', false, () => {})
+				} else {
+					this.$util.msg(error.msg, 2000)
 				}
-			})
+			}
 		},
-		handOrderConfirm(data) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		async handleAddAgian() {
+			// 再来一单弹窗
+			try{
+				await this.SellerService.SellerCreateOrderAgain({
+					confirmFlag: 1,
+					shopOrderId: this.shopOrderId,
+					serviceProviderId: this.serviceProviderId,
+				})
+				this.$api.navigateTo('/pages/seller/cart/cart')
+				this.showAgan = false
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		hanldPaymentConfirm(data) {
-			//监听余额抵扣按钮
-			switch (data.type) {
-				case 3:
-					this.OrderService.OrderBalanceDeduction({ orderId: this.orderId })
-						.then(response => {
-							this.$util.msg('余额抵扣成功', 2000)
-							this.initOrderDetaileData()
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-					break
+		//监听余额抵扣按钮
+		async hanldPaymentConfirm(data) {
+			try{
+				await this.OrderService.OrderBalanceDeduction({ shopOrderId: this.shopOrderId })
+				this.$util.msg('余额抵扣成功', 2000)
+				this.initOrderDetaileData()
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
 			}
 		},
-		getOrderPaymentValidation(data) {
-			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
-				.then(response => {
-					let data = (this.payModelData = response.data)
-					if (data.balanceFlag == 0) {
-						// 0可以走余额抵扣,1不能走余额抵扣
-						if (data.code == -1) {
-							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
-						} else {
-							this.isPayModel = true
-							this.modelType = 3
-						}
+		//监听根据付款状态做操作
+		async getOrderPaymentValidation(order) {
+			try{
+				const res = await this.OrderService.OrderPaymentValidation({ shopOrderId: order.shopOrderId })
+				const data = res.data
+				this.payModelData = data
+				if (data.balanceFlag == 0) {
+					// 0可以走余额抵扣,1不能走余额抵扣
+					if (data.code == -1) {
+						this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
 					} else {
-						this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
+						console.log('payModelData',this.payModelData)
+						this.isPayModel = true
+						this.modelType = 3
+						console.log('isPayModel',this.isPayModel)
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		handOrderDetele() {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							if (this.shareType === 'share') {
-								this.$api.navigateTo('/pages/seller/index/index')
-							} else {
-								this.$api.navigateTo(
-									`/pages/seller/order/order-list?type=detele&listType=${this.listType}`
-								)
-							}
-						}, 500)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+				} else {
+					this.$util.modal('', '该订单已走线上支付流程,不能进行余额抵扣。', '确定', '', false, () => {})
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		handCenceConfirm() {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: this.orderId ,userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						this.initOrderDetaileData()
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		// 条款
+		openclauseConten(id) {
+			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
 		},
 		hanldePopupFn(data) {
 			//监听活动内容
@@ -732,12 +758,12 @@ page {
 		}
 	}
 }
-.return-instructions{
-    font-size: 26rpx;
-    color: #FF5B00;
-    line-height: 42rpx;
-    padding: 32rpx 50rpx;
-    background-color: #FFFAF8;
-    text-align: justify;
+.return-instructions {
+	font-size: 26rpx;
+	color: #ff5b00;
+	line-height: 42rpx;
+	padding: 32rpx 50rpx;
+	background-color: #fffaf8;
+	text-align: justify;
 }
 </style>

+ 226 - 401
pages/seller/order/order-historylist.vue

@@ -68,14 +68,17 @@
 										<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
 									</view>
 									<view class="order-title-t">
+										<view class="order-title-tip tui-skeleton-fillet">
+											{{ order.status | statusFilters }}
+										</view>
 										<text
-											class="bage-buss tui-skeleton-fillet"
+											class="bage buss tui-skeleton-fillet"
 											v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
 										>
 											协销
 										</text>
 										<text
-											class="bage-auto tui-skeleton-fillet"
+											class="bage auto tui-skeleton-fillet"
 											v-if="
 												order.orderSubmitType == 0 ||
 													order.orderSubmitType == 1 ||
@@ -84,9 +87,6 @@
 										>
 											自主
 										</text>
-										<text class="bage-text tui-skeleton-fillet">
-											订单编号:{{ order.orderNo }}({{ order.orderId }})
-										</text>
 										<image
 											class="bage-icon"
 											src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
@@ -95,103 +95,93 @@
 										>
 										</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 class="goods-title">
+									<view v-if="order.shopPromotion" class="floor-item-act">
+										<view class="floor-tags"> {{ order.shopPromotion.name }} </view>
 									</view>
+									<view class="title-text tui-skeleton-fillet"> {{ order.shopName }} </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
+									class="goods-item"
+									v-for="(pros, prosIndex) in order.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.giftType == 2 || pros.giftType == 1"
+												>赠品</text
+											>
 										</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 class="pros-product clearfix">
+											<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+											<view
+												class="productspec tui-skeleton-fillet"
+												v-if="pros.productCategory != 2"
+											>
+												规格:{{ pros.productUnit ? pros.productUnit : '' }}
 											</view>
-											<view class="pros-product clearfix">
-												<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+											<view class="productprice">
 												<view
-													class="productspec tui-skeleton-fillet"
-													v-if="pros.productCategory != 2"
+													class="price tui-skeleton-fillet"
+													:class="
+														pros.svipPriceFlag == 1 ||
+														PromotionsFormat(pros.productPromotion)
+															? 'none'
+															: ''
+													"
 												>
-													规格:{{ pros.productUnit ? pros.productUnit : '' }}
+													<text>¥{{ pros.price | NumFormat }}</text>
 												</view>
-												<view class="productprice">
+												<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
-														class="price tui-skeleton-fillet"
-														:class="
-															pros.svipPriceFlag == 1 ||
-															PromotionsFormat(pros.productPromotion)
-																? 'none'
-																: ''
-														"
+														v-if="PromotionsFormat(pros.productPromotion)"
+														class="floor-tags"
+														@click.stop="clickPopupShow(pros.productPromotion)"
 													>
-														<text>¥{{ pros.price | NumFormat }}</text>
+														{{ 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 class="count tui-skeleton-fillet">
-														<text class="small">x</text>{{ pros.num }}
+													<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>
-												</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>
+												</template>
 											</view>
 										</view>
 									</view>
-								</block>
+								</view>
 								<view class="order-footer">
-									<view class="order-footer-top" v-if="order.discountFee != 0">
+									<!-- <view class="order-footer-top" v-if="order.discountFee != 0">
 										经理折扣:¥{{ order.discountFee | NumFormat }}
-									</view>
+									</view> -->
 									<view class="order-footer-bot">
-										<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
+										<view class="count tui-skeleton-fillet">共{{ order.itemCount }}件商品</view>
 										<view
 											class="money tui-skeleton-fillet"
 											v-if="order.status == 31 || order.status == 32 || order.status == 33"
@@ -202,32 +192,31 @@
 										</view>
 										<view class="money tui-skeleton-fillet" v-else>
 											待付总额:<label style="color:#f94b4b ;"
-												>¥{{ order.pendingPayments | NumFormat }}</label
+												>¥{{ order.obligation | NumFormat }}</label
 											>
 										</view>
 									</view>
 								</view>
 								<!-- 底部button -->
-								<order-button
+								<cm-list-button
+									v-if="clubSpId === listQuery.serviceProviderId"
 									ref="orderButton"
-									v-if="clubSpId === serviceProviderId"
+									:order="order"
 									:status="order.status"
-									:order = "order"
-									:rechargeGoods="order.rechargeGoods"
-									:orderId="order.orderId"
 									:userId="order.userId"
+									:shopOrderId="order.shopOrderId"
+									:rechargeGoods="order.rechargeGoods"
 									:secondHandOrderFlag="order.secondHandOrderFlag"
 									@buttonConfirm="handButtonConfirm"
-								>
-								</order-button>
+								/>
 							</view>
 							<!--加载loadding-->
-							<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+							<tui-loadmore :visible="loadding" :index="3" type="black"/>
 							<tui-nomore
 								:visible="!pullUpOn"
 								:backgroundColor="'#ffffff'"
 								:text="nomoreText"
-							></tui-nomore>
+							/>
 							<!--加载loadding-->
 						</view>
 					</view>
@@ -235,9 +224,12 @@
 			</swiper-item>
 		</swiper>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :shareType="isShareType" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
-		<!-- 透明模态层 -->
-		<modal-layer v-if="isModalLayer"></modal-layer>
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 再来一单弹窗 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -249,35 +241,44 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
+		<!-- 透明模态层 -->
+		<modal-layer v-if="isModalLayer"></modal-layer>
 	</view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'		
 import headerBack from '@/components/cm-module/headerNavbar/header-back' // 自定义顶部导航
-import btSearch from '@/components/uni-search/bt-search.vue' // 搜索
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' // 操作按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' // 分享弹窗
+import cmListButton from './components/cm-list-button' //操作按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import orderMixins from './mixins/orderMixins.js'
 
 export default {
+	mixins: [orderMixins],
 	components: {
 		headerBack,
 		empty,
-		btSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		modalLayer,
-		shareAlert
+		cmListButton,
+		cmSharePopup,
 	},
 	data() {
 		return {
@@ -295,25 +296,24 @@ export default {
 				{ type: 2, text: '协销订单' }
 			],
 			winHeight: '', //窗口高度
-			clubId: 0, //机构ID
-			userId: 0,
 			currentTab: 0, //预设当前项的值
 			screenTab: 0, //筛选预设当前项的值
 			scrollLeft: 0, //tab标题的滚动条位置
 			clubSpId:0, // 机构协销Id
-			serviceProviderId: 0, //协销用户ID
+			listQuery:{
+				listType: 0,
+				clubId: 0,
+				orderSubmitType: 0,
+				serviceProviderId: 0,
+				pageNum: 1,
+				pageSize: 10
+			},
 			orderData: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
-			pageNum: 1, //页数
-			pageSize: 10, //条数
 			scrollTop: 0,
-			deteleType: '',
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
 			isShareType:2,
-			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
 			pullUpOn: true,
@@ -324,13 +324,12 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0,
-			authType:0,
+			authType:0
 		}
 	},
 	onLoad(option) {
 		let self = this
-		this.currentTab = option.listType
+		this.currentTab = this.listQuery.listType = option.listType
 		this.authType = option.authType
 		this.initDataInfo()
 		uni.getSystemInfo({
@@ -341,20 +340,13 @@ export default {
 			}
 		})
 	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
 	methods: {
 		async initDataInfo() {
 			const clubInfo = await this.$api.getComStorage('orderUserInfo')
 			const userInfo = await this.$api.getStorage()
-			this.clubId = clubInfo.clubId ? clubInfo.clubId : 0
-			this.userId = clubInfo.userId ? clubInfo.userId : 0
+			this.listQuery.clubId = clubInfo.clubId
 			this.clubSpId = clubInfo.serviceProviderId
-			this.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId
 			this.getOrderDatainit(this.currentTab)
 		},
 		onChange(e) {
@@ -367,6 +359,7 @@ export default {
 			}
 			this.isClickChange = false
 			this.currentTab = index
+			this.listQuery.listType = index
 			this.checkCor()
 			this.pageNum = 1
 			this.pullUpOn = true //切换时隐藏
@@ -382,7 +375,7 @@ export default {
 			} else {
 				this.isClickChange = true
 				this.currentTab = tabIndex
-				this.pageNum = 1
+				this.listQuery.listType = tabIndex
 				this.pullUpOn = true //切换时隐藏
 				this.loadding = false //切换时隐藏
 				this.getOrderDatainit(this.currentTab)
@@ -391,7 +384,7 @@ export default {
 		onClickScreenTab(index) {
 			console.log(index)
 			this.screenTab = index
-			this.pageNum = 1
+			this.listQuery.orderSubmitType = tabIndex
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -406,88 +399,93 @@ export default {
 				this.scrollLeft = 0
 			}
 		},
-		getOrderDatainit(index, source) {
-			setTimeout(() => {
-				this.skeletonShow = false
-			}, 1500)
-			let orderItem = this.orderTabBar[index]
-			let listType = orderItem.listType
-			if (source === 'tabChange' && orderItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return
-			}
-			setTimeout(() => {
-				this.SellerService.GetSellerClubOrderList({
-					listType: index,
-					clubId: this.clubId,
-					orderSubmitType: this.screenTab,
-					serviceProviderId: this.serviceProviderId,
-					pageNum: 1,
-					pageSize: this.pageSize
-				})
-					.then(response => {
-						let data = response.data
-						let orderList = data.list.filter(item => {
-							//添加不同状态下订单的表现形式
-							item = Object.assign(item, this.StateExpFormat(item.listType))
-							return item
-						})
-						orderItem.orderList = []
-						orderList.forEach(item => {
-							orderItem.orderList.push(item)
-						})
-						//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
-						this.$set(orderItem, 'loaded', true)
-						this.hasNextPage = data.hasNextPage
-						if (this.hasNextPage) {
-							this.pullUpOn = false
-							this.nomoreText = '上拉显示更多'
-						} else {
-							if (orderItem.orderList.length < 2) {
-								this.pullUpOn = true
-							} else {
-								this.pullUpOn = false
-								this.nomoreText = '已至底部'
-							}
-						}
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			}, 600)
-		},
-		getOnReachBottomData(index) {
-			//上拉加载
-			this.pageNum += 1
-			this.SellerService.GetSellerClubOrderList({
-				listType: index,
-				clubId: this.clubId,
-				orderSubmitType: this.screenTab,
-				serviceProviderId: this.serviceProviderId,
-				pageNum: this.pageNum,
-				pageSize: this.pageSize
-			})
-				.then(response => {
-					let orderItem = this.orderTabBar[index]
-					let data = response.data
+		async getOrderDatainit(index, source) {
+			try {
+				this.listQuery.pageNum = 1
+				let orderItem = this.orderTabBar[index]
+				if (source === 'tabChange' && orderItem.loaded === true) {
+					//tab切换只有第一次需要加载数据
+					return
+				}
+				const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					orderItem.orderList =[]
+					orderItem.orderList = data.list
+					//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
 					this.hasNextPage = data.hasNextPage
-					orderItem.orderList = orderItem.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 = '已至底部'
+						if (orderItem.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+				} else {
+					this.$set(orderItem, 'loaded', true)
+					orderItem.orderList = []
+				}
+				this.skeletonShow = false
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		async getOnReachBottomData(index) {
+			//上拉加载
+			try {
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
+				const data = res.data
+				const orderItem = this.orderTabBar[index]
+				orderItem.orderList = orderItem.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				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)
+			}
+		},
+		handButtonConfirm(data) {
+			//获取点击
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
 		},
 		scrolltolower() {
 			if (this.hasNextPage) {
@@ -501,154 +499,21 @@ export default {
 			this.isModalLayer = true
 			if(this.authType === '1' || this.authType === '2'){
 				this.$api.navigateTo(
-					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
 						order.userId
 					}`
 				)
 			}else{
 				this.$api.navigateTo(
-					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
+					`/pages/seller/order/order-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
 						order.userId
 					}`
 				)
 			}
-			
-		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(orderId) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 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(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm(orderId) {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: orderId , userIdentity : 1})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
 		},
 		handlSearchPath() {
 			this.$api.navigateTo('/pages/seller/order/search-order')
 		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-				// console.log(res.target)
-			}
-			return {
-				title: '您有新的分享订单,快来查看吧~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.btnoRderID}&userId=${
-					this.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -659,39 +524,6 @@ export default {
 				}
 			}
 			return false
-		},
-		//订单状态文字和颜色
-		StateExpFormat(state) {
-			let stateText = '',
-				stateTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(key => {
-				if (key == state) {
-					stateText = stateTextObject[key]
-				}
-			})
-			return stateText
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
 		}
 	},
 	onPageScroll(e) {
@@ -850,40 +682,33 @@ page {
 			height: 50rpx;
 			display: block;
 			position: absolute;
-			right: 0;
-			top: 9rpx;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.bage-buss {
+		.bage{
 			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;
-			margin-top: 8rpx;
-		}
-		.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%);
+			height: 32rpx;
+			margin: 19rpx 10rpx 0 10rpx;
 			border-radius: 4rpx;
-			line-height: 30rpx;
+			line-height: 32rpx;
 			font-size: $font-size-22;
 			text-align: center;
 			color: #ffffff;
-			margin-top: 8rpx;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
 		}
-		.bage-text {
-			display: inline-block;
+		.order-title-tip {
+			float: left;
 			font-size: $font-size-28;
 			line-height: 68rpx;
-			text-align: left;
-			color: $color-system;
-			margin-left: 15rpx;
+			text-align: right;
+			color: #ff2a2a;
 		}
 	}
 	.order-title-b {

+ 336 - 500
pages/seller/order/order-list.vue

@@ -9,145 +9,144 @@
 			:isUsertype="1"
 			:screenTab="screenTab"
 			@goSearchPath="handlSearchPath"
-		>
-		</header-back>
-		<view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
-			<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
-				<view
-					v-for="(item, index) in orderTabBar"
-					:key="index"
-					class="tab-bar-item"
-					:class="[currentTab == index ? 'active' : '']"
-					:data-current="index"
-					@tap.stop="onClickTab"
-				>
-					<text class="tab-bar-title">{{ item.text }}</text>
-				</view>
-			</scroll-view>
-			<scroll-view scroll-x scroll-with-animation class="tab-screen" :scroll-left="scrollLeft">
-				<view
-					v-for="(item, index) in screenTabBar"
-					:key="index"
-					class="tab-screen-item"
-					:class="[screenTab == index ? 'active' : '']"
-					:data-current="index"
-					@tap.stop="onClickScreenTab(index)"
-					>{{ item.text }}</view
-				>
-				<view
-					class="tab-screen-item"
-					v-if="isManage"
-					:data-current="3"
-					:class="[screenTab == 3 ? 'active' : '']"
-					@tap.stop="onClickScreenTab(3)"
-					>组员订单</view
-				>
-			</scroll-view>
-		</view>
-		<swiper
-			class="tab-content"
-			:current="currentTab"
-			duration="80"
-			@animationfinish="onChange"
-			:style="{ height: winHeight + 'px' }"
-		>
-			<swiper-item v-for="(tabItem, index) in orderTabBar" :key="index">
-				<tui-skeleton
-					v-if="skeletonShow"
-					backgroundColor="#fafafa"
-					borderRadius="10rpx"
-					:isLoading="false"
-					:loadingType="5"
-				></tui-skeleton>
-				<scroll-view
-					scroll-y
-					class="scoll-y tui-skeleton"
-					@scrolltolower="scrolltolower"
-					:style="{ height: winHeight + 'px' }"
-				>
-					<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
-						<!-- 空白页 -->
-						<empty
-							v-if="tabItem.loaded === true && tabItem.orderList.length === 0"
-							:typeIndex="currentTab"
-							:navbarHeight="navbarHeight"
-						></empty>
-						<!-- 列表 -->
-						<view v-else class="tui-order-content">
-							<view
-								class="tui-order-item"
-								v-for="(order, orderIndex) in tabItem.orderList"
-								:key="orderIndex"
-								@click.stop="detail(order)"
-							>
-								<view class="order-title">
-									<view class="order-title-name">
-										<text>{{ order.clubName ? order.clubName : '' }}</text>
-										<text class="tags" v-if="order.svipUserFlag == 0 && order.userIdentity === 2"
-											>VIP</text
-										>
-										<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
-										<view class="name" v-if="screenTab === 3">【 {{ order.serviceName ? order.serviceName : '' }} 】</view>
-									</view>
-									<view class="order-title-t">
-										<view class="Rebate " v-if="order.rebateFlag == 1">返佣</view>
-										<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 }}({{ order.orderId }})
-										</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 }}
+		/>
+		<tui-skeleton
+			v-if="skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
+				<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
+					<view
+						v-for="(item, index) in orderTabBar"
+						:key="index"
+						class="tab-bar-item"
+						:class="[currentTab == index ? 'active' : '']"
+						:data-current="index"
+						@tap.stop="onClickTab"
+					>
+						<text class="tab-bar-title">{{ item.text }}</text>
+					</view>
+				</scroll-view>
+				<scroll-view scroll-x scroll-with-animation class="tab-screen" :scroll-left="scrollLeft">
+					<view
+						v-for="(item, index) in screenTabBar"
+						:key="index"
+						class="tab-screen-item"
+						:class="[screenTab == index ? 'active' : '']"
+						:data-current="index"
+						@tap.stop="onClickScreenTab(index)"
+						>{{ item.text }}</view
+					>
+					<view
+						class="tab-screen-item"
+						v-if="isManage"
+						:data-current="3"
+						:class="[screenTab == 3 ? 'active' : '']"
+						@tap.stop="onClickScreenTab(3)"
+						>组员订单</view
+					>
+				</scroll-view>
+			</view>
+			<swiper
+				class="tab-content"
+				:current="currentTab"
+				duration="80"
+				@animationfinish="onChange"
+				:style="{ height: winHeight + 'px' }"
+			>
+				<swiper-item v-for="(tabItem, index) in orderTabBar" :key="index"  @touchmove.stop="">
+					<scroll-view
+						scroll-y
+						class="scoll-y tui-skeleton"
+						@scrolltolower="scrolltolower"
+						:style="{ height: winHeight + 'px' }"
+					>
+						<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
+							<!-- 空白页 -->
+							<empty
+								v-if="tabItem.loaded === true && tabItem.orderList.length === 0"
+								:typeIndex="currentTab"
+								:navbarHeight="navbarHeight"
+							/>
+							<!-- 列表 -->
+							<view v-else class="tui-order-content">
+								<view
+									class="tui-order-item"
+									v-for="(order, orderIndex) in tabItem.orderList"
+									:key="orderIndex"
+									@click.stop="detail(order)"
+								>
+									<view class="order-title">
+										<view class="order-title-name">
+											<text>{{ order.clubName ? order.clubName : '' }}</text>
+											<text
+												class="tags"
+												v-if="order.svipUserFlag == 0 && order.userIdentity === 2"
+												>VIP</text
+											>
+											<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
+											<view class="name" v-if="screenTab === 3"
+												>【 {{ order.serviceName ? order.serviceName : '' }} 】</view
+											>
 										</view>
-										<view class="order-title-tip tui-skeleton-fillet">
-											{{ StateExpFormat(order.status) }}
+										<view class="order-title-t">
+											<view class="order-title-tip tui-skeleton-fillet">
+												{{ order.status | statusFilters }}
+											</view>
+											<view class="bage ebate" v-if="order.rebateFlag == 1">返佣</view>
+											<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>
+											<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>
-								</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 v-if="order.shopPromotion" class="floor-item-act">
+											<view class="floor-tags">{{ order.shopPromotion.name }}</view>
 										</view>
-										<view class="title-text tui-skeleton-fillet">{{ shop.shopName }}</view>
+										<view class="title-text tui-skeleton-fillet">{{ order.shopName }}</view>
 									</view>
 									<view
 										class="goods-item"
-										v-for="(pros, prosIndex) in shop.orderProductList"
+										v-for="(pros, prosIndex) in order.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
+													class="tips"
+													v-if="pros.giftType == 2 || pros.giftType == 1"
 													>赠品</text
 												>
 											</view>
 											<view class="pros-product clearfix">
-												<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+												<view class="producttitle tui-skeleton-fillet">{{
+													pros.name
+												}}</view>
 												<view
 													class="productspec tui-skeleton-fillet"
 													v-if="pros.productCategory != 2"
@@ -187,7 +186,8 @@
 																:¥{{
 																	pros.productPromotion == null
 																		? '0.00'
-																		: pros.productPromotion.touchPrice | NumFormat
+																		: pros.productPromotion.touchPrice
+																		  | NumFormat
 																}}
 															</text>
 														</view>
@@ -208,63 +208,63 @@
 											</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 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.itemCount }}件商品</view
 											>
-										</view>
-										<view class="money tui-skeleton-fillet" v-else
-											>待付总额:<label style="color:#f94b4b ;">
-												¥{{ order.pendingPayments | NumFormat }}</label
+											<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.obligation | NumFormat }}</label
+												>
+											</view>
 										</view>
 									</view>
+									<!-- 底部button -->
+									<cm-list-button
+										ref="orderButton"
+										v-if="screenTab != 3"
+										:status="order.status"
+										:order="order"
+										:shopOrderId="order.shopOrderId"
+										:rechargeGoods="order.rechargeGoods"
+										:userId="order.userId"
+										:secondHandOrderFlag="order.secondHandOrderFlag"
+										@buttonConfirm="handButtonConfirm"
+									/>
 								</view>
-								<!-- 底部button -->
-								<order-button
-									ref="orderButton"
-									v-if="screenTab != 3"
-									:status="order.status"
-									:order="order"
-									:orderId="order.orderId"
-									:rechargeGoods="order.rechargeGoods"
-									:userId="order.userId"
-									:secondHandOrderFlag="order.secondHandOrderFlag"
-									@buttonConfirm="handButtonConfirm"
-								>
-								</order-button>
+								<!--加载loadding-->
+								<tui-loadmore :visible="loadding" :index="3" type="black"/>
+								<tui-nomore
+									:visible="!pullUpOn"
+									:backgroundColor="'#ffffff'"
+									:text="nomoreText"
+								/>
+								<!--加载loadding-->
 							</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>
-			</swiper-item>
-		</swiper>
+					</scroll-view>
+				</swiper-item>
+			</swiper>
+		</template>
 		<!-- 分享弹窗 -->
-		<share-alert
-			v-if="isShareModal"
-			:orderId="btnoRderID"
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
 			:shareType="isShareType"
+			v-if="isShareModal"
 			@shareConfirm="onShareAppMessage"
-		>
-		</share-alert>
+		/>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModalLayer"></modal-layer>
 		<view class="aganBj" v-show="showAgan">
@@ -277,8 +277,8 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
@@ -288,8 +288,18 @@
 			v-if="rightDrawer"
 			:rightDrawer="rightDrawer"
 			@handSearchConfirm="handSearchConfirmData"
-		>
-		</cm-orderDrawer>
+		/>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
 	</view>
 </template>
 
@@ -297,24 +307,22 @@
 import { mapState, mapMutations } from 'vuex'
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义顶部导航
 import btSearch from '@/components/uni-search/bt-search.vue' //搜索
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' //操作按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
+import cmListButton from './components/cm-list-button' //操作按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
 import cmOrderDrawer from '../components/cm-order-drawer' //筛选抽屉
+import orderMixins from './mixins/orderMixins.js'
 
 export default {
+	mixins: [orderMixins],
 	components: {
 		headerBack,
 		empty,
 		btSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		modalLayer,
-		shareAlert,
+		cmListButton,
+		cmSharePopup,
 		cmOrderDrawer
 	},
 	data() {
@@ -345,20 +353,20 @@ export default {
 			currentTab: 0, //预设当前项的值
 			screenTab: 0, //筛选预设当前项的值
 			scrollLeft: 0, //tab标题的滚动条位置
-			serviceProviderId: 0, //协销用户ID
 			orderData: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
-			pageNum: 1, //页数
-			pageSize: 10, //条数
-			groupServiceId: 0,
+			listQuery: {
+				pageNum: 1, //页数
+				pageSize: 10, //条数
+				groupServiceId: 0,
+				serviceProviderId: 0, //协销用户ID
+				listType: 0,
+				orderSubmitType: 0
+			},
 			scrollTop: 0,
-			deteleType: '',
 			skeletonShow: true,
 			isClickChange: false,
 			isShareModal: false, //控制分享弹窗
 			isShareType: 2,
-			isSeller: false,
 			isModalLayer: false,
 			loadding: false,
 			pullUpOn: true,
@@ -369,32 +377,19 @@ export default {
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
 			promptitle: '',
-			aganOrderId: 0, // 再来一单商品id
 			userId: 0,
 			manager: 0,
-			rightDrawer: false //控制筛选抽屉
+			rightDrawer: false ,//控制筛选抽屉
+			
 		}
 	},
 	onLoad(option) {
-		let self = this
 		if (option.type === 'detele') {
-			self.isDelete = true
-		}
-		self.currentTab = option.listType
-		self.getHeaderTopHeight() //设置自定义导航高度
-		//  高度自适应
-		uni.getSystemInfo({
-			success: function(res) {
-				let calc = res.windowHeight
-				self.winHeight = calc - self.CustomBar - 82
-			}
-		})
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
+			this.isDelete = true
 		}
+		this.currentTab = option.listType
+		this.getHeaderTopHeight() //设置自定义导航高度
+		this.initGetStotage()
 	},
 	computed: {
 		...mapState(['isManage'])
@@ -404,6 +399,7 @@ export default {
 			const userInfo = await this.$api.getStorage()
 			this.userId = userInfo.userId ? userInfo.userId : 0
 			this.manager = userInfo.manager ? userInfo.manager : 0
+			this.listQuery.serviceProviderId = userInfo.serviceProviderId
 			this.getOrderDatainit(this.currentTab)
 		},
 		// 滚动切换标签样式
@@ -416,8 +412,8 @@ export default {
 			}
 			this.isClickChange = false
 			this.currentTab = index
+			this.listQuery.listType = index
 			this.checkCor()
-			this.pageNum = 1
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -431,7 +427,7 @@ export default {
 			} else {
 				this.isClickChange = true
 				this.currentTab = tabIndex
-				this.pageNum = 1
+				this.listQuery.listType = tabIndex
 				this.pullUpOn = true //切换时隐藏
 				this.loadding = false //切换时隐藏
 				this.getOrderDatainit(this.currentTab)
@@ -439,7 +435,7 @@ export default {
 		},
 		onClickScreenTab(index) {
 			this.screenTab = index
-			this.pageNum = 1
+			this.listQuery.orderSubmitType = index
 			this.pullUpOn = true //切换时隐藏
 			this.loadding = false //切换时隐藏
 			this.nomoreText = ''
@@ -454,94 +450,101 @@ export default {
 				this.scrollLeft = 0
 			}
 		},
-		getOrderDatainit(index, source) {
-			setTimeout(() => {
-				this.skeletonShow = false
-			}, 1500)
-			let orderItem = this.orderTabBar[index]
-			let listType = orderItem.listType
-			if (source === 'tabChange' && orderItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return
-			}
-			setTimeout(() => {
-				this.$api.getStorage().then(resolve => {
-					this.serviceProviderId = resolve.serviceProviderId
-					this.SellerService.GetSellerOrderList({
-						listType: index,
-						orderSubmitType: this.screenTab,
-						serviceProviderId: this.serviceProviderId,
-						pageNum: 1,
-						pageSize: this.pageSize,
-						groupServiceId: this.groupServiceId
+		async getOrderDatainit(index, source) {
+			try {
+				this.listQuery.pageNum = 1
+				let orderItem = this.orderTabBar[index]
+				if (source === 'tabChange' && orderItem.loaded === true) {
+					//tab切换只有第一次需要加载数据
+					return
+				}
+				//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
+				const res = await this.SellerService.GetSellerOrderList(this.listQuery) 
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					orderItem.orderList = []
+					data.list.forEach(item => { 
+						orderItem.orderList.push(item)
 					})
-						.then(response => {
-							let data = response.data
-							if (data.list && data.list.length > 0) {
-								let orderList = data.list.filter(item => {
-									//添加不同状态下订单的表现形式
-									item = Object.assign(item, this.StateExpFormat(item.listType))
-									return item
-								})
-								orderItem.orderList = []
-								orderList.forEach(item => { 
-									orderItem.orderList.push(item)
-								})
-								//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
-								this.$set(orderItem, 'loaded', true)
-								this.hasNextPage = data.hasNextPage
-								if (this.hasNextPage) {
-									this.pullUpOn = false
-									this.nomoreText = '上拉显示更多'
-								} else {
-									if (orderItem.orderList.length < 2) {
-										this.pullUpOn = true
-									} else {
-										this.pullUpOn = false
-										this.nomoreText = '已至底部'
-									}
-								}
-							}else{
-								orderItem.orderList = []
-							}
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
-				})
-			}, 600)
-		},
-		getOnReachBottomData(index) {
-			//上拉加载
-			this.SellerService.GetSellerOrderList({
-				listType: index,
-				orderSubmitType: this.screenTab,
-				serviceProviderId: this.serviceProviderId,
-				pageNum: (this.pageNum += 1),
-				pageSize: this.pageSize,
-				groupServiceId: this.groupServiceId
-			})
-				.then(response => {
-					let orderItem = this.orderTabBar[index]
-					let data = response.data
 					this.hasNextPage = data.hasNextPage
-					orderItem.orderList = orderItem.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 = '已至底部'
+						if (orderItem.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+				} else {
+					this.$set(orderItem, 'loaded', true)
+					orderItem.orderList = []
+				}
+				this.skeletonShow = false
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//上拉加载
+		async getOnReachBottomData(index) {
+			try {
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.GetSellerOrderList(this.listQuery)
+				const data = res.data
+				const orderItem = this.orderTabBar[index]
+				orderItem.orderList = orderItem.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				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)
+			}
+		},
+		//获取点击
+		handButtonConfirm(data) {
+			console.log('data',data)
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
+		},
+		//确定筛选
+		handSearchConfirmData(data) {
+			this.listQuery.groupServiceId = data.serviceProviderId
+			this.getOrderDatainit(this.currentTab)
 		},
 		scrolltolower() {
 			if (this.hasNextPage) {
@@ -553,161 +556,24 @@ export default {
 		detail(order) {
 			//订单详情跳转
 			this.isModalLayer = true
-			if(this.screenTab === 3){
+			if (this.screenTab === 3) {
 				this.$api.navigateTo(
-					`/pages/seller/order/order-club-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-						order.userId
-					}`
+					`/pages/seller/order/order-club-details?listType=${this.currentTab}&shopOrderId=${
+						order.shopOrderId
+					}&userId=${order.userId}`
 				)
-			}else{
+			} else {
 				this.$api.navigateTo(
-					`/pages/seller/order/order-details?listType=${this.currentTab}&orderId=${order.orderId}&userId=${
-						order.userId
-					}`
+					`/pages/seller/order/order-details?listType=${this.currentTab}&shopOrderId=${
+						order.shopOrderId
+					}&userId=${order.userId}`
 				)
 			}
 		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			console.log(data)
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-					break
-			}
-		},
-		handOrderAgain(orderId) {
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.productIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(orderId) {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 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(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handCenceConfirm(orderId) {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: orderId ,userIdentity : 1 })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.getOrderDatainit(this.currentTab)
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handSearchConfirmData(data) {
-			//确定筛选
-			this.groupServiceId = data.serviceProviderId
-			this.getOrderDatainit(this.currentTab)
-		},
 		handlSearchPath() {
 			this.$api.navigateTo('/pages/seller/order/search-order')
 		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-				// console.log(res.target)
-			}
-			return {
-				title: '您有新的订单,请点击查看~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.btnoRderID}&userId=${
-					this.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
+		
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -724,11 +590,10 @@ export default {
 			let stateText = '',
 				stateTextObject = {
 					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
+					2: '交易完成',
+					4: '已关闭',
+					5: '交易全退',
+					6: '交易全退',
 					11: '待付款待发货',
 					12: '待付款部分发货',
 					13: '待付款已发货',
@@ -737,8 +602,7 @@ export default {
 					23: '部分付款已发货',
 					31: '已付款待发货',
 					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
+					33: '已付款已发货'
 				}
 			Object.keys(stateTextObject).forEach(key => {
 				if (key == state) {
@@ -754,6 +618,7 @@ export default {
 		},
 		getHeaderTopHeight() {
 			// 状态栏高度
+			let self = this
 			let statusBarHeight = this.systeminfo.statusBarHeight
 			let headerPosi = this.headerBtnPosi
 			let btnPosi = {
@@ -768,6 +633,13 @@ export default {
 				right: this.systeminfo.screenWidth - headerPosi.right
 			}
 			this.navbarHeight = headerPosi.bottom + btnPosi.bottom // 原胶囊bottom + 现胶囊bottom
+			//  高度自适应
+			uni.getSystemInfo({
+				success: function(res) {
+					let calc = res.windowHeight
+					self.winHeight = calc - self.CustomBar - 82
+				}
+			})
 		},
 		setHeaderBtnPosi() {
 			// 获得胶囊按钮位置信息
@@ -790,7 +662,6 @@ export default {
 	},
 	onShow() {
 		this.isModalLayer = false
-		this.initGetStotage()
 	}
 }
 </script>
@@ -946,69 +817,34 @@ page {
 			height: 50rpx;
 			display: block;
 			position: absolute;
-			right: 0;
-			top: 9rpx;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.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;
-		}
-		.Rebate {
+		.bage{
 			display: inline-block;
 			width: 72rpx;
 			height: 32rpx;
-			background: #ff7a51;
-			border-radius: 6rpx;
+			margin: 19rpx 10rpx 0 10rpx;
+			border-radius: 4rpx;
 			line-height: 32rpx;
+			font-size: $font-size-22;
 			text-align: center;
 			color: #ffffff;
-			margin-top: 10rpx;
-			font-size: $font-size-22;
-			margin-right: 20rpx;
-		}
-		.bage-text {
-			display: inline-block;
-			font-size: $font-size-28;
-			line-height: 68rpx;
-			text-align: left;
-			color: $text-color;
-			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;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
+			&.ebate{
+				background: #ff7a51;
+			}
 		}
 		.order-title-tip {
-			float: right;
+			float: left;
 			font-size: $font-size-28;
-			line-height: 40rpx;
+			line-height: 68rpx;
 			text-align: right;
 			color: #ff2a2a;
 		}

+ 248 - 436
pages/seller/order/search-order.vue

@@ -1,6 +1,5 @@
 <template>
 	<view class="search-container">
-		<!-- <or-search :theme="themeClass" @getSearchText="getSearchText"></or-search> -->
 		<view class="search-main">
 			<view class="search">
 				<view class="search-input">
@@ -64,13 +63,16 @@
 									<text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
 								</view>
 								<view class="order-title-t">
+									<view class="order-title-tip tui-skeleton-fillet">
+										{{ order.status | statusFilters }}
+									</view>
 									<text
-										class="bage-buss tui-skeleton-fillet"
+										class="bage buss tui-skeleton-fillet"
 										v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
 										>协销</text
 									>
 									<text
-										class="bage-auto tui-skeleton-fillet"
+										class="bage auto tui-skeleton-fillet"
 										v-if="
 											order.orderSubmitType == 0 ||
 												order.orderSubmitType == 1 ||
@@ -79,9 +81,6 @@
 									>
 										自主
 									</text>
-									<text class="bage-text tui-skeleton-fillet">
-										订单号:{{ order.orderNo }}({{ order.orderId }})
-									</text>
 									<image
 										class="bage-icon"
 										src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
@@ -90,102 +89,92 @@
 									>
 									</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 class="goods-title">
+								<view v-if="order.shopPromotion" class="floor-item-act">
+									<view class="floor-tags">{{ order.shopPromotion.name }}</view>
 								</view>
+								<view class="title-text tui-skeleton-fillet">{{ order.shopName }}</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
+								class="goods-item"
+								v-for="(pros, prosIndex) in order.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.giftType == 2 || pros.giftType == 1"
+											>赠品</text
+										>
 									</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 clearfix">
-											<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+									<view class="pros-product clearfix">
+										<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="productspec tui-skeleton-fillet"
-												v-if="pros.productCategory != 2"
-												>规格:{{ pros.productUnit }}</view
+												class="price tui-skeleton-fillet"
+												:class="
+													pros.svipPriceFlag == 1 ||
+													PromotionsFormat(pros.productPromotion)
+														? 'none'
+														: ''
+												"
 											>
-											<view class="productprice">
+												<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
-													class="price tui-skeleton-fillet"
-													:class="
-														pros.svipPriceFlag == 1 ||
-														PromotionsFormat(pros.productPromotion)
-															? 'none'
-															: ''
-													"
+													v-if="PromotionsFormat(pros.productPromotion)"
+													class="floor-tags"
+													@click.stop="clickPopupShow(pros.productPromotion)"
 												>
-													<text>¥{{ pros.price | NumFormat }}</text>
+													{{ 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 class="count tui-skeleton-fillet">
-													<text class="small">x</text>{{ pros.num }}
+												<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>
-											</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>
+											</template>
 										</view>
 									</view>
 								</view>
-							</block>
+							</view>
 							<view class="order-footer">
-								<view class="order-footer-top" v-if="order.discountFee != 0"
+								<!-- <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="count tui-skeleton-fillet">共{{ order.itemCount }}件商品</view>
 									<view
 										class="money tui-skeleton-fillet"
 										v-if="order.status == 31 || order.status == 32 || order.status == 33"
@@ -196,35 +185,38 @@
 									</view>
 									<view class="money tui-skeleton-fillet" v-else>
 										待付总额:<label style="color:#f94b4b ;"
-											>¥{{ order.pendingPayments | NumFormat }}</label
+											>¥{{ order.obligation | NumFormat }}</label
 										>
 									</view>
 								</view>
 							</view>
 							<!-- 底部button -->
-							<order-button
+							<cm-list-button
 								ref="orderButton"
+								:order="order"
 								:status="order.status"
-								:rechargeGoods="order.rechargeGoods"
-								:orderId="order.orderId"
 								:userId="order.userId"
+								:shopOrderId="order.shopOrderId"
+								:rechargeGoods="order.rechargeGoods"
 								:secondHandOrderFlag="order.secondHandOrderFlag"
 								@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>
+						<tui-loadmore :visible="loadding" :index="3" type="black"/>
+						<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"/>
 						<!--加载loadding-->
 					</view>
 				</view>
 			</scroll-view>
 		</view>
 		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
-		<!-- 透明模态层 -->
-		<modal-layer v-if="isModalLayer"></modal-layer>
+		<cm-share-popup
+			:shopOrderId="handleShopOrderId"
+			:shareType="isShareType"
+			v-if="isShareModal"
+			@shareConfirm="onShareAppMessage"
+		/>
 		<!-- 再来一单弹窗 -->
 		<view class="aganBj" v-show="showAgan">
 			<view class="alertAgan">
@@ -236,23 +228,34 @@
 					</view>
 				</view>
 				<view class="BtnAll">
-					<view class="closebtn btn" @click="closeBtn">取消</view>
-					<view class="cancel btn" @click="cancelBtn">确定</view>
+					<view class="closebtn btn" @click="showAgan = false">取消</view>
+					<view class="cancel btn" @click="handleAddAgian">确定</view>
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		/>
+		<!-- 透明模态层 -->
+		<modal-layer v-if="isModalLayer"></modal-layer>
 	</view>
 </template>
 
 <script>
-import orSearch from '@/components/uni-search/or-search.vue'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import orderButton from './components/sellerOrderButton' //按钮
 import modalLayer from '@/components/modal-layer'
 import empty from '@/components/empty'
-import shareAlert from './components/sellerShareAlert.vue' //分享弹窗
-import authorize from '@/common/config/authorize.js'
+import cmListButton from './components/cm-list-button' //操作按钮 
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import orderMixins from './mixins/orderMixins.js'
+
 const defaultListQuery = {
 	pageNum: 1, // 页码
 	pageSize: 10, // 每页条数
@@ -260,13 +263,11 @@ const defaultListQuery = {
 	searchWord: '' // 搜索关键词
 }
 export default {
+	mixins: [orderMixins],
 	components: {
-		orSearch,
-		tuiLoadmore,
-		tuiNomore,
-		orderButton,
 		empty,
-		shareAlert
+		cmListButton,
+		cmSharePopup,
 	},
 	data() {
 		return {
@@ -282,8 +283,6 @@ export default {
 			showSkeleton: true,
 			userId: 0,
 			orderList: [],
-			btnClubUserID: 0,
-			btnoRderID: 0, //点击按钮传入的的订单ID
 			scrollTop: 0,
 			deteleType: '',
 			skeletonShow: true,
@@ -300,19 +299,12 @@ export default {
 			scrollHeight: '',
 			showAgan: false,
 			failList: [], // 再来一单可购买商品
-			promptitle: '',
-			aganOrderId: 0
+			promptitle: ''
 		}
 	},
 	onLoad() {
 		this.initGetSerachRecord()
 	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
 	methods: {
 		subMitSearch() {
 			if (this.listQuery.searchWord == '') {
@@ -323,21 +315,127 @@ export default {
 			}
 		},
 		async initGetSerachRecord() {
-			const userInfo = await this.$api.getStorage()
-			this.listQuery.serviceProviderId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
-			this.userId = userInfo.userId ? userInfo.userId : 0
-			this.OrderService.SearchOrderHistory({ userId: this.userId })
-				.then(response => {
-					this.serachRecordList = response.data
-					if (this.serachRecordList.length > 0) {
-						this.isSearchHistory = true
+			try{
+				const userInfo = await this.$api.getStorage()
+				this.listQuery.serviceProviderId = userInfo.serviceProviderId
+				this.userId = userInfo.userId
+				const res = await this.OrderService.SearchOrderHistory({ userId: this.userId })
+				const data = res.data
+				this.serachRecordList = data
+				if (this.serachRecordList.length > 0) {
+					this.isSearchHistory = true
+				} else {
+					this.isSearchHistory = false
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//清空历史记录
+		async confirmDetele() {
+			try{
+				const res = await this.OrderService.ClearOrderHistory({ userId: this.userId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				this.serachRecordList = []
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		// 搜索订单列表
+		async getOrderDatainit() {
+			try{
+				const res = await this.SellerService.getSellerSearchOrderList(this.listQuery)
+				const data = res.data
+				if (data && data.list.length > 0) {
+					this.orderList = data.list
+					this.hasNextPage = data
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
 					} else {
-						this.isSearchHistory = false
+						if (this.orderList.length < 2) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.nomoreText = '已至底部'
+						}
 					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+					this.isShowWrapper = true
+					this.showSkeleton = true
+					this.isShowEmpty = false
+				} else {
+					this.isShowEmpty = true
+				}
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//上拉加载
+		async getOnReachBottomData() {
+			try{
+				this.listQuery.pageNum += 1
+				const res = await this.SellerService.getSellerSearchOrderList(this.listQuery)
+				const data = res.data
+				this.orderList = this.orderList.concat(data.list)
+				this.hasNextPage = data.hasNextPage
+				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)
+			}
+		},
+		//获取点击
+		handButtonConfirm(data) {
+			this.handleShopOrderId = data.shopOrderId
+			switch (data.type) {
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
+					break
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 2
+					break
+				case 'confirm': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 3
+					break
+				case 'again':
+					this.handOrderAgain(data.shopOrderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
+					break
+			}
+		},
+		scrolltolower() {
+			if (this.hasNextPage) {
+				this.loadding = true
+				this.pullUpOn = true
+				this.showSkeleton = false
+				this.getOnReachBottomData()
+			}
+		},
+		detail(order) {
+			//订单详情跳转
+			this.isModalLayer = true
+			this.$api.navigateTo(
+				`/pages/seller/order/order-details?type=seacrch&shopOrderId=${order.shopOrderId}&userId=${order.userId}`
+			)
 		},
 		onShowClose() {
 			//输入框失去焦点时触发
@@ -362,19 +460,6 @@ export default {
 			this.isShowClose = true
 			this.subMitSearch()
 		},
-		confirmDetele() {
-			//清空历史记录
-			this.$util.modal('提示', '确定删除历史记录?', '确定', '取消', true, () => {
-				this.OrderService.ClearOrderHistory({ userId: this.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 != '') {
@@ -383,223 +468,7 @@ export default {
 				this.isShowClose = false
 			}
 		},
-		getOrderDatainit(index, source) {
-			/**
-			 * @订单初始化加载  仅加载第一页码
-			 * @param:searchWord(关键词)
-			 * @param:serviceProviderId(用户ID)
-			 * @param:pageNum(页码数)
-			 * @param:listQuery.pageSize(每页条数)
-			 * @param:organizeID(全局变量组织ID)
-			 */
-
-			this.SellerService.getSellerOrderList(this.listQuery)
-				.then(response => {
-					this.isShowWrapper = true
-					this.showSkeleton = true
-					let data = response.data
-					if (data.list && data.list.length > 0) {
-						let filrerData = data.list.filter(item => {
-							//添加不同状态下订单的表现形式
-							item = Object.assign(item, this.StateExpFormat(item.state))
-							return item
-						})
-						this.orderList = []
-						filrerData.forEach(item => {
-							this.orderList.push(item)
-						})
-						this.hasNextPage = data.hasNextPage
-						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(index) {
-			//上拉加载
-			this.listQuery.pageNum += 1
-			this.SellerService.getSellerOrderList(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(order) {
-			//订单详情跳转
-			this.isModalLayer = true
-			this.$api.navigateTo(
-				`/pages/seller/order/order-details?type=seacrch&orderId=${order.orderId}&userId=${order.userId}`
-			)
-		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handShowAlert(data)
-			this.btnoRderID = data.orderId
-		},
-		handShowAlert(data) {
-			//执行
-			switch (data.type) {
-				case 'query':
-					this.isModalLayer = true
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderID=' + data.orderId)
-					break
-				case 'delete':
-					this.handOrderDetele(data.orderId)
-					break
-				case 'cancel':
-					this.handCenceConfirm(data.orderId)
-					break
-				case 'confirm':
-					this.handOrderConfirm(data.orderId)
-					break
-				case 'again':
-					this.handOrderAgain(data.orderId)
-			}
-		},
-		handOrderAgain(orderId) {
-			// 再来一单
-			this.aganOrderId = orderId
-			this.SellerService.SellerCreateOrderAgain({
-				confirmFlag: 0,
-				orderId: this.aganOrderId,
-				serviceProviderId: this.listQuery.serviceProviderId
-			})
-				.then(res => {
-					if (res.code == 0) {
-						this.$api.setStorage('orderUserInfo', {
-							clubId: res.data.clubId,
-							againBuyProductIds: res.data.againBuyProductIds,
-							userId: res.data.userId
-						})
-						this.$api.navigateTo('/pages/seller/cart/cart')
-					}
-				})
-				.catch(error => {
-					if (error.code == -3) {
-						this.showAgan = true
-						this.promptitle = error.msg
-						this.failList = error.data
-					} else if (error.code == -2) {
-						this.$util.modal('', error.msg, '确定', '', false, () => {})
-					} else {
-						this.$util.msg(error.msg, 2000)
-					}
-				})
-		},
-		closeBtn() {
-			//
-			this.showAgan = false
-		},
-		cancelBtn() {
-			// 再来一单弹窗
-			this.SellerService.SellerCreateOrderAgain({
-				serviceProviderId: this.listQuery.serviceProviderId,
-				orderId: this.aganOrderId,
-				confirmFlag: 1
-			}).then(res => {
-				if (res.code == 0) {
-					this.$api.navigateTo('/pages/seller/cart/cart')
-					this.showAgan = false
-				}
-			})
-		},
-		handOrderConfirm(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 : 1})
-					.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.btnClubUserID
-				}&serviceProviderId=${this.serviceProviderId}`,
-				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-			}
-		},
+		
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -611,38 +480,6 @@ export default {
 			}
 			return false
 		},
-		//订单状态文字和颜色
-		StateExpFormat(state) {
-			let stateText = '',
-				stateTextObject = {
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(key => {
-				if (key == state) {
-					stateText = stateTextObject[key]
-				}
-			})
-			return stateText
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
-		},
 		setScrollHeight() {
 			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
 			this.windowHeight = windowHeight - 1
@@ -914,56 +751,31 @@ page {
 			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;
+			right: 110rpx;
+			top: 12rpx;
 		}
-		.bage-auto {
+		.bage{
 			display: inline-block;
 			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			height: 32rpx;
+			margin: 19rpx 10rpx 0 10rpx;
 			border-radius: 4rpx;
-			line-height: 30rpx;
+			line-height: 32rpx;
 			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;
+			float: right;
+			&.buss{
+				background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			}
+			&.auto{
+				background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			}
 		}
 		.order-title-tip {
-			float: right;
+			float: left;
 			font-size: $font-size-28;
-			line-height: 40rpx;
+			line-height: 68rpx;
 			text-align: right;
 			color: #ff2a2a;
 		}

+ 0 - 0
components/cm-module/orderDetails/goodsList.vue → pages/supplier/order/components/details/goodsList.vue


+ 3 - 2
components/cm-module/orderDetails/orderAddress.vue → pages/supplier/order/components/details/orderAddress.vue

@@ -22,7 +22,7 @@
 				</view>
 		 	</view>
 		 </view>
-		 <image  src="../../../static/temp/line@3x.png" mode=""></image>
+		 <image  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
 	</view>
 </template>
 
@@ -37,7 +37,8 @@
 		},
 		data() {
 			return{
-				initData:''
+				initData:'',
+				StaticUrl: this.$Static,
 			}
 		},
 		created(){

+ 0 - 0
components/cm-module/orderDetails/orderButton.vue → pages/supplier/order/components/details/orderButton.vue


+ 0 - 0
components/cm-module/orderDetails/orderListButton.vue → pages/supplier/order/components/details/orderListButton.vue


+ 579 - 542
pages/supplier/order/order-details.vue

@@ -5,56 +5,64 @@
 			<view class="address-section clearfix">
 				<view class="address-content">
 					<view class="info-item">
-						<text class="label">买家名称:{{orderInfo.userInfo.name}}</text>
+						<text class="label">买家名称:{{ orderInfo.userInfo.name }}</text>
 					</view>
 					<view class="info-item">
-						<text class="label">收货人:{{orderInfo.userInfo.receiver}}</text>
-						<text class="label" :style="{marginLeft:40+'rpx'}">联系方式:{{orderInfo.userInfo.mobile}}</text>
+						<text class="label">收货人:{{ orderInfo.userInfo.receiver }}</text>
+						<text class="label" :style="{ marginLeft: 40 + 'rpx' }"
+							>联系方式:{{ orderInfo.userInfo.mobile }}</text
+						>
 					</view>
 					<view class="info-item">
-						<text class="label">收货地址:<text style="color: #666666;">{{orderInfo.userInfo.address}}</text></text>
+						<text class="label"
+							>收货地址:<text style="color: #666666;">{{ orderInfo.userInfo.address }}</text></text
+						>
 					</view>
 				</view>
-				<image  src="../../../static/temp/line@3x.png" mode=""></image>
+				 <image  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
 			</view>
 			<!-- 商品 -->
 			<view class="goods-list">
 				<view class="goods-item clearfix">
-					<view class="productlist" v-for="(pros,idx) in orderInfo.orderProductList" :key="idx">
+					<view class="productlist" v-for="(pros, idx) in orderInfo.orderProductList" :key="idx">
 						<view class="goods-pros-t">
 							<view class="pros-left">
 								<view class="pros-img"><image :src="pros.image" alt="" mode="aspectFill"/></view>
 							</view>
 							<view class="pros-product">
-								<view class="producttitle">{{pros.aliasName ? pros.aliasName : ''}}</view>
-								<view class="productspec">规格:{{pros.productUnit ? pros.productUnit : ''}}</view>
+								<view class="producttitle">{{ pros.aliasName ? pros.aliasName : '' }}</view>
+								<view class="productspec">规格:{{ pros.productUnit ? pros.productUnit : '' }}</view>
 								<view class="product-view">
 									<view class="view-num price">¥{{ pros.price | NumFormat }}</view>
-									<view class="view-num num"> <text class="small">X</text> {{pros.num+pros.presentNum}}</view>
+									<view class="view-num num">
+										<text class="small">X</text> {{ pros.num + pros.presentNum }}</view
+									>
 								</view>
 								<view class="product-view">
-									<view class="view-num">已发货:{{pros.shipmentsNum}}</view>
-									<view class="view-num">已退货:{{pros.returnedNum}}</view>
-									<view class="view-num">已取消:{{pros.actualCancelNum}}</view>
+									<view class="view-num">已发货:{{ pros.shipmentsNum }}</view>
+									<view class="view-num">已退货:{{ pros.returnedNum }}</view>
+									<view class="view-num">已取消:{{ pros.actualCancelNum }}</view>
 								</view>
-							</view>	
+							</view>
 						</view>
 						<view class="product-total">
 							<view class="total">
 								合计: <text>¥{{ pros.totalAmount | NumFormat }}</text>
 							</view>
-						</view>	
-					</view>	
-					
+						</view>
+					</view>
+
 					<view class="goods-pros-m" v-if="orderInfo.note">
 						<view class="m-text">留言:</view>
 						<view class="m-input">
-							<view class="text">{{orderInfo.note ? orderInfo.note : ''}}</view>
-						</view>	
+							<view class="text">{{ orderInfo.note ? orderInfo.note : '' }}</view>
+						</view>
 					</view>
 					<view class="goods-pros-b">
-						<view class="count">共{{orderInfo.itemCount}}件商品</view>
-						<view class="money">商品总额:<text class="red">¥{{orderInfo.productAmount | NumFormat}}</text> </view>
+						<view class="count">共{{ orderInfo.itemCount }}件商品</view>
+						<view class="money"
+							>商品总额:<text class="red">¥{{ orderInfo.productAmount | NumFormat }}</text>
+						</view>
 					</view>
 				</view>
 			</view>
@@ -63,637 +71,666 @@
 				<view class="order-title">
 					<view class="order-title-t">
 						<view class="order-title-num">订单编号:{{ orderInfo.shopOrderNo }}</view>
-						<view class="order-title-tip">结算状态:<text :style="{color:setStatusText(orderInfo.payStatus)}">{{ orderInfo.payStatus | payStatusType }}</text></view>
+						<view class="order-title-tip"
+							>结算状态:<text :style="{ color: setStatusText(orderInfo.payStatus) }">{{
+								orderInfo.payStatus | payStatusType
+							}}</text></view
+						>
 					</view>
 					<view class="order-title-t">
 						<view class="order-title-num">下单时间:{{ orderInfo.orderTime }}</view>
-						<view class="order-title-tip">发货状态:<text class="status" :style="{color:setStatusText(orderInfo.receiptStatus)}">{{ orderInfo.sendOutStatus | sendOutStatusType }}</text></view>
+						<view class="order-title-tip"
+							>发货状态:<text
+								class="status"
+								:style="{ color: setStatusText(orderInfo.receiptStatus) }"
+								>{{ orderInfo.sendOutStatus | sendOutStatusType }}</text
+							></view
+						>
 					</view>
 					<template v-if="isOpenInfoFlag">
 						<view class="order-title-t">
-							<view class="order-title-num">结算商品金额:<text class="red">¥{{orderInfo.shopProductAmount | NumFormat}}</text></view>
-							<view class="order-title-tip">结算税费:<text class="red">¥{{orderInfo.shopTaxFee | NumFormat}}</text></view>
+							<view class="order-title-num"
+								>结算商品金额:<text class="red"
+									>¥{{ orderInfo.shopProductAmount | NumFormat }}</text
+								></view
+							>
+							<view class="order-title-tip"
+								>结算税费:<text class="red">¥{{ orderInfo.shopTaxFee | NumFormat }}</text></view
+							>
 						</view>
 						<view class="order-title-t">
-							<view class="order-title-num">结算运费:<text class="red">¥{{orderInfo.shopPostFee | NumFormat}}</text></view>
-							<view class="order-title-tip">总结算金额:<text class="red">¥{{orderInfo.shouldPayShopAmount | NumFormat}}</text></view>
+							<view class="order-title-num"
+								>结算运费:<text class="red">¥{{ orderInfo.shopPostFee | NumFormat }}</text></view
+							>
+							<view class="order-title-tip"
+								>总结算金额:<text class="red"
+									>¥{{ orderInfo.shouldPayShopAmount | NumFormat }}</text
+								></view
+							>
 						</view>
 						<view class="order-title-t">
-							<view class="order-title-num">已结算金额:<text class="red">¥{{orderInfo.payedShopAmount | NumFormat}}</text></view>
+							<view class="order-title-num"
+								>已结算金额:<text class="red">¥{{ orderInfo.payedShopAmount | NumFormat }}</text></view
+							>
 							<view class="order-title-tip"></view>
 						</view>
-					</template>	
+					</template>
 				</view>
 				<view class="order-more" v-if="isOpenFlag">
-					<view class="btnInfo" @click="OpenFlagShow">查看更多<label class="iconfont icon-xiangxiajiantou"></label></view>
+					<view class="btnInfo" @click="OpenFlagShow"
+						>查看更多<label class="iconfont icon-xiangxiajiantou"></label
+					></view>
 				</view>
 			</view>
 			<!-- 结算记录 -->
 			<view class="information-record clearfix">
-				<view class="record-title">
-					<view class="record-title-l">结算记录</view>
-				</view>
-				<view class="record-list" v-if="payShopRecord.length>0">
-					<view class="record-item" v-for="(item,index) in payShopRecord" :key="index">
-						<view class="item-time mm">¥{{item.payAmount | NumFormat}}</view>
-						<view class="item-time tt">{{item.payTime ? item.payTime : '无'}}</view>
+				<view class="record-title"> <view class="record-title-l">结算记录</view> </view>
+				<view class="record-list" v-if="payShopRecord.length > 0">
+					<view class="record-item" v-for="(item, index) in payShopRecord" :key="index">
+						<view class="item-time mm">¥{{ item.payAmount | NumFormat }}</view>
+						<view class="item-time tt">{{ item.payTime ? item.payTime : '无' }}</view>
 					</view>
 				</view>
-				<view class="record-empty" v-else>
-				 	<text>暂无结算记录</text>
-				</view>
-			</view>	
+				<view class="record-empty" v-else> <text>暂无结算记录</text> </view>
+			</view>
 			<!-- 底部button -->
-			<order-button ref="orderButton" 
-						  v-if= "isRequest" 
-						  :status= "btnStatus" 
-						  :shareCode= "shareCode"
-						   @buttonConfirm="handButtonConfirm">
+			<order-button
+				ref="orderButton"
+				v-if="isRequest"
+				:status="btnStatus"
+				:shareCode="shareCode"
+				@buttonConfirm="handButtonConfirm"
+			>
 			</order-button>
 		</view>
-		<share-alert  :shopOrderId="shopOrderId" 
-					  v-if="isShareModal"  
-					  @shareConfirm ='onShareAppMessage'>
-		</share-alert>		
+		<share-alert :shopOrderId="shopOrderId" v-if="isShareModal" @shareConfirm="onShareAppMessage"> </share-alert>
 	</view>
 </template>
 
 <script>
-	import headerBack from '@/components/cm-module/headerNavbar/header-back' 		 	 //自定义导航
-	import orderAddress from '@/components/cm-module/orderDetails/orderAddress' 		 //地址信息
-	import goodsList from '@/components/cm-module/orderDetails/goodsList'		 		 //商品列表
-	import orderButton from './components/supplierDetaileButton'	//底部按钮
-	import shareAlert from '../components/supplierShareAlert'	  //分享弹窗
-	export default {
-		components:{
-			headerBack,
-			orderAddress,
-			goodsList,
-			orderButton,
-			shareAlert,
-		},
-		data() {
-			return {
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '订单详情', // 导航栏 中间的标题
-					haveBack:false,
-					textLeft:this.$store.state.isIphone
-				},
-				windowHeight: '',
-				isIphoneX:this.$store.state.isIphoneX,
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				state:0,
-				userID:'',
-				shopOrderId:'',
-				shareCode:'',				//分享码
-				payStatus:0,
-				btnStatus:0,				//按钮组件状态
-				isRequest:false,			//是否加载完成渲染子组件
-				isOrderShare:false,
-				isShareModal:false,
-				orderInfo:{},				//订单信息
-				payShopRecord:[],			//结算记录
-				isOpenInfoFlag:false,
-				isOpenFlag:true
-				
+import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
+import orderAddress from './components/details/orderAddress' //地址信息
+import goodsList from './components/details/goodsList' //商品列表
+import orderButton from './components/supplierDetaileButton' //底部按钮
+import shareAlert from '../components/supplierShareAlert' //分享弹窗
+export default {
+	components: {
+		headerBack,
+		orderAddress,
+		goodsList,
+		orderButton,
+		shareAlert
+	},
+	data() {
+		return {
+			nvabarData: {
+				//顶部自定义导航
+				showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+				showSearch: 0,
+				title: '订单详情', // 导航栏 中间的标题
+				haveBack: false,
+				textLeft: this.$store.state.isIphone
+			},
+			StaticUrl: this.$Static,
+			windowHeight: '',
+			isIphoneX: this.$store.state.isIphoneX,
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			state: 0,
+			userID: '',
+			shopOrderId: '',
+			shareCode: '', //分享码
+			payStatus: 0,
+			btnStatus: 0, //按钮组件状态
+			isRequest: false, //是否加载完成渲染子组件
+			isOrderShare: false,
+			isShareModal: false,
+			orderInfo: {}, //订单信息
+			payShopRecord: [], //结算记录
+			isOpenInfoFlag: false,
+			isOpenFlag: true
+		}
+	},
+	onLoad(option) {
+		console.log(option.shopOrderId)
+		this.shopOrderId = option.shopOrderId
+		this.initShopOrderDetails()
+	},
+	filters: {
+		sendOutStatusType(value) {
+			if (value === null) {
+				return '未发货'
+			} else if (value === 1) {
+				return '待发货'
+			} else if (value === 2) {
+				return '部分发货'
+			} else {
+				return '已发货'
 			}
 		},
-		onLoad(option){
-			console.log(option.shopOrderId)
-			this.shopOrderId = option.shopOrderId
-			this.initShopOrderDetails()
+		payStatusType(value) {
+			if (value === 1) {
+				return '待结算'
+			} else if (value === 2) {
+				return '部分结算'
+			} else {
+				return '已结算'
+			}
 		},
-		filters:{
-			sendOutStatusType(value) {
-				if (value === null) {
-				  return '未发货'
-				} else if(value === 1) {
-				  return '待发货'
-				} else if(value === 2) {
-				  return '部分发货'
-				} else{
-				  return '已发货'
-				}
-			},
-			payStatusType(value) {
-				if (value === 1) {
-				  return '待结算'
-				} else if (value === 2) {
-				  return '部分结算'
-				} else {
-				  return '已结算'
-				}
-			},
-			NumFormat(value) {//处理金额
-				//处理金额
-				if (!value) return '0.00'
-				let number = parseFloat(Number(value))
-				return number
-			},
-		},	
-		methods: {
-			initShopOrderDetails(){//初始化页面数据@参数:订单ID
-				this.ShopService.GetShopOrderDetails({ shopOrderId : this.shopOrderId }).then(response =>{
-					this.orderInfo  = response.data.shopOrder
+		NumFormat(value) {
+			//处理金额
+			//处理金额
+			if (!value) return '0.00'
+			let number = parseFloat(Number(value))
+			return number
+		}
+	},
+	methods: {
+		initShopOrderDetails() {
+			//初始化页面数据@参数:订单ID
+			this.ShopService.GetShopOrderDetails({ shopOrderId: this.shopOrderId })
+				.then(response => {
+					this.orderInfo = response.data.shopOrder
 					this.btnStatus = this.orderInfo.sendOutStatus
 					this.payShopRecord = response.data.payShopRecord
 					this.isRequest = true
-				}).catch(err =>{
-					this.$util.msg(err.msg,2000)
 				})
-			},
-			handButtonConfirm(data){//监听点击时间的按钮类型并执行...
-				this.handShowAlert(data)
-			},
-			handShowAlert(type){//判断点击的按钮类型并执行...
-				switch(type){
-					case 'record':
-						this.$api.navigateTo('/pages/supplier/deliver/deliver-record?shopOrderId='+this.shopOrderId)
-						break
-					case 'deliver':
-						this.$api.navigateTo('/pages/supplier/deliver/deliver-goods?shopOrderId='+this.shopOrderId)
-						break
-				}
-			},
-			setStatusText(status){
-				let textColor=''
-				switch(status){
-					case 1:
-						textColor = '#FF2A2A'
-						break
-					case 2:
-						textColor = '#FF5B00'
-						break
-					case 3:
-						textColor = '#38CB3D'
-						break
-				}
-				return textColor
-			},
-			OpenFlagShow(){//查看更多
-				this.isOpenInfoFlag = true
-				this.isOpenFlag = false
-			},
-			onShareCode(){
-				this.isShareModal = true
-			},
-			onShareAppMessage(res){//分享转发
-				this.isShareModal = false
-				if (res.from === 'button') {
-					// 来自页面内转发按钮
-			    }
-				return {
-					title: '您有订单待处理,请点击查看~',
-					path: `/pages/supplier/login/share-info?authority=3&shopOrderId=${this.shopOrderId}`,
-					imageUrl:'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-				}
+				.catch(err => {
+					this.$util.msg(err.msg, 2000)
+				})
+		},
+		handButtonConfirm(data) {
+			//监听点击时间的按钮类型并执行...
+			this.handShowAlert(data)
+		},
+		handShowAlert(type) {
+			//判断点击的按钮类型并执行...
+			switch (type) {
+				case 'record':
+					this.$api.navigateTo('/pages/supplier/deliver/deliver-record?shopOrderId=' + this.shopOrderId)
+					break
+				case 'deliver':
+					this.$api.navigateTo('/pages/supplier/deliver/deliver-goods?shopOrderId=' + this.shopOrderId)
+					break
 			}
 		},
-		onPullDownRefresh() {//下拉刷新
-			this.initShopOrderDetails()
-			uni.stopPullDownRefresh()
+		setStatusText(status) {
+			let textColor = ''
+			switch (status) {
+				case 1:
+					textColor = '#FF2A2A'
+					break
+				case 2:
+					textColor = '#FF5B00'
+					break
+				case 3:
+					textColor = '#38CB3D'
+					break
+			}
+			return textColor
 		},
-		onShow() {
-
+		OpenFlagShow() {
+			//查看更多
+			this.isOpenInfoFlag = true
+			this.isOpenFlag = false
+		},
+		onShareCode() {
+			this.isShareModal = true
+		},
+		onShareAppMessage(res) {
+			//分享转发
+			this.isShareModal = false
+			if (res.from === 'button') {
+				// 来自页面内转发按钮
+			}
+			return {
+				title: '您有订单待处理,请点击查看~',
+				path: `/pages/supplier/login/share-info?authority=3&shopOrderId=${this.shopOrderId}`,
+				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+			}
 		}
-	}
+	},
+	onPullDownRefresh() {
+		//下拉刷新
+		this.initShopOrderDetails()
+		uni.stopPullDownRefresh()
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page {
-		background:#F7F7F7;
-	}
-	.details{
-		padding-bottom: 130rpx;
+page {
+	background: #f7f7f7;
+}
+.details {
+	padding-bottom: 130rpx;
+	width: 100%;
+	height: auto;
+}
+.container-details {
+	background: #f7f7f7;
+}
+.information-content {
+	width: 702rpx;
+	height: auto;
+	padding: 10rpx 24rpx;
+	background: #ffffff;
+	margin: 24rpx 0;
+	.order-more {
 		width: 100%;
 		height: auto;
+		float: left;
+		.btnInfo {
+			width: 140rpx;
+			height: 40rpx;
+			border: 2rpx solid #e1e1e1;
+			border-radius: 6rpx;
+			padding: 5rpx;
+			text-align: center;
+			color: #b2b2b2;
+			margin: 20rpx auto;
+			font-size: $font-size-24;
+			.iconfont {
+				position: relative;
+				top: 5rpx;
+				right: -3rpx;
+			}
+		}
 	}
-	.container-details{
-		background:#F7F7F7;
-	}
-	.information-content{
-		width: 702rpx;
+	.order-title {
+		width: 100%;
 		height: auto;
-		padding:10rpx 24rpx;
-		background: #FFFFFF;
-		margin: 24rpx 0;
-		.order-more{
+		float: left;
+		.order-title-t {
 			width: 100%;
-			height: auto;
+			height: 58rpx;
 			float: left;
-			.btnInfo{
-				width: 140rpx;
-				height: 40rpx;
-				border: 2rpx solid #e1e1e1;
-				border-radius: 6rpx;
-				padding: 5rpx;
-				text-align: center;
-				color: #b2b2b2;
-				margin: 20rpx auto;
-				font-size:  $font-size-24;
-				.iconfont{
-					position: relative;
-					top: 5rpx;
-					right: -3rpx;
+			font-size: $font-size-28;
+			line-height: 58rpx;
+			.order-title-num {
+				float: left;
+				text-align: left;
+				color: #666666;
+				.red {
+					color: #f94b4b;
+					font-weight: bold;
 				}
 			}
-		}
-		.order-title{
-			width: 100%;
-			height: auto;
-			float: left;
-			.order-title-t{
-				width: 100%;
-				height: 58rpx;
-				float: left;
+			.order-title-tip {
+				float: right;
+				text-align: right;
 				font-size: $font-size-28;
-				line-height: 58rpx;
-				.order-title-num{
-					float: left;
-					text-align: left;
-					color: #666666;
-					.red{
-						color: #f94b4b;
-						font-weight: bold;
-					}
+				color: #666666;
+				.red {
+					color: #f94b4b;
+					font-weight: bold;
 				}
-				.order-title-tip{
-					float: right;
-					text-align: right;
-					font-size: $font-size-28;
-					color: #666666;
-					.red{
-						color: #f94b4b;
-						font-weight: bold;
-					}
-					.status{
-						color: $color-system;
-					}
+				.status {
+					color: $color-system;
 				}
 			}
-			.order-title-b{
-				width: 100%;
-				height: 40rpx;
-				float: left;
-				margin-top: 8rpx;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: #999999;
-				text-align: left;
-			}
 		}
-		.info-item{
-			height: 58rpx;
+		.order-title-b {
 			width: 100%;
-			display: flex;
-			.item-view{
-				flex: 1;
-				line-height: 58rpx;
-				font-size: $font-size-28;
-				color: #333333;
-			}
+			height: 40rpx;
+			float: left;
+			margin-top: 8rpx;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #999999;
+			text-align: left;
 		}
 	}
-	.address-section{
+	.info-item {
+		height: 58rpx;
 		width: 100%;
-		margin-bottom: 24rpx;
-		.address-content{
-			width: 100%;
-			height: auto;
-			padding:10rpx 24rpx;
-			background: #FFFFFF;
-			box-sizing: border-box;
-			float: left;
-			.info-item{
-				width: 100%;
-				display: flex;
-				line-height: 50rpx;
-				font-size: $font-size-28;
-				color: #333333;
-			}
+		display: flex;
+		.item-view {
+			flex: 1;
+			line-height: 58rpx;
+			font-size: $font-size-28;
+			color: #333333;
 		}
-		image{
-			float: left;
+	}
+}
+.address-section {
+	width: 100%;
+	margin-bottom: 24rpx;
+	.address-content {
+		width: 100%;
+		height: auto;
+		padding: 10rpx 24rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		float: left;
+		.info-item {
 			width: 100%;
-			height: 6rpx;
+			display: flex;
+			line-height: 50rpx;
+			font-size: $font-size-28;
+			color: #333333;
 		}
 	}
-	
-	.goods-list{
+	image {
+		float: left;
 		width: 100%;
+		height: 6rpx;
+	}
+}
+
+.goods-list {
+	width: 100%;
+	height: auto;
+	background: #f7f7f7;
+	.goods-item {
+		width: 702rpx;
+		padding: 24rpx;
 		height: auto;
-		background: #F7F7F7;
-		.goods-item{
-			width: 702rpx;
-			padding:24rpx;
-			height: auto;
-			background: #FFFFFF;
-			margin-bottom: 24rpx;
-			&:last-child{
-				margin-bottom: 0;
-			}
+		background: #ffffff;
+		margin-bottom: 24rpx;
+		&:last-child {
+			margin-bottom: 0;
 		}
-		.productlist{
-			width: 100%;
-			height: auto;
-		}	
-		.goods-pros-t{
-			display: flex;
-			width: 100%;
-			height: auto;
-			padding: 12rpx 0;
-			.pros-left{
-				width: 210rpx;
+	}
+	.productlist {
+		width: 100%;
+		height: auto;
+	}
+	.goods-pros-t {
+		display: flex;
+		width: 100%;
+		height: auto;
+		padding: 12rpx 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;
+			image {
+				width: 100%;
 				height: 100%;
-				margin:0 26rpx 0 0;
-			}
-			.pros-img{
-				width: 210rpx;
-				height: 210rpx;
 				border-radius: 10rpx;
-				border:1px solid #f3f3f3;
-				image{
-					width: 100%;
-					height: 100%;
-					border-radius: 10rpx;
-				}
 			}
 		}
-		.product-total{
-			width: 100%;
-			height: 60rpx;
-			float: left;
-			border-bottom: 1px solid #E1E1E1;
-			.total{
-				float: right;
-				font-size: 28rpx;
-				line-height: 60rpx;
-				color: #333333;
-				font-weight: bold;
-				text{
-					color: #f94b4b;
-				}
+	}
+	.product-total {
+		width: 100%;
+		height: 60rpx;
+		float: left;
+		border-bottom: 1px solid #e1e1e1;
+		.total {
+			float: right;
+			font-size: 28rpx;
+			line-height: 60rpx;
+			color: #333333;
+			font-weight: bold;
+			text {
+				color: #f94b4b;
 			}
 		}
-		.pros-product{
-			width: 468rpx;
-			height: 100%;
-			line-height: 36rpx;
-			font-size: $font-size-26;	
-			position: relative;
-			.icon-genghuan{
-				position: absolute;
-				top: 50%;
-				right: 0;
-				font-size: $font-size-44;
-				color: $color-system;
-			}
-			.product-view{
-				width: 100%;
-				height: auto;
-				display: flex;
-				.view-num{
-					flex: 1;
-					text-align: left;
-					font-size: $font-size-26;
-					color: #666666;
-					line-height: 44rpx;
-					.small{
-						font-size: $font-size-20;
-						color: #999999;
-					}
-					&.price{
-						flex: 9;
-						color: #f94b4b;
-						font-weight: bold;
-					}
-					&.num{
-						flex: 1;
-						text-align: right;
-					}
-				}
-			}
-			.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;
-				font-size: $font-size-28;
-			}
-			.productspec{
-				height: 44rpx;
+	}
+	.pros-product {
+		width: 468rpx;
+		height: 100%;
+		line-height: 36rpx;
+		font-size: $font-size-26;
+		position: relative;
+		.icon-genghuan {
+			position: absolute;
+			top: 50%;
+			right: 0;
+			font-size: $font-size-44;
+			color: $color-system;
+		}
+		.product-view {
+			width: 100%;
+			height: auto;
+			display: flex;
+			.view-num {
+				flex: 1;
+				text-align: left;
+				font-size: $font-size-26;
 				color: #666666;
 				line-height: 44rpx;
-			}
-			.productprice{
-				height: 48rpx;
-				position: absolute;
-				width: 100%;
-				bottom: 0;
-				.price{
-					line-height: 48rpx;
-					font-size: $font-size-28;
-					width: 48%;
+				.small {
+					font-size: $font-size-20;
+					color: #999999;
+				}
+				&.price {
+					flex: 9;
 					color: #f94b4b;
-					float: left;
+					font-weight: bold;
 				}
-				.count{
-					height: 100%;
-					float: right;
-					position: relative;
-					.small{
-						color: #666666;
-					}
+				&.num {
+					flex: 1;
+					text-align: right;
 				}
 			}
 		}
-		.goods-pros-m{
+		.producttitle {
 			width: 100%;
+			display: inline-block;
 			height: auto;
-			line-height: 76rpx;
-			font-size: $font-size-26;
-			color: $text-color;
-			float: left;
-			padding: 10rpx 0;
-			border-bottom: 1px solid #F7F7F7;
-			.m-text{
-				width: 82rpx;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			word-break: break-all;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+			overflow: hidden;
+			margin-bottom: 8rpx;
+			font-size: $font-size-28;
+		}
+		.productspec {
+			height: 44rpx;
+			color: #666666;
+			line-height: 44rpx;
+		}
+		.productprice {
+			height: 48rpx;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			.price {
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				width: 48%;
+				color: #f94b4b;
 				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;
+			.count {
+				height: 100%;
+				float: right;
 				position: relative;
-				width: 600rpx;
-				height: auto;
-				padding: 20rpx 0 10rpx 0;
-				background: #FFFFFF;
-				.text{
-					width: 100%;
-					height: 100%;
-					font-size: $font-size-26;
-					line-height: 36rpx;
-					color: #333333;
+				.small {
+					color: #666666;
 				}
 			}
 		}
-		.goods-pros-b{
-			width:100%;
-			height: 40rpx;
-			margin-top: 12rpx;
+	}
+	.goods-pros-m {
+		width: 100%;
+		height: auto;
+		line-height: 76rpx;
+		font-size: $font-size-26;
+		color: $text-color;
+		float: left;
+		padding: 10rpx 0;
+		border-bottom: 1px solid #f7f7f7;
+		.m-text {
+			width: 82rpx;
 			float: left;
-			.count{
-				float: left;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: $text-color;
-				display: flex;
-				justify-content: flex-end;
-			}
-			.money{
-				float: right;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: $text-color;
-				display: flex;
-				justify-content: flex-end;
-				.red{
-					color: #f94b4b;
-					font-weight: bold;
-				}
+			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: 600rpx;
+			height: auto;
+			padding: 20rpx 0 10rpx 0;
+			background: #ffffff;
+			.text {
+				width: 100%;
+				height: 100%;
+				font-size: $font-size-26;
+				line-height: 36rpx;
+				color: #333333;
 			}
 		}
 	}
-	.information-record{
+	.goods-pros-b {
 		width: 100%;
-		height: auto;
-		padding: 20rpx 24rpx;
-		box-sizing: border-box;
-		background-color: #FFFFFF;
-		.record-title{
-			width: 100%;
+		height: 40rpx;
+		margin-top: 12rpx;
+		float: left;
+		.count {
+			float: left;
 			font-size: $font-size-28;
+			line-height: 40rpx;
 			color: $text-color;
-			text-align: left;
+			display: flex;
+			justify-content: flex-end;
+		}
+		.money {
+			float: right;
+			font-size: $font-size-28;
 			line-height: 40rpx;
-			margin-bottom: 12rpx;
-			float: left;
-			.record-title-l{
+			color: $text-color;
+			display: flex;
+			justify-content: flex-end;
+			.red {
+				color: #f94b4b;
 				font-weight: bold;
-				float: left;
-			}
-			.record-title-r{
-				float: right;
-				.red{
-					color: #FF2A2A;
-					font-weight: bold;
-				}
 			}
 		}
-		.record-empty{
-			font-size: $font-size-26;
-			color: #999999;
-			text-align: left;
-			line-height: 40rpx;
+	}
+}
+.information-record {
+	width: 100%;
+	height: auto;
+	padding: 20rpx 24rpx;
+	box-sizing: border-box;
+	background-color: #ffffff;
+	.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-list{
+	}
+	.record-empty {
+		font-size: $font-size-26;
+		color: #999999;
+		text-align: left;
+		line-height: 40rpx;
+	}
+	.record-list {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 12rpx;
+		.record-item {
+			height: 40rpx;
 			width: 100%;
-			height: auto;
+			padding: 12rpx 0;
+			font-size: $font-size-28;
+			line-height: 40rpx;
 			float: left;
-			margin-top: 12rpx;
-			.record-item{
-				height: 40rpx;
-				width: 100%;
-				padding: 12rpx 0;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				float: left;
-				display: flex;
-				justify-content: center;
-				flex-direction: row;
-				.item-time{
-					&.mm{
-						flex: 1;
-						color: $text-color;
-						text-align: left;
-					}
-					&.tt{
-						flex: 1;
-						color: #999999;
-						text-align: right;
-					}
+			display: flex;
+			justify-content: center;
+			flex-direction: row;
+			.item-time {
+				&.mm {
+					flex: 1;
+					color: $text-color;
+					text-align: left;
+				}
+				&.tt {
+					flex: 1;
+					color: #999999;
+					text-align: right;
 				}
 			}
 		}
 	}
-	.button-template{
-		width: 100%;
+}
+.button-template {
+	width: 100%;
+	height: auto;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background: #ffffff;
+	.button-content {
+		width: 702rpx;
+		padding: 0 24rpx;
 		height: auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background: #FFFFFF;
-		.button-content{
-			width: 702rpx;
-			padding:0 24rpx;
-			height: auto;
-			float: left;
-			position: relative;
-			.btn{
+		float: left;
+		position: relative;
+		.btn {
+			width: 160rpx;
+			height: 64rpx;
+			margin: 22rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 10rpx;
+			float: right;
+		}
+		.btn-color {
+			background: $btn-confirm;
+			margin: 22rpx 0 22rpx 22rpx;
+			.tips {
 				width: 160rpx;
-				height:  64rpx;
-				margin:22rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius: 10rpx;
-				float: right;
-			}
-			.btn-color{
-				background: $btn-confirm;
-				margin: 22rpx 0 22rpx 22rpx;
-				.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;
+				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: 24rpx;
+				top: -45rpx;
+				&:before {
+					content: '';
+					width: 25rpx;
+					height: 25rpx;
+					background: linear-gradient(45deg, rgba(0, 0, 0, 1) 0%, rgba(87, 87, 87, 1) 100%);
 					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 24rpx;
-					top: -45rpx;
-					&: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);
-					}
+					bottom: -8rpx;
+					right: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
 				}
 			}
 		}
 	}
+}
 </style>

+ 521 - 468
pages/supplier/order/order-service-details.vue

@@ -1,66 +1,108 @@
 <template>
-	<view class="details clearfix" :style="{paddingBottom :isIphoneX ? (130+68)+'rpx' : '130rpx'}">
-		<cu-custom :navbar-data='nvabarData'></cu-custom>
-		<view class="container-details" :style="{paddingTop:CustomBar+'px'}" v-show="isRequest">
+	<view class="details clearfix" :style="{ paddingBottom: isIphoneX ? 130 + 68 + 'rpx' : '130rpx' }">
+		<cu-custom :navbar-data="nvabarData"></cu-custom>
+		<view class="container-details" :style="{ paddingTop: CustomBar + 'px' }" v-show="isRequest">
 			<!-- 订单信息 -->
 			<view class="information-content">
-				<view class="info-item"><view class="item-view"><text class="label">供应商:{{orderInfo.shopName ? orderInfo.shopName :''}}</text></view></view>
-				<view class="info-item"><view class="item-view"><text class="label">订单号:{{orderInfo.shopOrderNo}}</text></view></view>
-				<view class="info-item"><view class="item-view"><text class="label">下单时间:{{orderInfo.orderTime}}</text></view></view>
+				<view class="info-item"
+					><view class="item-view"
+						><text class="label">供应商:{{ orderInfo.shopName ? orderInfo.shopName : '' }}</text></view
+					></view
+				>
+				<view class="info-item"
+					><view class="item-view"
+						><text class="label">订单号:{{ orderInfo.shopOrderNo }}</text></view
+					></view
+				>
+				<view class="info-item"
+					><view class="item-view"
+						><text class="label">下单时间:{{ orderInfo.orderTime }}</text></view
+					></view
+				>
 				<view class="info-item">
-					<view class="item-view"><text class="label">收款状态:<text :style="{color:setStatusText(orderInfo.receiptStatus)}">{{setStatusTextHtml(orderInfo.receiptStatus)}}</text></text></view>
-					<view class="item-view"><text class="label">结算状态:<text :style="{color:setStatusText(orderInfo.payStatus)}">{{setStatusTextHtml1(orderInfo.payStatus)}}</text></text></view>
+					<view class="item-view"
+						><text class="label"
+							>收款状态:<text :style="{ color: setStatusText(orderInfo.receiptStatus) }">{{
+								setStatusTextHtml(orderInfo.receiptStatus)
+							}}</text></text
+						></view
+					>
+					<view class="item-view"
+						><text class="label"
+							>结算状态:<text :style="{ color: setStatusText(orderInfo.payStatus) }">{{
+								setStatusTextHtml1(orderInfo.payStatus)
+							}}</text></text
+						></view
+					>
 				</view>
 				<view class="info-item">
-					<view class="item-view"><text class="label">发货状态:<text :style="{color:setStatusText(orderInfo.sendOutStatus)}">{{setStatusTextHtml2(orderInfo.sendOutStatus)}}</text></text></view>
+					<view class="item-view"
+						><text class="label"
+							>发货状态:<text :style="{ color: setStatusText(orderInfo.sendOutStatus) }">{{
+								setStatusTextHtml2(orderInfo.sendOutStatus)
+							}}</text></text
+						></view
+					>
 				</view>
 			</view>
 			<!-- 地址信息 -->
 			<view class="address-content">
-				<view class="info-item"><text class="label">收货人:{{orderInfo.userInfo.receiver}}</text></view>
-				<view class="info-item"><text class="label">联系方式:{{orderInfo.userInfo.mobile}}</text></view>
-				<view class="info-item"><text class="label">收货地址:<text style="color: #666666;">{{orderInfo.userInfo.address}}</text></text></view>
+				<view class="info-item"
+					><text class="label">收货人:{{ orderInfo.userInfo.receiver }}</text></view
+				>
+				<view class="info-item"
+					><text class="label">联系方式:{{ orderInfo.userInfo.mobile }}</text></view
+				>
+				<view class="info-item"
+					><text class="label"
+						>收货地址:<text style="color: #666666;">{{ orderInfo.userInfo.address }}</text></text
+					></view
+				>
 			</view>
 			<!-- 商品 -->
 			<view class="goods-list">
 				<view class="goods-item clearfix">
-					<view class="productlist" v-for="(pros,idx) in orderInfo.orderProductList" :key="idx">
+					<view class="productlist" v-for="(pros, idx) in orderInfo.orderProductList" :key="idx">
 						<view class="goods-pros-t" @click="hanldOperationConfim(pros)">
 							<view class="pros-left">
-								<view class="pros-img"><image :src="pros.image" alt="" mode="aspectFill" /></view>
+								<view class="pros-img"><image :src="pros.image" alt="" mode="aspectFill"/></view>
 							</view>
 							<view class="pros-product">
-								<view class="producttitle">{{pros.aliasName ? pros.aliasName : ''}}</view>
-								<view class="productspec">规格:{{pros.productUnit ? pros.productUnit : ''}}</view>
-								<view class="productspec">商品编码:{{pros.productNo ? pros.productNo : ''}}</view>
+								<view class="producttitle">{{ pros.aliasName ? pros.aliasName : '' }}</view>
+								<view class="productspec">规格:{{ pros.productUnit ? pros.productUnit : '' }}</view>
+								<view class="productspec">商品编码:{{ pros.productNo ? pros.productNo : '' }}</view>
 								<view class="product-view">
-									<view class="view-num">数量:{{pros.num+pros.presentNum}}</view>
+									<view class="view-num">数量:{{ pros.num + pros.presentNum }}</view>
 								</view>
 								<view class="product-view">
-									<view class="view-num">已发货:{{pros.shipmentsNum}}</view>
-									<view class="view-num">未发货:{{pros.notOutStore-pros.actualCancelNum}}</view>
+									<view class="view-num">已发货:{{ pros.shipmentsNum }}</view>
+									<view class="view-num">未发货:{{ pros.notOutStore - pros.actualCancelNum }}</view>
 								</view>
 								<view class="product-view">
-									<view class="view-num" v-if="pros.returnedNum>0">已退货:{{pros.returnedNum}}</view>
-									<view class="view-num" v-if="pros.actualCancelNum>0">已取消:{{pros.actualCancelNum}}</view>
+									<view class="view-num" v-if="pros.returnedNum > 0"
+										>已退货:{{ pros.returnedNum }}</view
+									>
+									<view class="view-num" v-if="pros.actualCancelNum > 0"
+										>已取消:{{ pros.actualCancelNum }}</view
+									>
 								</view>
 								<text class="iconfont icon-genghuan"></text>
-							</view>	
+							</view>
 						</view>
-					</view>	
-					<view class="goods-pros-m" v-if="orderInfo.note!=null || orderInfo.note!=''">
+					</view>
+					<view class="goods-pros-m" v-if="orderInfo.note != null || orderInfo.note != ''">
 						<view class="m-text">留言:</view>
 						<view class="m-input">
-							<view class="text">{{orderInfo.note ? orderInfo.note : ''}}</view>
-						</view>	
+							<view class="text">{{ orderInfo.note ? orderInfo.note : '' }}</view>
+						</view>
 					</view>
 					<view class="goods-pros-b">
-						<view class="count">共{{orderInfo.itemCount}}件商品</view>
+						<view class="count">共{{ orderInfo.itemCount }}件商品</view>
 					</view>
 				</view>
-			</view>	
+			</view>
 			<!-- 底部按钮 -->
-			<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+			<view class="button-template" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
 				<view class="button-content">
 					<!-- #ifdef MP-WEIXIN -->
 					<button class="btn btn-color" open-type="share" @click="onShareAppMessage">分享订单</button>
@@ -68,19 +110,23 @@
 				</view>
 			</view>
 			<!--底部选择模态层弹窗组件 -->
-			<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="hideSpec">
+			<view class="popup spec" :class="specClass" @touchmove.stop.prevent="discard" @tap="hideSpec">
 				<!-- 遮罩层 -->
 				<view class="mask"></view>
-				<view class="layer" @tap.stop="discard" :style="{paddingBottom :isIphoneX ? '68rpx' : '36rpx',bottom:isIphoneX ?'-332rpx' : '-294rpx'}">
+				<view
+					class="layer"
+					@tap.stop="discard"
+					:style="{ paddingBottom: isIphoneX ? '68rpx' : '36rpx', bottom: isIphoneX ? '-332rpx' : '-294rpx' }"
+				>
 					<view class="content">
 						<view class="layer-title">商品显示名:</view>
-						<view class="layer-name">{{handleData.name}}</view>
+						<view class="layer-name">{{ handleData.name }}</view>
 						<view class="layer-text">
 							<view class="layer-text-fl">
-								售价:<text style="color: #666;">¥{{toFixedFn(handleData.discountPrice)}}</text>
+								售价:<text style="color: #666;">¥{{ toFixedFn(handleData.discountPrice) }}</text>
 							</view>
 							<view class="layer-text-fr">
-								<text style="color: #666;">共计{{handleData.num+handleData.presentNum}}件商品</text>
+								<text style="color: #666;">共计{{ handleData.num + handleData.presentNum }}件商品</text>
 							</view>
 						</view>
 					</view>
@@ -91,502 +137,509 @@
 </template>
 
 <script>
-	import headerBack from '@/components/cm-module/headerNavbar/header-back' 		 	 //自定义导航
-	import orderAddress from '@/components/cm-module/orderDetails/orderAddress' 		 //地址信息
-	import goodsList from '@/components/cm-module/orderDetails/goodsList'		 		 //商品列表
-	import orderButton from '@/components/cm-module/orderDetails/orderButton'			 //底部按钮
-	export default {
-		components:{
-			headerBack,
-			orderAddress,
-			goodsList,
-			orderButton,
+import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
+import orderAddress from './components/details/orderAddress' //地址信息
+import goodsList from './components/details/goodsList' //商品列表
+import orderButton from './components/details/orderButton' //底部按钮
+export default {
+	components: {
+		headerBack,
+		orderAddress,
+		goodsList,
+		orderButton
+	},
+	data() {
+		return {
+			nvabarData: {
+				//顶部自定义导航
+				showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+				showSearch: 0,
+				title: '订单详情', // 导航栏 中间的标题
+				haveBack: false,
+				textLeft: this.$store.state.isIphone
+			},
+			isIphoneX: this.$store.state.isIphoneX,
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			specClass: '', //规格弹窗css类,控制开关动画
+			handleData: {},
+			state: 0,
+			userID: '',
+			shopOrderId: '',
+			shareCode: '', //分享码
+			orderInfo: {}, //订单信息
+			payStatus: 0,
+			btnStatus: 0, //按钮组件状态
+			isRequest: false, //是否加载完成渲染子组件
+			isOrderShare: false,
+			addressData: {}, //地址信息初始化
+			information: {} //订单信息初始化
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		this.shopOrderId = option.shopOrderId
+		this.initShopOrderDetails()
+	},
+	methods: {
+		initShopOrderDetails() {
+			//初始化页面数据@参数:订单ID
+			this.ShopService.GetShopOrderDetails({ shopOrderId: this.shopOrderId })
+				.then(res => {
+					this.orderInfo = res.data.shopOrder
+					this.isRequest = true
+				})
+				.catch(err => {
+					this.$util.msg(err.msg, 2000)
+				})
 		},
-		data() {
-			return {
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '订单详情', // 导航栏 中间的标题
-					haveBack:false,
-					textLeft:this.$store.state.isIphone
-				},
-				isIphoneX:this.$store.state.isIphoneX,
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				specClass: '',//规格弹窗css类,控制开关动画
-				handleData:{},
-				state:0,
-				userID:'',
-				shopOrderId:'',
-				shareCode:'',				//分享码
-				orderInfo:{},				//订单信息
-				payStatus:0,
-				btnStatus:0,				//按钮组件状态
-				isRequest:false,			//是否加载完成渲染子组件
-				isOrderShare:false,
-				addressData:{},				//地址信息初始化
-				information:{},				//订单信息初始化
+		handButtonConfirm(data) {
+			//监听点击时间的按钮类型并执行...
+			this.handShowAlert(data)
+		},
+		setStatusTextHtml(status) {
+			let TextHtml = ''
+			switch (status) {
+				case 1:
+					TextHtml = '待付款'
+					break
+				case 2:
+					TextHtml = '部分付款'
+					break
+				case 3:
+					TextHtml = '已付款'
+					break
 			}
+			return TextHtml
 		},
-		onLoad(option){
-			console.log(option)
-			this.shopOrderId = option.shopOrderId
-			this.initShopOrderDetails()
+		setStatusTextHtml1(status) {
+			let TextHtml = ''
+			switch (status) {
+				case 1:
+					TextHtml = '待结算'
+					break
+				case 2:
+					TextHtml = '部分结算'
+					break
+				case 3:
+					TextHtml = '已结算'
+					break
+			}
+			return TextHtml
 		},
-		methods: {
-			initShopOrderDetails(){//初始化页面数据@参数:订单ID
-				this.ShopService.GetShopOrderDetails({ shopOrderId : this.shopOrderId }).then(res =>{
-					this.orderInfo  = res.data.shopOrder
-					this.isRequest = true
-				}).catch(err =>{
-					this.$util.msg(err.msg,2000);
-				})
-			},
-			handButtonConfirm(data){//监听点击时间的按钮类型并执行...
-				this.handShowAlert(data)
-			},
-			setStatusTextHtml(status){
-				let TextHtml='';
-				switch(status){
-					case 1:
-						TextHtml = '待付款'
-						break;
-					case 2:
-						TextHtml = '部分付款'
-						break;
-					case 3:
-						TextHtml = '已付款'
-						break;
-				}
-				return TextHtml
-			},
-			setStatusTextHtml1(status){
-				let TextHtml='';
-				switch(status){
-					case 1:
-						TextHtml = '待结算'
-						break;
-					case 2:
-						TextHtml = '部分结算'
-						break;
-					case 3:
-						TextHtml = '已结算'
-						break;
-				}
-				return TextHtml
-			},
-			setStatusTextHtml2(status){
-				let TextHtml='';
-				switch(status){
-					case 1:
-						TextHtml = '待发货'
-						break;
-					case 2:
-						TextHtml = '部分发货'
-						break;
-					case 3:
-						TextHtml = '已发货'
-						break;
-				}
-				return TextHtml
-			},
-			setStatusText(status){
-				let textColor='';
-				switch(status){
-					case 1:
-						textColor = '#FF2A2A'
-						break;
-					case 2:
-						textColor = '#FF5B00'
-						break;
-					case 3:
-						textColor = '#38CB3D'
-						break;
-				}
-				return textColor
-			},
-			hanldOperationConfim(data){//显示选择数量确认弹窗
-				this.specClass = 'show';
-				this.handleData = data
-			},
-			toFixedFn(text){
-				return Number(text).toFixed(2);
-			},
-			hideSpec() {//关闭选择数量确认弹窗
-				this.specClass = 'hide';
-				setTimeout(() => {
-					this.specClass = 'none';
-				}, 200);
-			},
-			onShareAppMessage(res){//分享转发
-				if (res.from === 'button') {
-					// 来自页面内转发按钮
-			    }
-				return {
-					title: '您有订单待处理,请点击查看~',
-					path: `/pages/supplier/login/share-info?authority=2&shopOrderId=${this.shopOrderId}`,
-					imageUrl:'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
-				}
-			},
-			discard(){
-				//丢弃
+		setStatusTextHtml2(status) {
+			let TextHtml = ''
+			switch (status) {
+				case 1:
+					TextHtml = '待发货'
+					break
+				case 2:
+					TextHtml = '部分发货'
+					break
+				case 3:
+					TextHtml = '已发货'
+					break
+			}
+			return TextHtml
+		},
+		setStatusText(status) {
+			let textColor = ''
+			switch (status) {
+				case 1:
+					textColor = '#FF2A2A'
+					break
+				case 2:
+					textColor = '#FF5B00'
+					break
+				case 3:
+					textColor = '#38CB3D'
+					break
 			}
+			return textColor
 		},
-		onPullDownRefresh() {//下拉刷新
-			this.initShopOrderDetails()
-			uni.stopPullDownRefresh()
+		hanldOperationConfim(data) {
+			//显示选择数量确认弹窗
+			this.specClass = 'show'
+			this.handleData = data
 		},
-		onShow() {
-
+		toFixedFn(text) {
+			return Number(text).toFixed(2)
+		},
+		hideSpec() {
+			//关闭选择数量确认弹窗
+			this.specClass = 'hide'
+			setTimeout(() => {
+				this.specClass = 'none'
+			}, 200)
+		},
+		onShareAppMessage(res) {
+			//分享转发
+			if (res.from === 'button') {
+				// 来自页面内转发按钮
+			}
+			return {
+				title: '您有订单待处理,请点击查看~',
+				path: `/pages/supplier/login/share-info?authority=2&shopOrderId=${this.shopOrderId}`,
+				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+			}
+		},
+		discard() {
+			//丢弃
 		}
-	}
+	},
+	onPullDownRefresh() {
+		//下拉刷新
+		this.initShopOrderDetails()
+		uni.stopPullDownRefresh()
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page {
-		height: 100%;
-		background:#F7F7F7;
-	}
-	.details{
-		padding-bottom: 130rpx;
+page {
+	height: 100%;
+	background: #f7f7f7;
+}
+.details {
+	padding-bottom: 130rpx;
+	width: 100%;
+	height: auto;
+}
+.container-details {
+	background: #f7f7f7;
+}
+.information-content {
+	width: 702rpx;
+	height: auto;
+	padding: 10rpx 24rpx;
+	background: #ffffff;
+	margin-bottom: 24rpx;
+	.info-item {
+		height: 58rpx;
 		width: 100%;
-		height: auto;
+		display: flex;
+		.item-view {
+			flex: 1;
+			line-height: 58rpx;
+			font-size: $font-size-28;
+			color: #333333;
+		}
 	}
-	.container-details{
-		background:#F7F7F7;
+}
+.address-content {
+	width: 702rpx;
+	height: auto;
+	padding: 10rpx 24rpx;
+	background: #ffffff;
+	margin-bottom: 24rpx;
+	.info-item {
+		width: 100%;
+		display: flex;
+		line-height: 50rpx;
+		font-size: $font-size-28;
+		color: #333333;
 	}
-	.information-content{
+}
+.goods-list {
+	width: 100%;
+	height: auto;
+	background: #f7f7f7;
+	.goods-item {
 		width: 702rpx;
+		padding: 24rpx;
 		height: auto;
-		padding:10rpx 24rpx;
-		background: #FFFFFF;
+		background: #ffffff;
 		margin-bottom: 24rpx;
-		.info-item{
-			height: 58rpx;
-			width: 100%;
-			display: flex;
-			.item-view{
-				flex: 1;
-				line-height: 58rpx;
-				font-size: $font-size-28;
-				color: #333333;
-			}
+		&:last-child {
+			margin-bottom: 0;
 		}
 	}
-	.address-content{
-		width: 702rpx;
+	.productlist {
+		width: 100%;
 		height: auto;
-		padding:10rpx 24rpx;
-		background: #FFFFFF;
-		margin-bottom: 24rpx;
-		.info-item{
-			width: 100%;
-			display: flex;
-			line-height: 50rpx;
-			font-size: $font-size-28;
-			color: #333333;
-		}
 	}
-	.goods-list{
+	.goods-pros-t {
+		display: flex;
 		width: 100%;
 		height: auto;
-		background: #F7F7F7;
-		.goods-item{
-			width: 702rpx;
-			padding:24rpx;
-			height: auto;
-			background: #FFFFFF;
-			margin-bottom: 24rpx;
-			&:last-child{
-				margin-bottom: 0;
-			}
+		padding: 12rpx 0;
+		.pros-left {
+			width: 210rpx;
+			height: 100%;
+			margin: 0 26rpx 0 0;
 		}
-		.productlist{
-			width: 100%;
-			height: auto;
-		}	
-		.goods-pros-t{
-			display: flex;
-			width: 100%;
-			height: auto;
-			padding: 12rpx 0;
-			.pros-left{
-				width: 210rpx;
+		.pros-img {
+			width: 210rpx;
+			height: 210rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f3f3f3;
+			image {
+				width: 100%;
 				height: 100%;
-				margin:0 26rpx 0 0;
-			}
-			.pros-img{
-				width: 210rpx;
-				height: 210rpx;
 				border-radius: 10rpx;
-				border:1px solid #f3f3f3;
-				image{
-					width: 100%;
-					height: 100%;
-					border-radius: 10rpx;
-				}
 			}
 		}
-		.pros-product{
-			width: 468rpx;
-			height: 100%;
-			line-height: 36rpx;
-			font-size: $font-size-26;	
-			position: relative;
-			.icon-genghuan{
-				position: absolute;
-				top: 50%;
-				right: 0;
-				font-size: $font-size-44;
-				color: $color-system;
-			}
-			.product-view{
-				width: 100%;
-				height: auto;
-				display: flex;
-				.view-num{
-					flex: 1;
-					text-align: left;
-					font-size: $font-size-26;
-					color: #666666;
-					line-height: 44rpx;
-				}
-			}
-			.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;
+	}
+	.pros-product {
+		width: 468rpx;
+		height: 100%;
+		line-height: 36rpx;
+		font-size: $font-size-26;
+		position: relative;
+		.icon-genghuan {
+			position: absolute;
+			top: 50%;
+			right: 0;
+			font-size: $font-size-44;
+			color: $color-system;
+		}
+		.product-view {
+			width: 100%;
+			height: auto;
+			display: flex;
+			.view-num {
+				flex: 1;
+				text-align: left;
+				font-size: $font-size-26;
 				color: #666666;
 				line-height: 44rpx;
 			}
-			.productprice{
-				height: 48rpx;
-				position: absolute;
-				width: 100%;
-				bottom: 0;
-				.price{
-					line-height: 48rpx;
-					font-size: $font-size-28;
-					width: 48%;
-					color: #FF2A2A;
-					float: left;
-				}
-				.count{
-					height: 100%;
-					float: right;
-					position: relative;
-					.small{
-						color: #666666;
-					}
-				}
-			}
 		}
-		.goods-pros-m{
+		.producttitle {
 			width: 100%;
+			display: inline-block;
 			height: auto;
-			line-height: 76rpx;
-			font-size: $font-size-26;
-			color: $text-color;
-			float: left;
-			padding: 10rpx 0;
-			border-top: 1px solid #F7F7F7;
-			border-bottom: 1px solid #F7F7F7;
-			.m-text{
-				width: 62rpx;
+			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: #666666;
+			line-height: 44rpx;
+		}
+		.productprice {
+			height: 48rpx;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			.price {
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				width: 48%;
+				color: #ff2a2a;
 				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;
+			.count {
+				height: 100%;
+				float: right;
 				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;
+				.small {
+					color: #666666;
 				}
 			}
 		}
-		.goods-pros-b{
-			width:100%;
-			height: 40rpx;
-			margin-top: 12rpx;
+	}
+	.goods-pros-m {
+		width: 100%;
+		height: auto;
+		line-height: 76rpx;
+		font-size: $font-size-26;
+		color: $text-color;
+		float: left;
+		padding: 10rpx 0;
+		border-top: 1px solid #f7f7f7;
+		border-bottom: 1px solid #f7f7f7;
+		.m-text {
+			width: 62rpx;
 			float: left;
-			.count{
-				float: right;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: $text-color;
-				display: flex;
-				justify-content: flex-end;
+			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;
 			}
 		}
 	}
-	.button-template{
+	.goods-pros-b {
 		width: 100%;
+		height: 40rpx;
+		margin-top: 12rpx;
+		float: left;
+		.count {
+			float: right;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: $text-color;
+			display: flex;
+			justify-content: flex-end;
+		}
+	}
+}
+.button-template {
+	width: 100%;
+	height: auto;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background: #ffffff;
+	-webkit-border-radius: 20rpx 20rpx 0 0;
+	border-radius: 20rpx 20rpx 0 0;
+	-webkit-box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
+	box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
+	.button-content {
+		width: 702rpx;
+		padding: 0 24rpx;
 		height: auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background: #FFFFFF;
-		-webkit-border-radius: 20rpx 20rpx 0 0;
-		border-radius: 20rpx 20rpx 0 0;
-		-webkit-box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
-		box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
-		.button-content{
-			width: 702rpx;
-			padding:0 24rpx;
-			height: auto;
-			float: left;
-			position: relative;
-			.btn{
+		float: left;
+		position: relative;
+		.btn {
+			width: 160rpx;
+			height: 64rpx;
+			margin: 22rpx;
+			line-height: 64rpx;
+			font-size: $font-size-26;
+			color: #ffffff;
+			text-align: center;
+			border-radius: 10rpx;
+			float: right;
+		}
+		.btn-color {
+			background: $btn-confirm;
+			margin: 22rpx 0 22rpx 22rpx;
+			.tips {
 				width: 160rpx;
-				height:  64rpx;
-				margin:22rpx;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #FFFFFF;
-				text-align: center;
-				border-radius: 10rpx;
-				float: right;
-			}
-			.btn-color{
-				background: $btn-confirm;
-				margin: 22rpx 0 22rpx 22rpx;
-				.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;
+				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: 24rpx;
+				top: -45rpx;
+				&:before {
+					content: '';
+					width: 25rpx;
+					height: 25rpx;
+					background: linear-gradient(45deg, rgba(0, 0, 0, 1) 0%, rgba(87, 87, 87, 1) 100%);
 					position: absolute;
-					color: #FFFFFF;
-					line-height: 34rpx;
-					font-size: $font-size-24;
-					text-align: left;
-					right: 24rpx;
-					top: -45rpx;
-					&: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);
-					}
+					bottom: -8rpx;
+					right: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
 				}
 			}
 		}
 	}
-	.popup {
+}
+.popup {
+	position: fixed;
+	top: 0;
+	width: 100%;
+	height: 100%;
+	z-index: 999;
+	display: none;
+	.mask {
 		position: fixed;
 		top: 0;
 		width: 100%;
 		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
+		z-index: 21;
+		background-color: rgba(0, 0, 0, 0.6);
+	}
+	.layer {
+		position: fixed;
+		z-index: 22;
+		bottom: -294rpx;
+		width: 702rpx;
+		padding: 24rpx 24rpx 36rpx 24rpx;
+		height: 236rpx;
+		border-radius: 20rpx 20rpx 0 0;
+		background-color: #fff;
+		display: flex;
+		flex-wrap: wrap;
+		align-content: space-between;
+		.content {
 			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: fixed;
-			z-index: 22;
-			bottom: -294rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 36rpx 24rpx;
-			height: 236rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
+			.layer-title {
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 58rpx;
+			}
+			.layer-name {
 				width: 100%;
-				.layer-title{
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 58rpx;
-				}
-				.layer-name{
-					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;
-					font-size: $font-size-28;
-					color: #666;
+				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;
+				font-size: $font-size-28;
+				color: #666;
+			}
+			.layer-text {
+				margin-top: 10rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 58rpx;
+				.layer-text-fl {
+					float: left;
 				}
-				.layer-text{
-					margin-top: 10rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 58rpx;
-					.layer-text-fl{
-						float: left;
-					}
-					.layer-text-fr{
-						float: right;
-					}
+				.layer-text-fr {
+					float: right;
 				}
 			}
 		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
+	}
+
+	&.show {
+		display: block;
+		.mask {
+			animation: showPopup 0.2s linear both;
 		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
+		.layer {
+			animation: showLayer 0.2s linear both;
 		}
-		&.none {
-			display: none;
+	}
+	&.hide {
+		display: block;
+		.mask {
+			animation: hidePopup 0.2s linear both;
 		}
-	}	
+
+		.layer {
+			animation: hideLayer 0.2s linear both;
+		}
+	}
+	&.none {
+		display: none;
+	}
+}
 </style>

+ 2 - 3
pages/tabBar/user/user.vue

@@ -287,7 +287,7 @@
                                 <text class="iconfont icon-xiayibu"></text>
                             </text>
                         </view>
-                        <view
+<!--                        <view
                             class="list-cell"
                             @click="navigator('/pages/user/regularPurchase/regularPurchase')"
                             hover-class="cell-hover"
@@ -302,7 +302,7 @@
                             </view>
                             <text class="cell-tit">再次购买</text>
                             <text class="cell-more iconfont icon-xiayibu"></text>
-                        </view>
+                        </view>--> 
                         <view
                             class="list-cell"
                             @click="navigator('/pages/user/collection/collection')"
@@ -1017,7 +1017,6 @@ page {
     height: auto;
     box-sizing: border-box;
     padding: 0 24rpx;
-    margin-top: 26rpx;
     .user-order {
         width: 100%;
         height: auto;

+ 248 - 232
pages/user/address/address.vue

@@ -1,21 +1,25 @@
 <template>
 	<view class="container clearfix">
 		<view v-if="isEmpty" class="empty-container">
-			<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AFmO1AAGxLZjSeDg040.png" mode="aspectFit"></image>
-			<view class="txt">您还没有收货地址</view>
-			<view class="txt">点击底部按钮添加收货地址吧~~</view>
+			<image
+				class="empty-container-image"
+				src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AFmO1AAGxLZjSeDg040.png"
+				mode="aspectFit"
+			></image>
+			<view class="txt">您还没有收货地址</view> <view class="txt">点击底部按钮添加收货地址吧~~</view>
 			<view class="login-btn" @click="addAddress('add')">添加新地址</view>
 		</view>
-		<view v-else class="address-list" :style="{'height': scrollHeight + 'px'}">
-			<scroll-view scroll-y="true" :style="{'height': scrollHeight + 'px'}">
+		<view v-else class="address-list" :style="{ height: scrollHeight + 'px' }">
+			<scroll-view scroll-y="true" :style="{ height: scrollHeight + 'px' }">
 				<view class="list" v-for="(item, index) in addressList" :key="index" @click="checkAddress(item)">
 					<view class="wrapper">
 						<view class="u-box">
-							<text class="name">{{item.receiver}}</text>
-							<text class="mobile">{{item.mobile}}</text>
+							<text class="name">{{ item.receiver }}</text> <text class="mobile">{{ item.mobile }}</text>
 						</view>
 						<view class="u-box b-b">
-							<text class="address">收货地址:{{item.province}}{{item.city}}{{item.town}}{{item.address}}</text>
+							<text class="address"
+								>收货地址:{{ item.province }}{{ item.city }}{{ item.town }}{{ item.address }}</text
+							>
 						</view>
 						<view class="u-box b-t">
 							<view v-if="item.defaultFlag == 1" class="tag-left">
@@ -23,274 +27,286 @@
 							</view>
 							<view v-else class="tag-left"></view>
 							<view class="tag-right">
-								<view class="t-b"  @click.stop="deleteAddress(item.addressId)">
-									<text class="iconfont icon-shanchu"></text>
-									<text class="txt">删除</text>
+								<view class="t-b" @click.stop="deleteAddress(item.addressId)">
+									<text class="iconfont icon-shanchu"></text> <text class="txt">删除</text>
 								</view>
-								<view class="t-b"  @click.stop="addAddress('edit',item)">
-									<text class="iconfont icon-bianji"></text>
-									<text class="txt">编辑</text>
+								<view class="t-b" @click.stop="addAddress('edit', item)">
+									<text class="iconfont icon-bianji"></text> <text class="txt">编辑</text>
 								</view>
-								
 							</view>
 						</view>
 					</view>
 				</view>
 			</scroll-view>
-			<view class="add-btn" @click="addAddress('add')" :style="{bottom :isIphoneX ? '68rpx' : '34rpx'}">添加新地址</view>
+			<view class="add-btn" @click="addAddress('add')" :style="{ bottom: isIphoneX ? '68rpx' : '34rpx' }"
+				>添加新地址</view
+			>
 		</view>
 	</view>
 </template>
 
 <script>
-	import authorize from '@/common/config/authorize.js'	
-	export default {
-		data() {
-			return {
-				isIphoneX:this.$store.state.isIphoneX,
-				isSelect:false,
-				isEmpty:false,
-				listQuery:{
-					userId:0,
-					pageNum:1,
-					pageSize:10
-				},
-				addressList: [],
-				hasNextPage:false,
-				allowDataStatus:true,
-				wrapperHeight:'100%',
-				scrollHeight:'',
-				currPage:'',//当前页面
-				prevPage:''//上一个页面
-			}
-		},
-		onLoad(option){	
-			if(option.type=='select'){this.isSelect = true;}
-			this.setScrollHeight();
-		},
-		methods: {
-			setScrollHeight() {	// 窗口高度 - 底部距离
-				setTimeout(()=> {
-					const query = wx.createSelectorQuery().in(this);
-					query.selectAll('.add-btn').boundingClientRect();
-					query.exec(res => {
-						if(res[0][0]){
-							let winHeight = this.$api.getWindowHeight(),
-								eleTop = res[0][0].top - 1;
-								this.scrollHeight =  eleTop;
-						}
-					})
-				}, 500)
+import authorize from '@/common/config/authorize.js'
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			isSelect: false,
+			isEmpty: false,
+			listQuery: {
+				userId: 0,
+				pageNum: 1,
+				pageSize: 10
 			},
-			getQueryAddressList(){	//初始化地址列表数据
-				this.UserService.QueryAddressList(this.listQuery).then(response =>{
+			addressList: [],
+			hasNextPage: false,
+			allowDataStatus: true,
+			wrapperHeight: '100%',
+			scrollHeight: '',
+			currPage: '', //当前页面
+			prevPage: '' //上一个页面
+		}
+	},
+	onLoad(option) {
+		if (option.type == 'select') {
+			this.isSelect = true
+		}
+		this.setScrollHeight()
+	},
+	methods: {
+		setScrollHeight() {
+			// 窗口高度 - 底部距离
+			setTimeout(() => {
+				const query = wx.createSelectorQuery().in(this)
+				query.selectAll('.add-btn').boundingClientRect()
+				query.exec(res => {
+					if (res[0][0]) {
+						let winHeight = this.$api.getWindowHeight(),
+							eleTop = res[0][0].top - 1
+						this.scrollHeight = eleTop
+					}
+				})
+			}, 500)
+		},
+		getQueryAddressList() {
+			//初始化地址列表数据
+			this.UserService.QueryAddressList(this.listQuery)
+				.then(response => {
 					let data = response.data
-					if(data.list&&data.list.length > 0){
+					if (data.list && data.list.length > 0) {
 						this.isEmpty = false
 						this.hasNextPage = data.hasNextPage
 						this.addressList = data.list
-					}else{
+					} else {
 						this.isEmpty = true
 					}
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
 				})
-			},
-			getOnReachBottomData(){// 上滑加载分页
-				this.listQuery.pageNum+=1
-				this.UserService.QueryAddressList(this.listQuery).then(response =>{
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		getOnReachBottomData() {
+			// 上滑加载分页
+			this.listQuery.pageNum += 1
+			this.UserService.QueryAddressList(this.listQuery)
+				.then(response => {
 					let data = response.data
-					if(data.list&&data.list.length > 0){
+					if (data.list && data.list.length > 0) {
 						this.hasNextPage = data.hasNextPage
-						this.addressList = this.addressList.concat(data.list) 
+						this.addressList = this.addressList.concat(data.list)
 					}
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000)
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			checkAddress(item){//选择地址
-				//是否需要返回地址(从订单确认页跳过来选收货地址)
-				if(!this.isSelect){return ;}
-				uni.setStorageSync('selectAddress',item)
-				var pages = getCurrentPages();
-				var prevPage = pages[pages.length - 2];  //上一个页面	
-					prevPage.setData({select:'select'})
-				uni.navigateBack();
-			},
-			addAddress(type,item){
-				uni.navigateTo({
-					url: `/pages/user/address/addressManage?type=${type}&data=${JSON.stringify(item)}`
-				})
-			},
-			deleteAddress(addressId){//删除收货地址
-				this.$util.modal('','确定要删除该地址?','确定','取消',true,() =>{
-					this.UserService.DeleteAddress({addressId:addressId,userId:this.listQuery.userId}).then(response =>{
-						this.$util.msg('删除成功',2000,true,'success')
-						setTimeout(() =>{
-							this.listQuery.pageNum = 1;
-							this.addressList = [];
-							this.getQueryAddressList();
-						},2000)
-					}).catch(error =>{
-						this.$util.msg(error.msg,2000);
-					})
-				})
-			}
 		},
-		onReachBottom() {
-			if(this.hasNextPage) {
-				this.getOnReachBottomData();
+		checkAddress(item) {
+			//选择地址
+			//是否需要返回地址(从订单确认页跳过来选收货地址)
+			if (!this.isSelect) {
+				return
 			}
+			uni.setStorageSync('selectAddress', item)
+			var pages = getCurrentPages()
+			var prevPage = pages[pages.length - 2] //上一个页面
+			prevPage.setData({ select: 'select' })
+			uni.navigateBack()
 		},
-		onShow() {
-			this.$api.getStorage().then((resolve) =>{
-				this.listQuery.userId = resolve.userId ? resolve.userId : 0
-				this.listQuery.pageNum = 1;
-				this.addressList = [];
-				this.getQueryAddressList();
-				var pages = getCurrentPages();
-				var prevPage = pages[pages.length - 2];  //上一个页面	
-					// prevPage.setData({select:''})
+		addAddress(type, item) {
+			uni.navigateTo({
+				url: `/pages/user/address/addressManage?type=${type}&data=${JSON.stringify(item)}`
 			})
+		},
+		deleteAddress(addressId) {
+			//删除收货地址
+			this.$util.modal('', '确定要删除该地址?', '确定', '取消', true, () => {
+				this.UserService.DeleteAddress({ addressId: addressId, userId: this.listQuery.userId })
+					.then(response => {
+						this.$util.msg('删除成功', 2000, true, 'success')
+						setTimeout(() => {
+							this.listQuery.pageNum = 1
+							this.addressList = []
+							this.getQueryAddressList()
+						}, 2000)
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		}
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.getOnReachBottomData()
 		}
+	},
+	onShow() {
+		this.$api.getStorage().then(resolve => {
+			this.listQuery.userId = resolve.userId ? resolve.userId : 0
+			this.listQuery.pageNum = 1
+			this.addressList = []
+			this.getQueryAddressList()
+			var pages = getCurrentPages()
+			var prevPage = pages[pages.length - 2] //上一个页面
+			// prevPage.setData({select:''})
+		})
 	}
+}
 </script>
 
-<style lang='scss'>
-	page {
-		height: auto;
-	}
-	page,.container{
-		/* padding-bottom: 120upx; */
-		background: #F7F7F7;
-		border-top: 1px solid #EBEBEB;
+<style lang="scss">
+page {
+	height: auto;
+}
+page,
+.container {
+	/* padding-bottom: 120upx; */
+	background: #f7f7f7;
+	border-top: 1px solid #ebebeb;
+}
+.container {
+	position: relative;
+}
+.address-list {
+	width: 100%;
+	box-sizing: border-box;
+	padding: 24rpx;
+}
+.list {
+	display: flex;
+	align-items: center;
+	width: 100%;
+	height: auto;
+	padding: 24rpx;
+	background: #ffffff;
+	position: relative;
+	box-sizing: border-box;
+	margin-bottom: 24rpx;
+	border-radius: 16rpx;
+}
+.wrapper {
+	display: flex;
+	flex-direction: column;
+	flex: 1;
+}
+.u-box.b-b {
+}
+.u-box.b-b {
+	margin-bottom: 24rpx;
+}
+.u-box.b-t {
+	margin-bottom: 0;
+}
+.u-box {
+	display: flex;
+	align-items: center;
+	font-size: $font-size-28;
+	color: $text-color;
+	line-height: 40rpx;
+	margin-bottom: 12rpx;
+	.name {
+		margin-right: 40rpx;
+		font-weight: bold;
 	}
-	.container{
-		position: relative;
+	.mobile {
+		font-weight: bold;
 	}
-	.address-list{
-		width: 100%;
-		box-sizing: border-box;
-		padding: 24rpx;
-	}
-	.list{
-		display: flex;
-		align-items: center;
-		width: 100%;
-		height: auto;
-		padding: 24rpx;
-		background: #FFFFFF;
-		position: relative;
-		box-sizing: border-box;
-		margin-bottom: 24rpx;
-		border-radius: 16rpx;
-	}
-	.wrapper{
-		display: flex;
-		flex-direction: column;
-		flex: 1;
-	}
-	.u-box.b-b{
-		
-	}
-	.u-box.b-b{
-		margin-bottom:24rpx;
-	}
-	.u-box.b-t{
-		margin-bottom:0;
+	.tag-left {
+		flex: 6;
+		.tag {
+			width: 120rpx;
+			height: 40rpx;
+			background: $color-system;
+			border-radius: 20rpx;
+			font-size: $font-size-24;
+			color: #ffffff;
+			line-height: 40rpx;
+			text-align: center;
+			padding: 0 6rpx;
+		}
 	}
-	.u-box{
+	.tag-right {
+		flex: 4;
 		display: flex;
-		align-items: center;
-		font-size: $font-size-28;
-		color: $text-color;
-		line-height: 40rpx;
-		margin-bottom: 12rpx;
-		.name{
-			margin-right: 40rpx;
-			font-weight: bold;
-		}
-		.mobile{
-			font-weight: bold;
-		}
-		.tag-left{
-			flex: 6;
-			.tag{
-				width: 120rpx;
-				height: 40rpx;
-				background: $color-system;
-				border-radius: 20rpx;
+		text-align: right;
+		.t-b {
+			flex: 1;
+			line-height: 40rpx;
+			.txt {
 				font-size: $font-size-24;
-				color: #FFFFFF;
+				color: $text-color;
 				line-height: 40rpx;
-				text-align: center;
-				padding: 0 6rpx;
 			}
 		}
-		.tag-right{
-			flex: 4;
-			display: flex;
-			text-align: right;
-			.t-b{
-				flex: 1;
-				line-height: 40rpx;
-				.txt{
-					font-size: $font-size-24;
-					color: $text-color;
-					line-height: 40rpx;
-				}
-			}
-			.icon-shanchu{
-				color:#FF2A2A ;
-				margin-right: 8rpx;
-			}
-			.icon-bianji{
-				color: #2A7AFF;
-				margin-right: 8rpx;
-			}
+		.icon-shanchu {
+			color: #ff2a2a;
+			margin-right: 8rpx;
 		}
-		.address{
-			font-size: $font-size-28;
-			color: $text-color;
-			line-height: 40rpx;
-			-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-bianji {
+			color: #2a7aff;
+			margin-right: 8rpx;
 		}
 	}
-	.add-btn{
-		position: fixed;
-		left: 75rpx;
-		right: 75rpx;
-		bottom: 34rpx;
-		z-index: 95;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		width: 600rpx;
-		height: 88rpx;
+	.address {
 		font-size: $font-size-28;
-		line-height: 88rpx;
-		color: #FFFFFF;
-		text-align: center;
-		background: $btn-confirm;
-		border-radius: 44rpx;
-	}
-	.adds-btn{
-		width: 600rpx;
-		height: 88rpx;
-		font-size: 28rpx;
-		line-height: 88rpx;
-		color: #FFFFFF;
-		margin: 0 auto;
-		text-align: center;
-		background: #000000;
-		border-radius: 44rpx;
+		color: $text-color;
+		line-height: 40rpx;
+		-o-text-overflow: ellipsis;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		word-break: break-all;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 2;
+		overflow: hidden;
 	}
+}
+.add-btn {
+	position: fixed;
+	left: 75rpx;
+	right: 75rpx;
+	bottom: 34rpx;
+	z-index: 95;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 600rpx;
+	height: 88rpx;
+	font-size: $font-size-28;
+	line-height: 88rpx;
+	color: #ffffff;
+	text-align: center;
+	background: $btn-confirm;
+	border-radius: 44rpx;
+}
+.adds-btn {
+	width: 600rpx;
+	height: 88rpx;
+	font-size: 28rpx;
+	line-height: 88rpx;
+	color: #ffffff;
+	margin: 0 auto;
+	text-align: center;
+	background: #000000;
+	border-radius: 44rpx;
+}
 </style>
-

+ 287 - 247
pages/user/address/addressManage.vue

@@ -3,297 +3,337 @@
 		<view class="add-content">
 			<view class="input-row b-b">
 				<view class="label">收货人:</view>
-				<input class="input" type="text" v-model="addressData.receiver" @input="onShouHuoRen" placeholder="请输入收货人姓名" placeholder-class="placeholder" />
+				<input
+					class="input"
+					type="text"
+					v-model="addressData.receiver"
+					@input="onShouHuoRen"
+					placeholder="请输入收货人姓名"
+					placeholder-class="placeholder"
+				/>
 			</view>
 			<view class="input-row b-b">
 				<view class="label">手机号:</view>
-				<input class="input" type="number" maxlength="11" v-model="addressData.mobile"  @input="onMobile" placeholder="请输入手机号码" placeholder-class="placeholder" />
+				<input
+					class="input"
+					type="number"
+					maxlength="11"
+					v-model="addressData.mobile"
+					@input="onMobile"
+					placeholder="请输入手机号码"
+					placeholder-class="placeholder"
+				/>
 			</view>
 			<view class="input-row b-b" @click="showMulLinkageThreePicker">
 				<view class="label address">所在地区:</view>
-				<text class="input" :style="addressData.allAddress=='请选择收货地区'?'color:#b2b2b2':''">
-					{{addressData.allAddress}}
-				</text>		
+				<text class="input" :style="addressData.allAddress == '请选择收货地区' ? 'color:#b2b2b2' : ''">
+					{{ addressData.allAddress }}
+				</text>
 				<text class="iconfont icon-xiayibu"></text>
 			</view>
-			<view class="text-textarea b-b"> 
+			<view class="text-textarea b-b">
 				<view class="textarea show" v-if="isShowInput">
-					{{addressData.address ? addressData.address :'详细地址:如道路、门牌号、小区、楼房号、单元室等'}}
+					{{ addressData.address ? addressData.address : '详细地址:如道路、门牌号、小区、楼房号、单元室等' }}
 				</view>
-				<textarea 	v-else
-							class="textarea" 
-							type="text" 
-							v-model="addressData.address" 
-							placeholder="详细地址:如道路、门牌号、小区、楼房号、单元室等" 
-							placeholder-class="placeholder"
-							maxlength="50"
-							@input="onTextareaInput"
-							:class="isShowInput ? '':''"
+				<textarea
+					v-else
+					class="textarea"
+					type="text"
+					v-model="addressData.address"
+					placeholder="详细地址:如道路、门牌号、小区、楼房号、单元室等"
+					placeholder-class="placeholder"
+					maxlength="50"
+					@input="onTextareaInput"
+					:class="isShowInput ? '' : ''"
 				/>
 			</view>
 			<view class="text-input default-row">
 				<text class="tit">设为默认地址</text>
 				<switch :checked="switchDefault" color="#5FB00A" @change="switchChange" style="transform:scale(0.8)" />
 			</view>
-			<button class="add-btn" :disabled="isConfirm" :class="[isConfirm == true ? 'disabled':'']" @click="confirm">{{buttonText}}</button>
+			<button
+				class="add-btn"
+				:disabled="isConfirm"
+				:class="[isConfirm == true ? 'disabled' : '']"
+				@click="confirm"
+			>
+				{{ buttonText }}
+			</button>
 		</view>
-		<mpvue-city-picker :themeColor="themeColor" 
-							ref="mpvueCityPicker" 
-						    :pickerValueDefault="cityPickerValueDefault"
-							@onCancel="onCancel" 
-							@onConfirm="onConfirm">
+		<mpvue-city-picker
+			:themeColor="themeColor"
+			ref="mpvueCityPicker"
+			:pickerValueDefault="cityPickerValueDefault"
+			@onCancel="onCancel"
+			@onConfirm="onConfirm"
+		>
 		</mpvue-city-picker>
-
 	</view>
 </template>
 
-<script>	
-	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
-	import authorize from '@/common/config/authorize.js'	
-	export default {
-		components:{
-			mpvueCityPicker
-		},
-		data() {
-			return {
-				buttonText:'保存',
-				addType:1,				//记录添加地址的类型
-				isConfirm:true,
-				isShowInput:false,
-				switchDefault:false,
-				addressData:{
-					addressId:'',
-					allAddress:'请选择收货地区',
-					userId: '',			//用户id ,只在新增收货地址时传
-					receiver: '',		//收货人
-					mobile:'',			//收货人手机
-					townId:'',			//区ID
-					address: '',	//地址
-					defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
-				},
-				params:{}				//参数
+<script>
+import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
+import authorize from '@/common/config/authorize.js'
+export default {
+	components: {
+		mpvueCityPicker
+	},
+	data() {
+		return {
+			buttonText: '保存',
+			addType: 1, //记录添加地址的类型
+			isConfirm: true,
+			isShowInput: false,
+			switchDefault: false,
+			addressData: {
+				addressId: '',
+				allAddress: '请选择收货地区',
+				userId: '', //用户id ,只在新增收货地址时传
+				receiver: '', //收货人
+				mobile: '', //收货人手机
+				townId: '', //区ID
+				address: '', //地址
+				defaultFlag: 0 //是否默认收货地址(0 不是默认,1 默认)
+			},
+			params: {} ,//参数
+			isSelect:false
+		}
+	},
+	onLoad(option) {
+		let title = '添加新地址'
+		if (option.type === 'edit') {
+			title = '编辑收货地址'
+			this.isConfirm = false
+			this.addType = 2
+			let optionData = JSON.parse(option.data)
+			this.addressData.allAddress = `${optionData.province}-${optionData.city}-${optionData.town}`
+			this.addressData.address = optionData.address ? optionData.address : ''
+			this.addressData.defaultFlag = optionData.defaultFlag
+			this.addressData.userId = optionData.userId
+			this.addressData.mobile = optionData.mobile
+			this.addressData.townId = optionData.townId
+			this.addressData.addressId = optionData.addressId
+			this.addressData.receiver = optionData.receiver
+			if (this.addressData.defaultFlag == 1) {
+				this.switchDefault = true
+			} else {
+				this.switchDefault = false
+			}
+		}
+		if (option.type == 'select') {
+			this.isSelect = true
+		}
+		uni.setNavigationBarTitle({
+			title
+		})
+	},
+	methods: {
+		switchChange(e) {
+			if (e.detail.value == true) {
+				this.addressData.defaultFlag = '1'
+			} else {
+				this.addressData.defaultFlag = '0'
 			}
 		},
-		onLoad(option){
-			let title = '添加新地址'
-			if(option.type==='edit'){
-				title = '编辑收货地址'
-				this.isConfirm = false;
-				this.addType = 2;			
-				let optionData = JSON.parse(option.data)
-				this.addressData.allAddress = `${optionData.province}-${optionData.city}-${optionData.town}`
-				this.addressData.address = optionData.address?optionData.address:''
-				this.addressData.defaultFlag = optionData.defaultFlag;
-				this.addressData.userId = optionData.userId;
-				this.addressData.mobile = optionData.mobile;
-				this.addressData.townId = optionData.townId;
-				this.addressData.addressId = optionData.addressId;
-				this.addressData.receiver = optionData.receiver;
-				if(this.addressData.defaultFlag == 1){
-					this.switchDefault = true
-				}else{
-					this.switchDefault = false
+		// 三级联动选择
+		showMulLinkageThreePicker() {
+			this.isShowInput = true
+			this.$refs.mpvueCityPicker.show()
+		},
+		onConfirm(e) {
+			console.log(e)
+			this.addressData.allAddress = e.name
+			this.addressData.townId = e.townCode
+			this.initInput()
+		},
+		//提交
+		confirm() {
+			let data = this.addressData
+			if (!data.receiver) {
+				this.$util.msg('请填写收货人')
+			}
+			if (data.address == '所在地区') {
+				this.$util.msg('请选择所在地区')
+			}
+			if (!/(^1[0-9][0-9]{9}$)/.test(data.mobile)) {
+				this.$util.msg('请输入正确的手机号码')
+				return
+			}
+			if (this.addType == 1) {
+				this.params = {
+					userId: data.userId, //用户id ,只在新增收货地址时传
+					receiver: data.receiver, //收货人
+					townId: data.townId, //区ID
+					address: data.address, //地址
+					mobile: data.mobile, //手机
+					defaultFlag: data.defaultFlag //是否默认收货地址(0 不是默认,1 默认)
 				}
+				this.postAddressData(this.params)
+			} else {
+				this.params = this.addressData
+				this.postAddressData(this.params)
 			}
-			uni.setNavigationBarTitle({
-				title
-			})
 		},
-		methods: {			
-			switchChange(e){
-				if(e.detail.value== true){
-					this.addressData.defaultFlag = '1';
-				}else{
-					this.addressData.defaultFlag = '0';
-				}
-			},
-			// 三级联动选择
-			showMulLinkageThreePicker() {
-				this.isShowInput = true
-				this.$refs.mpvueCityPicker.show()
-			},
-			onConfirm(e) {
-				console.log(e)
-				this.addressData.allAddress = e.name;
-				this.addressData.townId = e.townCode;	
-				this.initInput();
-			},			
-			//提交
-			confirm(){
-				let data = this.addressData;
-				if(!data.receiver){
-					this.$util.msg('请填写收货人');
-				}
-				if(data.address =='所在地区'){
-					this.$util.msg('请选择所在地区');
-				}
-				if(!/(^1[0-9][0-9]{9}$)/.test(data.mobile)){
-					this.$util.msg('请输入正确的手机号码');
-					return;
-				}
-				if(this.addType ==1){
-					this.params ={
-							userId:data.userId  ,		//用户id ,只在新增收货地址时传
-							receiver:data.receiver ,//收货人
-							townId:data.townId,			//区ID
-							address:data.address,//地址
-							mobile:data.mobile,			//手机
-							defaultFlag:data.defaultFlag//是否默认收货地址(0 不是默认,1 默认)
-						}
-					this.postAddressData(this.params)	
-				}else{
-					this.params =  this.addressData;
-					this.postAddressData(this.params)
-				}
-			},
-			postAddressData(params){
+		async postAddressData(params) {
+			try{
 				this.btnText(true)
-				this.UserService.AddressSave(params).then( response=>{
-					this.$util.msg('保存成功',1500,true,'success')
-					this.btnText(false)
-					setTimeout(()=>{
-						uni.navigateBack();
-					},2000)
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
-					this.btnText(false)
-				})
-			},
-			btnText(flg){
-				if(flg){
-					this.isConfirm = true;
-					this.buttonText = '保存中...'
-				}else{
-					this.isConfirm = false;
-					this.buttonText = '保存'
-				}
-			},
-			onShouHuoRen(e){
-			   this.addressData.receiver = e.detail.value
-			   this.initInput();
-			},
-			onMobile(e){
-			   this.addressData.mobile = e.detail.value
-			   this.initInput();
-			},
-			onTextareaInput(e){
-			   this.addressData.address = e.detail.value
-			   this.initInput();
-			},
-			initInput(){
-				if(this.addressData.receiver !== "" && this.addressData.mobile !=="" && this.addressData.address !=="" && this.addressData.townId!==""){
-					this.isConfirm =false;
-				}else{
-					this.isConfirm =true;
+				const res = await this.UserService.AddressSave(params)
+				const data = res.data
+				this.$util.msg('保存成功', 1500, true, 'success')
+				this.btnText(false)
+				if(this.isSelect){
+					uni.setStorageSync('selectAddress', data)
+					let pages = getCurrentPages()
+					let prevPage = pages[pages.length - 2] //上一个页面
+					prevPage.setData({ select: 'select' })
 				}
+				uni.navigateBack()
+			}catch(error){
+				this.$util.msg(error.msg, 2000)
+				this.btnText(false)
 			}
 		},
-		onShow() {
-			this.$api.getStorage().then((resolve) =>{
-				this.addressData.userId = resolve.userId ? resolve.userId : 0
-			})
+		btnText(flg) {
+			if (flg) {
+				this.isConfirm = true
+				this.buttonText = '保存中...'
+			} else {
+				this.isConfirm = false
+				this.buttonText = '保存'
+			}
+		},
+		onShouHuoRen(e) {
+			this.addressData.receiver = e.detail.value
+			this.initInput()
+		},
+		onMobile(e) {
+			this.addressData.mobile = e.detail.value
+			this.initInput()
+		},
+		onTextareaInput(e) {
+			this.addressData.address = e.detail.value
+			this.initInput()
+		},
+		initInput() {
+			if (
+				this.addressData.receiver !== '' &&
+				this.addressData.mobile !== '' &&
+				this.addressData.address !== '' &&
+				this.addressData.townId !== ''
+			) {
+				this.isConfirm = false
+			} else {
+				this.isConfirm = true
+			}
 		}
+	},
+	onShow() {
+		this.$api.getStorage().then(resolve => {
+			this.addressData.userId = resolve.userId ? resolve.userId : 0
+		})
 	}
+}
 </script>
 
 <style lang="scss">
-	page{
-		height: auto;
-		background: $bg-color;
-		// border-top: 1px solid #EBEBEB;
-	}
-	.placeholder{color: #b2b2b2;}
-	.add-content{
+page {
+	height: auto;
+	background: $bg-color;
+	// border-top: 1px solid #EBEBEB;
+}
+.placeholder {
+	color: #b2b2b2;
+}
+.add-content {
+	width: 702rpx;
+	padding: 0 24rpx;
+	.input-row {
+		align-items: center;
+		position: relative;
 		width: 702rpx;
-		padding:0 24rpx;
-		.input-row{
-			align-items: center;
-			position: relative;
-			width: 702rpx;
-			height: 88rpx;
-			margin: 0 auto;
-			border-bottom: 2rpx solid #e1e1e1;
-			.label{
-				width:100rpx ;
-				line-height: 88rpx;
-				color: #666666;
-				font-size: $font-size-28;
-				float: left;
-				&.address{
-					width: 120rpx;
-				}
-			}
-			.input{
-				width: 500rpx;
-				height: 100%;
-				font-size: $font-size-28;
-				line-height: 88rpx;
-				display: inline-block;
-				color: #333333;
-				float: left;
-				padding-left: 20rpx;
-			}
-			&.b-b{
-				margin: 20rpx 0;
-			}
-		}
-	}
-	.icon-xiayibu{
-		font-size: 36rpx;
-		color: #b2b2b2;
-		position: absolute;
-		right: 0;
-		top: 10rpx;
-	}
-	.text-textarea{
-		width: 654rpx;
-		height: 147rpx;
-		padding: 24rpx;
-		// background: #F7F7F7;
+		height: 88rpx;
+		margin: 0 auto;
 		border-bottom: 2rpx solid #e1e1e1;
-		.textarea{
-			width: 100%;
-			height: 100%;
+		.label {
+			width: 100rpx;
+			line-height: 88rpx;
+			color: #666666;
 			font-size: $font-size-28;
-			color: $text-color;
-			z-index: 1;
-		}
-		.textarea.hide{
-			opacity: 0;
-		}
-		.textarea.show{
-			color: #999999;
+			float: left;
+			&.address {
+				width: 120rpx;
+			}
 		}
-	}
-	.default-row{
-		background: #FFFFFF;
-		margin-top: 16upx;
-		.tit{
+		.input {
+			width: 500rpx;
+			height: 100%;
 			font-size: $font-size-28;
-			line-height: 40rpx;
+			line-height: 88rpx;
+			display: inline-block;
 			color: #333333;
-			flex: 1;
+			float: left;
+			padding-left: 20rpx;
 		}
-		switch{
-			transform: translateX(16upx) scale(.9);
+		&.b-b {
+			margin: 20rpx 0;
 		}
 	}
-	.add-btn{
-		width: 702rpx;
-		height:90rpx;
-		font-size: $font-size-30;
-		line-height: 90rpx;
-		color: #FFFFFF;
-		margin: 0 auto;
-		text-align: center;
-		background: $btn-confirm;
-		border-radius: 45rpx;
-		border-radius: 44rpx;
-		margin-top: 80rpx;
+}
+.icon-xiayibu {
+	font-size: 36rpx;
+	color: #b2b2b2;
+	position: absolute;
+	right: 0;
+	top: 10rpx;
+}
+.text-textarea {
+	width: 654rpx;
+	height: 147rpx;
+	padding: 24rpx;
+	// background: #F7F7F7;
+	border-bottom: 2rpx solid #e1e1e1;
+	.textarea {
+		width: 100%;
+		height: 100%;
+		font-size: $font-size-28;
+		color: $text-color;
+		z-index: 1;
+	}
+	.textarea.hide {
+		opacity: 0;
 	}
-	.add-btn.disabled{
-		background: #F8F8F8;
-		border-radius: 44rpx;
+	.textarea.show {
+		color: #999999;
 	}
+}
+.default-row {
+	background: #ffffff;
+	margin-top: 16upx;
+	.tit {
+		font-size: $font-size-28;
+		line-height: 40rpx;
+		color: #333333;
+		flex: 1;
+	}
+	switch {
+		transform: translateX(16upx) scale(0.9);
+	}
+}
+.add-btn {
+	width: 702rpx;
+	height: 90rpx;
+	font-size: $font-size-30;
+	line-height: 90rpx;
+	color: #ffffff;
+	margin: 0 auto;
+	text-align: center;
+	background: $btn-confirm;
+	border-radius: 45rpx;
+	border-radius: 44rpx;
+	margin-top: 80rpx;
+}
+.add-btn.disabled {
+	background: #f8f8f8;
+	border-radius: 44rpx;
+}
 </style>
-

+ 7 - 6
pages/user/order/components/choiceAddress.vue → pages/user/order/components/cm-address-temp.vue

@@ -26,7 +26,7 @@
 		 		</view>
 		 	</view>
 		 </navigator>
-		 <image  src="../../../static/temp/line@3x.png" mode=""></image>
+		 <image  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
 	</view>
 </template>
 
@@ -42,6 +42,7 @@
 			return{
 				isEmpty:false,
 				addressSrc:'',
+				StaticUrl: this.$Static,
 			}
 		},
 		created(){
@@ -58,10 +59,10 @@
 			}
 		},
 		methods:{
-			initData(res) {
-				if(Object.keys(res).length == 0){
+			initData(data) {
+				if(Object.keys(data).length == 0){
 					this.isEmpty = true
-					this.addressSrc = '/pages/user/address/addressManage'
+					this.addressSrc = '/pages/user/address/addressManage?type=select'
 				}else{
 					this.isEmpty = false
 					this.$parent.isFreight = false
@@ -92,8 +93,8 @@
 		
 		.address-empty{
 			width: 100%;
-			height: 100rpx;
-			line-height: 100rpx;
+			height: 120rpx;
+			line-height: 120rpx;
 			color: $color-system;
 			text-align: center;
 			font-size: $font-size-26;

+ 0 - 0
pages/user/order/components/exchangeCoupon.vue → pages/user/order/components/cm-coupon-chang.vue


+ 7 - 17
pages/user/order/components/coupon.vue → pages/user/order/components/cm-coupon-popup.vue

@@ -113,22 +113,12 @@ export default {
 			return Number(value).toFixed(2)
 		},
 		TypeFormat(value) {
-			switch (value) {
-				case 0:
-					return '活动券'
-					break
-				case 1:
-					return '品类券'
-					break
-				case 2:
-					return '用户专享券'
-					break
-				case 3:
-					return '店铺券'
-					break
-				case 4:
-					return '新用户券'
-					break
+			const map = {
+				0:'活动券',
+				1:'品类券',
+				2:'用户专享券',
+				3:'店铺券',
+				4:'新用户券',
 			}
 		}
 	},
@@ -212,7 +202,7 @@ export default {
 		.text-coupon {
 			display: inline-block;
 			float: right;
-			padding-right: 30rpx;
+			padding-right: 40rpx;
 			line-height: 88rpx;
 			font-size: 28rpx;
 			color: #f94b4b;

+ 199 - 0
pages/user/order/components/cm-coupon-tips.vue

@@ -0,0 +1,199 @@
+<template name="alert">
+	<view class="coupon-content-model">
+		<view class="coupon-alert-content">
+			<view class="coupon">
+				<view class="coupon-list">
+					<view class="list-cell-tags"
+						><text>{{ coupon.couponType | TypeFormat }}</text></view
+					>
+					<view class="list-cell-le">
+						<view class="coupon-maxMoney"> <text class="small">¥</text> {{ coupon.couponAmount }} </view>
+						<view class="coupon-minMoney">
+							<text class="txt">满{{ coupon.touchPrice }}可用</text>
+						</view>
+					</view>
+					<view class="list-cell-ri">
+						<view class="list-cell-top">
+							<text v-if="coupon.couponType == 0">
+								{{
+									coupon.productType && coupon.productType == 1
+										? '全商城商品通用'
+										: '仅可购买指定商品'
+								}}
+							</text>
+							<text v-if="coupon.couponType == 1">
+								{{ coupon.categoryType == 1 ? '仅限购买产品类商品' : '仅限购买仪器类商品' }}
+							</text>
+							<text v-if="coupon.couponType == 3">仅限购买店铺【{{ coupon.shopName }}】的商品</text>
+							<text v-if="coupon.couponType == 4 || coupon.couponType == 2">全商城商品通用</text>
+						</view>
+						<view class="list-cell-time">{{ coupon.startDate }} - {{ coupon.endDate }}</view>
+					</view>
+				</view>
+				<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'alert',
+	props: {
+		coupon: {
+			type: Object
+		}
+	},
+	filters: {
+		TypeFormat(value) {
+			const map = {
+				0:'活动券',
+				1:'品类券',
+				2:'用户专享券',
+				3:'店铺券',
+				4:'新用户券',
+			}
+		}
+	},
+	data() {
+		return {}
+	},
+	created() {},
+	onLoad() {},
+	methods: {},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+.coupon-content-model {
+	width: 100%;
+	height: 100%;
+	background: rgba(0, 0, 0, 0.5);
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 8888;
+	transition: all 0.4s;
+	.coupon-alert-content {
+		width: 600rpx;
+		height: 612rpx;
+		position: absolute;
+		top: 0;
+		left: 0;
+		bottom: 0;
+		right: 0;
+		margin: auto;
+		box-sizing: border-box;
+		padding-top: 92rpx;
+		.coupon {
+			width: 600rpx;
+			height: 522rpx;
+			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
+			background-size: cover;
+			box-sizing: border-box;
+			padding: 230rpx 40rpx 0 40rpx;
+			.coupon-list {
+				width: 100%;
+				height: 147rpx;
+				margin-bottom: 32rpx;
+				box-sizing: border-box;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
+				background-size: cover;
+				position: relative;
+				.list-cell-tags {
+					display: inline-block;
+					padding: 0 10rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					background-color: #f94b4b;
+					color: #ffffff;
+					font-size: 18rpx;
+					border-radius: 16rpx 0 16rpx 0;
+					text-align: center;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.list-cell-le {
+					width: 154rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 0;
+					float: left;
+					.coupon-maxMoney {
+						width: 100%;
+						height: 54rpx;
+						line-height: 54rpx;
+						font-size: 42rpx;
+						color: #f94b4b;
+						text-align: center;
+						margin-top: 10rpx;
+						.small {
+							font-size: $font-size-20;
+						}
+					}
+					.coupon-minMoney {
+						width: 100%;
+						height: 28rpx;
+						float: left;
+						box-sizing: border-box;
+						padding-left: 24rpx;
+						.txt {
+							display: block;
+							height: 28rpx;
+							line-height: 28rpx;
+							font-size: 16rpx;
+							color: #f94b4b;
+							text-align: center;
+							padding: 0 5rpx;
+							background-color: #fff1eb;
+							border-radius: 4rpx;
+							float: left;
+						}
+					}
+				}
+				.list-cell-ri {
+					width: 366rpx;
+					height: 100%;
+					box-sizing: border-box;
+					padding: 30rpx 20rpx;
+					float: left;
+					.list-cell-top {
+						width: 100%;
+						height: 64rpx;
+						line-height: 64rpx;
+						font-size: $font-size-26;
+						color: #333333;
+						float: left;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
+						overflow: hidden;
+					}
+					.list-cell-time {
+						width: 100%;
+						height: 28rpx;
+						line-height: 28rpx;
+						text-align: left;
+						font-size: $font-size-20;
+						color: #999999;
+					}
+				}
+			}
+			.coupon-btn {
+				width: 100%;
+				height: 78rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
+				background-size: cover;
+				line-height: 78rpx;
+				text-align: center;
+				color: #ffffff;
+				font-size: $font-size-36;
+			}
+		}
+	}
+}
+</style>

+ 247 - 0
pages/user/order/components/cm-details-button.vue

@@ -0,0 +1,247 @@
+<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="order.checkFlag === 2" @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 class="tips">采美豆<text class="line"></text></view>
+			</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: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [33], status: true },
+				{ label: 'isConfirmation', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], 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,
+				shopOrderId: order.shopOrderId,
+				order: order
+			}
+			this.$emit('buttonConfirm', data)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.button-template {
+	width: 100%;
+	height: auto;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background: #ffffff;
+	.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: 160rpx;
+			height: 64rpx;
+			margin: 22rpx 12rpx 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: #f94b4b;
+			margin-right: 0;
+			border: 2rpx solid #f94b4b;
+			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: #ff5b00;
+				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: #ff5b00;
+					position: absolute;
+					bottom: -8rpx;
+					left: 30rpx;
+					z-index: -1;
+					transform: rotate(45deg);
+				}
+			}
+		}
+	}
+}
+</style>

+ 406 - 0
pages/user/order/components/cm-freight-popup.vue

@@ -0,0 +1,406 @@
+<template name="freight">
+	<!-- 运费信息 -->
+	<view>
+		<view class="goods-pros-m">
+			<template v-if="supplier.postageFlag === 0">
+				<view class="freight-main">
+					<view class="freight-left">运费:</view>
+					<view class="freight-right"> <view class="freight-text">包邮</view> </view>
+				</view>
+			</template>
+			<template v-if="supplier.postageFlag === 1 && supplier.designatedFlag === 1">
+				<view class="freight-main">
+					<view class="freight-left">运费:</view>
+					<view class="freight-right" @click.stop="handlePupShow">
+						<view class="freight-text">¥{{ handleTotalPostage | NumFormat }}</view>
+						<view class="select"><text class="iconfont icon-xiayibu"></text></view>
+					</view>
+				</view>
+			</template>
+			<template
+				v-if="
+					(supplier.postageFlag === 1 && supplier.designatedFlag === 2) ||
+						(supplier.postageFlag === 1 && supplier.designatedFlag === 3)
+				"
+			>
+				<view class="freight-main">
+					<view class="freight-left">运费:</view>
+					<view class="freight-right" @click.stop="handlePupShow">
+						<template v-if="handlePostageFlag === 1">
+							<view class="freight-text">¥{{ handleTotalPostage | NumFormat }}</view>
+						</template>
+						<template v-if="handlePostageFlag === 2">
+							<view v-if="handleSupplier.isColdChina" class="freight-text" >¥{{ handleTotalPostage | NumFormat }}</view>
+							<view v-else class="freight-text">到付</view>
+						</template>
+						<view class="select"><text class="iconfont icon-xiayibu"></text></view>
+					</view>
+				</view>
+			</template>
+			<template v-if="supplier.postageFlag === 2">
+				<view class="freight-main">
+					<view class="freight-left">运费:</view>
+					<view class="freight-right"> <view class="freight-text">到付</view></view>
+				</view>
+			</template>
+			<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup">
+				<view class="freight-title">运费设置</view>
+				<view class="freight-content">
+					<radio-group @change="radioChange" v-if="handleDesignatedFlag!=1">
+						<label v-for="(item, index) in radioItems" :key="index">
+							<radio
+								style="transform:scale(0.7)"
+								color="#FF5B00"
+								:id="item.value"
+								:value="item.value"
+								:checked="item.checked"
+							></radio>
+							<label :for="item.value" class="label">
+								<text>{{ item.name }}</text>
+							</label>
+						</label>
+					</radio-group>
+					<template v-if="handlePostageFlag === 1">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item" v-if="handleDesignatedFlag!=1">
+								<view class="label">其他运费 </view>
+								<view class="texts red">¥{{ handleSupplier.postage | NumFormat }} </view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费 </view>
+								<view class="texts red">¥{{ handleTotalPostage | NumFormat }} </view>
+							</view>
+						</view>
+					</template>
+					<template v-if="handlePostageFlag === 2">
+						<view class="freight-form">
+							<view class="freight-form-item" v-if="handleSupplier.coldChain > 0">
+								<view class="label">冷链运输费</view>
+								<view class="texts">
+									<text>¥{{ handleSupplier.coldChain | NumFormat }}</text>
+									<text
+										class="iconfont"
+										:class="[isColdChina ? 'icon-yixuanze' : 'icon-weixuanze']"
+										@click.stop="handleChangeColdChina"
+									>
+									</text>
+								</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">其他运费 </view><view class="texts red">到付</view>
+							</view>
+							<view class="freight-form-item">
+								<view class="label">总运费</view>
+								<view class="texts red" v-if="handleSupplier.isColdChina"
+									>¥{{ handleSupplier.coldChain | NumFormat }}</view
+								>
+								<view class="texts red" v-else>到付</view>
+							</view>
+						</view>
+					</template>
+					<view class="freight-btn" @click="popupShow = false"> 确定 </view>
+				</view>
+			</tui-bottom-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'freight',
+	props: {
+		supplier: {
+			type: Object
+		},
+		index: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			popupShow: false,
+			isColdChina: false,
+			handlePostage:0,
+			handlePostageFlag: 1,
+			handleDesignatedFlag:0,
+			radioItems: [
+				{
+					name: '不包邮',
+					value: 1,
+					checked: true
+				},
+				{
+					name: '到付',
+					value: 2
+				}
+			],
+			handleSupplier: {}
+		}
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	created() {
+		this.infoSupplier(this.supplier)
+	},
+	computed: {
+		// 计算总运费
+		handleTotalPostage() {
+			if (this.handleSupplier.isColdChina) {
+				return (this.handleSupplier.postage * 100 + this.handleSupplier.coldChain * 100) / 100
+			} else {
+				return this.handleSupplier.postage
+			}
+		}
+	},
+	watch: {
+		supplier: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.supplier = el
+			},
+			deep: true
+		}
+	},
+	methods: {
+		// 初始化
+		infoSupplier(data) {
+			this.handleSupplier = data
+			this.isColdChina = data.isColdChina
+			this.handlePostage = data.postage
+			this.handlePostageFlag = data.handlePostageFlag
+			this.handleDesignatedFlag = data.designatedFlag
+		},
+		// 勾选冷链费
+		handleChangeColdChina() {
+			this.isColdChina = !this.isColdChina
+			this.handleSupplier.isColdChina = this.isColdChina
+			if (this.isColdChina) {
+				this.handleSupplier.totalPrice = Number(
+					(this.handleSupplier.totalPrice * 100 + this.handleSupplier.coldChain * 100) / 100
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			} else {
+				this.handleSupplier.totalPrice = Number(
+					this.repiceNumSub(this.handleSupplier.totalPrice, this.handleSupplier.coldChain)
+				)
+				this.$emit('changeColdChina', this.handleSupplier, this.index)
+			}
+		},
+		// 切换运费类型 1 不包邮 2 到付
+		radioChange($event) {
+			// const postage = this.isColdChina ? ( this.handleSupplier.postage + this.handleSupplier.coldChain ) : this.handleSupplier.postage
+			this.handlePostageFlag = this.handleSupplier.handlePostageFlag = $event.detail.value * 1
+			console.log('handlePostageFlag',this.handlePostageFlag)
+			if (this.handlePostageFlag === 1) {
+				this.handleSupplier.postage = this.handlePostage
+				this.handleSupplier.totalPrice = Number(
+					(this.handleSupplier.totalPrice * 100 + this.handleSupplier.postage * 100) / 100
+				)
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			} else {
+				this.handleSupplier.totalPrice = Number(
+					this.repiceNumSub(this.handleSupplier.totalPrice, this.handleSupplier.postage)
+				)
+				this.handleSupplier.postage = 0
+				console.log('2222222222',this.handleSupplier.totalPrice)
+				this.$emit('changePostage', this.handleSupplier, this.index)
+			}
+		},
+		repiceNumSub(arg1, arg2) {
+			//减法精确,arg2:被减数,arg1:减数
+			var r1, r2, m, n
+			try {
+				r1 = arg1.toString().split('.')[1].length
+			} catch (e) {
+				r1 = 0
+			}
+			try {
+				r2 = arg2.toString().split('.')[1].length
+			} catch (e) {
+				r2 = 0
+			}
+			m = Math.pow(10, Math.max(r1, r2))
+			// last modify by deeka
+			// 动态控制精度长度
+			n = r1 >= r2 ? r1 : r2
+			return ((arg1 * m - arg2 * m) / m).toFixed(n)
+		},
+		handlePupShow() {
+			this.popupShow = true
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-pros-m {
+	width: 100%;
+	box-sizing: border-box;
+	padding: 10rpx 0;
+	.freight-main {
+		width: 100%;
+		height: 78rpx;
+		line-height: 78rpx;
+		font-size: $font-size-28;
+		color: $text-color;
+		background: #ffffff;
+		float: left;
+		.freight-left {
+			float: left;
+			font-weight: bold;
+		}
+		.freight-right {
+			float: right;
+			color: #333333;
+			position: relative;
+			.freight-text {
+				float: left;
+			}
+			.select {
+				float: right;
+				height: 78rpx;
+				padding: 0 20rpx;
+				line-height: 78rpx;
+				color: #333333;
+				font-weight: normal;
+				position: relative;
+				.select-text {
+					display: inline-block;
+					float: left;
+					margin-right: 30rpx;
+				}
+				.iconfont {
+					width: 60rpx;
+					height: 78rpx;
+					line-height: 78rpx;
+					text-align: right;
+					position: absolute;
+					right: 0;
+					top: 0;
+					font-size: $font-size-30;
+					color: #b2b2b2;
+				}
+			}
+		}
+	}
+	.freight-bean {
+		width: 100%;
+		height: 58rpx;
+		line-height: 58rpx;
+		float: left;
+		.bean-le {
+			float: left;
+			color: #666666;
+			font-size: $font-size-26;
+			font-weight: normal;
+		}
+		.bean-ri {
+			float: right;
+			display: flex;
+			align-items: center;
+			.checkbox-box {
+				display: flex;
+				width: 60rpx;
+				float: left;
+				height: 100%;
+				font-size: $font-size-26;
+				margin-top: 8rpx;
+				.checkbox {
+					width: 40rpx;
+					text-align: right;
+					box-sizing: border-box;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $color-system;
+				}
+			}
+		}
+	}
+}
+.freight-title {
+	color: #333333;
+	font-size: 32rpx;
+	text-align: center;
+	margin: 40rpx 0;
+}
+.freight-content {
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	font-weight: normal;
+	radio {
+		margin-right: 8rpx;
+	}
+	.label {
+		color: #666666;
+		font-size: 28rpx;
+		margin-right: 102rpx;
+	}
+	.freight-btn {
+		height: 90rpx;
+		background: $btn-confirm;
+		border-radius: 45rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #ffffff;
+		width: 100%;
+		margin: 100rpx 0 0 0;
+	}
+}
+.freight-form {
+	margin-top: 50rpx;
+	width: 100%;
+	.freight-form-item {
+		width: 100%;
+		height: 48rpx;
+		line-height: 48rpx;
+		margin-bottom: 24rpx;
+		color: #666666;
+		font-size: 28rpx;
+		.label {
+			width: 50%;
+			float: left;
+			margin-right: 0;
+		}
+		.texts {
+			width: 50%;
+			float: right;
+			text-align: right;
+			&.red {
+				color: #f94b4b;
+			}
+			.iconfont {
+				margin-left: 20rpx;
+				color: $color-system;
+			}
+		}
+	}
+}
+.freight-pay {
+	position: absolute;
+	right: -60%;
+	transform: scale(0.7);
+}
+</style>

+ 84 - 61
pages/seller/order/components/sellerGoodsList.vue → pages/user/order/components/cm-goods-temp.vue

@@ -2,14 +2,14 @@
 	<view class="goods-template">
 		<!-- 商品列表 -->
 		<view class="goods-list">
-			<view v-for="(item, index) in goodsData" :key="index" class="goods-item">
+			<view v-for="(supplier, index) in goodsData" :key="index" class="goods-item">
 				<view class="shoptitle">
-					<view v-if="item.promotions" class="floor-item-act">
-						<view class="floor-tags">{{ item.promotions.name }}</view>
+					<view v-if="supplier.promotions" class="floor-item-act">
+						<view class="floor-tags">{{ supplier.promotions.name }}</view>
 					</view>
-					<view class="title-text">{{ item.shopName }}</view>
+					<view class="title-text">{{ supplier.shopName }}</view>
 				</view>
-				<view class="productlist" v-for="(pros, idx) in item.cartList" :key="idx">
+				<view class="productlist" v-for="(pros, idx) in supplier.cartList" :key="idx">
 					<view class="goods-pros-t">
 						<view class="pros-img">
 							<image :src="pros.image" alt="" />
@@ -31,7 +31,7 @@
 								<template v-if="pros.actStatus == 1 && pros.promotions">
 									<view v-if="PromotionsFormat(pros.promotions)" class="floor-tags">
 										{{ pros.promotions.name }}
-										<text v-if="pros.promotions != null">
+										<text v-if="pros.promotions">
 											:¥{{
 												pros.promotions == null
 													? '0.00'
@@ -43,7 +43,7 @@
 										pros.promotions.name
 									}}</view>
 								</template>
-								<template v-if="pros.svipProductFlag == 1">
+								<template v-if="pros.svipProductFlag == 1 && vipFlag == 1">
 									<view class="svip-tags">
 										<view class="tags">SVIP</view>
 										<view class="price">{{ pros.svipPriceTag }}</view>
@@ -62,22 +62,28 @@
 							@change="changeHandle(index)"
 							placeholder-class="placeholder"
 							maxlength="50"
-						 placeholder="选填,最多不超过50个汉字"
+							placeholder="选填,最多不超过50个汉字"
 						/>
 					</view>
 				</view>
+				<!-- 运费 -->
+				<cm-freight-popup         
+					ref="freight"
+					:index.sync="index"
+					:supplier.sync="supplier"
+					@changePostage="changePostageFlag"
+					@changeColdChina="hanldChangeColdChina"
+				/>
 				<view class="goods-pros-b">
-					<view class="sum-none" v-if="item.reducedPrice > 0">
+					<view class="sum-none" v-if="supplier.originalPrice - supplier.totalPrice > 0">
 						<text class="money-sign">¥</text>
-						<text class="money">{{ item.originalPrice | NumFormat }}</text>
+						<text class="money">{{ supplier.originalPrice | NumFormat }}</text>
 						<text class="money-reduced"
-							>减<text>¥{{ item.reducedPrice | NumFormat }}</text></text
+							>减<text>¥{{ (supplier.originalPrice - supplier.totalPrice) | NumFormat }}</text></text
 						>
 					</view>
-					<view class="sum" v-if="secondflag"
-						>合计:<text class="money"
-							>¥{{ (item.originalPrice - item.reducedPrice) | NumFormat }}</text
-						></view
+					<view class="sum"
+						>合计:<text class="money">¥{{ supplier.totalPrice | NumFormat }}</text></view
 					>
 				</view>
 			</view>
@@ -86,23 +92,26 @@
 </template>
 
 <script>
+import cmFreightPopup from './cm-freight-popup'
 export default {
 	name: 'goods',
+	components: {
+		cmFreightPopup
+	},
 	props: {
 		goodsData: {
 			type: Array
-		},
-		secondflag: {
-			type: Boolean,
-			default: true
 		}
 	},
 	data() {
 		return {
-			remark: []
+			remark: [],
+			vipFlag: 0
 		}
 	},
-	created() {},
+	created() {
+		this.initGetStotage()
+	},
 	filters: {
 		NumFormat(value) {
 			//处理金额
@@ -120,6 +129,22 @@ export default {
 	},
 	computed: {},
 	methods: {
+		async initGetStotage() {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+		},
+		// 勾选冷链费操作
+		hanldChangeColdChina(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changeChina', supplier)
+		},
+		// 更换运费类型 1 不包邮  2 到付
+		changePostageFlag(supplier,index){
+			this.goodsData[index] = supplier
+			this.$emit('handleGoodList', this.goodsData)
+			this.$emit('changePostage', supplier)
+		},
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -244,18 +269,17 @@ export default {
 			}
 			.productspec {
 				height: 40rpx;
-				color: #999999;
 				line-height: 40rpx;
+				color: #999999;
 				text-overflow: ellipsis;
 				display: -webkit-box;
 				word-break: break-all;
 				-webkit-box-orient: vertical;
-				-webkit-line-clamp: 2;
+				-webkit-line-clamp: 1;
 				overflow: hidden;
 			}
 			.productprice {
 				height: 54rpx;
-				line-height: 54rpx;
 				width: 100%;
 				float: left;
 				.price {
@@ -283,43 +307,6 @@ export default {
 				padding: 0 0 10rpx 0;
 			}
 		}
-		.goods-pros-m {
-			height: 76rpx;
-			line-height: 76rpx;
-			font-size: $font-size-26;
-			color: $text-color;
-			margin-top: 12rpx;
-			.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: 576rpx;
-				height: 36rpx;
-				padding: 20rpx;
-				background: #fff;
-				border-radius: 10rpx;
-				border: 2rpx solid #b2b2b2;
-				input {
-					width: 100%;
-					height: 100%;
-					// background: #F7F7F7;
-					font-size: $font-size-26;
-					line-height: 36rpx;
-					color: #333333;
-					min-height: 36rpx;
-				}
-			}
-		}
 		.goods-pros-b {
 			width: 100%;
 			height: auto;
@@ -363,6 +350,42 @@ export default {
 					font-size: $font-size-28;
 				}
 			}
+		}	
+	}
+}
+.goods-pros-m {
+	height: 76rpx;
+	line-height: 76rpx;
+	font-size: $font-size-26;
+	color: $text-color;
+	margin-top: 12rpx;
+	.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: 580rpx;
+		height: 36rpx;
+		padding: 20rpx;
+		background: #f7f7f7;
+		border-radius: 10rpx;
+		input {
+			width: 100%;
+			height: 100%;
+			background: #f7f7f7;
+			font-size: $font-size-26;
+			line-height: 36rpx;
+			color: #333333;
+			min-height: 36rpx;
 		}
 	}
 }

+ 452 - 0
pages/user/order/components/cm-invice-popup.vue

@@ -0,0 +1,452 @@
+<template name="cm-parameter">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-title" @tap.stop="handleShowPopup">
+			<text class="text">发票信息:</text> <text class="invoice-text">{{ invoiceText }}</text>
+			<text class="iconfont icon-xiangyou"></text>
+		</view>
+		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="title">发票信息</view>
+				<view class="tui-popup-close" @click="hidePopup">
+					<text class="iconfont icon-iconfontguanbi"></text>
+				</view>
+				<view class="tui-popup-main">
+					<view class="popup-form">
+						<text
+							class="radio"
+							v-for="(invoice, index) in invoiceType"
+							:key="index"
+							@click="handleTnvoiceType(invoice.type, index)"
+							:class="invoiceTypeIndex === index ? 'active' : ''"
+						>
+							{{ invoice.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex === 1">
+						<view class="label">抬头类型:</view>
+						<text
+							class="radio"
+							v-for="(title, index) in titleType"
+							:key="index"
+							@click="handleTitleType(title.type, index)"
+							:class="titleIndex === index ? 'active' : ''"
+						>
+							{{ title.name }}
+						</text>
+					</view>
+					<view class="popup-form" v-if="invoiceTypeIndex > 0">
+						<view class="label">发票抬头:</view>
+						<input
+							class="input"
+							type="text"
+							v-model="invoiceData.invoiceTitle"
+							placeholder="请输入发票抬头"
+							maxlength="50"
+							cursor-spacing="40"
+						/>
+					</view>
+					<template v-if="invoiceTypeIndex === 2 || titleIndex === 1">
+						<view class="popup-form">
+							<view class="label">单位税号:</view>
+							<input
+								class="input"
+								type="text"
+								v-model="invoiceData.corporationTaxNum"
+								placeholder="请输入单位税号"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册地址:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.registeredAddress"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册地址' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">注册电话:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.registeredPhone"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入注册电话' : '选填'"
+								maxlength="11"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">开户银行:</view>
+							<input
+								type="text"
+								class="input"
+								v-model="invoiceData.openBank"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入开户银行' : '选填'"
+								maxlength="50"
+								cursor-spacing="40"
+							/>
+						</view>
+						<view class="popup-form">
+							<view class="label">银行账号:</view>
+							<input
+								type="number"
+								class="input"
+								v-model="invoiceData.bankAccountNo"
+								:placeholder="invoiceTypeIndex === 2 ? '请输入银行账号' : '选填'"
+								maxlength="30"
+								cursor-spacing="40"
+							/>
+						</view>
+					</template>
+				</view>
+				<view class="tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="tui-modal-flex">
+						<button
+							class="tui-modal-button"
+							:disabled="disabled"
+							@click="handleConfirm"
+						>
+							确定
+						</button>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'cm-prams-popup',
+	props: {},
+	data() {
+		return {
+			popupShow: false,
+			isIphoneX: this.$store.state.isIphoneX,
+			userId:0,
+			invoiceTypeIndex: 0,
+			titleIndex: 0,
+			invoiceType: [
+				{
+					name: '不开发票',
+					type: 0
+				},
+				{
+					name: '普通发票',
+					type: 1
+				},
+				{
+					name: '增值税专用发票',
+					type: 2
+				}
+			],
+			titleType: [
+				{
+					name: '个人',
+					type: 0
+				},
+				{
+					name: '单位',
+					type: 1
+				}
+			],
+			invoiceText: '不开发票',
+			invoiceData: {
+				type: 0, 		//发票类型 0 不开发票 1 普通发票 2 增值税发票
+				headingType: 0, 		//抬头类型 0 个人 1 单位
+				invoiceTitle: '', 		//发票抬头
+				corporationTaxNum: '',  //单位税号
+				registeredAddress: '',  //单位地址
+				registeredPhone: '',    //注册电话
+				openBank: '', 		    //开户银行
+				bankAccountNo: ''       //银行账号
+			}
+		}
+	},
+	created() {
+		
+	},
+	computed: {
+		
+	},
+	methods: {
+		// 切换发票类型
+		handleTnvoiceType(type, index) {
+			this.invoiceTypeIndex = index
+			this.invoiceData.type = type
+			if(this.invoiceTypeIndex === 1){
+				this.titleIndex = 0
+				this.invoiceData.headingType = 0
+			}
+		},
+		// 切换抬头类型
+		handleTitleType(type, index) {
+			this.titleIndex = index
+			this.invoiceData.headingType = type
+		},
+		// 显示发票弹窗 查询发票信息
+		handleShowPopup(){
+			this.getUseFindInvoice()
+		},
+		// 确认保存发票
+		handleConfirm(){
+			if(this.invoiceTypeIndex === 0){
+				this.invoiceData = {...this.invoiceData , ...{ type : 0 }}
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.hidePopup()
+			}else{
+				this.checkedInput()
+			}
+		},
+		// 校验必填项
+		checkedInput(){
+			/**
+			 *  普通发票 个人 仅校验发票抬头
+			 * 	普通发票 单位 校验发票抬头 校验单位税号
+			 *  增值税发票 校验全部
+			 * */ 
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 0){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 1 && this.titleIndex === 1){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+			}
+			if(this.invoiceTypeIndex === 2){
+				if (!this.invoiceData.invoiceTitle) {
+					this.$util.msg('请输入发票抬头', 2000)
+					return
+				}
+				if (!this.invoiceData.corporationTaxNum) {
+					this.$util.msg('请输入单位税号', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredAddress) {
+					this.$util.msg('请输入注册地址', 2000)
+					return
+				}
+				if (!this.invoiceData.registeredPhone) {
+					this.$util.msg('请输入注册电话', 2000)
+					return
+				}
+				if (!this.invoiceData.openBank) {
+					this.$util.msg('请输入开户银行', 2000)
+					return
+				}
+				if (!this.invoiceData.bankAccountNo) {
+					this.$util.msg('请输入银行账号', 2000)
+					return
+				}
+			}
+			this.updateInvoiceFn()
+		},
+		//获取发票信息
+		async getUseFindInvoice() {
+			try {
+				this.popupShow = true
+				const resolve = await this.$api.getStorage()
+				this.userId = resolve.userId
+				const res = await this.OrderService.GetFindInvoice({ userId: resolve.userId })
+				this.invoiceData = {...this.invoiceData, ...res.data}
+				console.log('invoiceData',this.invoiceData)
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		//保存发票信息
+		async updateInvoiceFn() {
+			try {
+				const res = await this.OrderService.UpdateInvoice({ ...this.invoiceData,...{userId: this.userId }})
+				this.invoiceText = this.setInvoiceText(this.invoiceData)
+				this.$emit('handleChoiceaInvoice', this.invoiceData)
+				this.popupShow = false
+			} catch (error) {
+				console.log('error',error)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data){
+			const map = {
+				0:'个人',
+				1:'单位'
+			}
+			switch (data.type){
+				case 0:
+					return `不开发票`
+					break;
+				case 1:
+					return `普票-${map[data.headingType]}(${this.nameFilters(data.invoiceTitle)})`
+					break;
+				case 2:
+					return `专票(${this.nameFilters(data.invoiceTitle)})`
+					break;
+			}
+		},
+		nameFilters(value) {
+			if(value && value.length>10){
+				return value.substring(0,10)+"..." 
+			}else{
+				return value
+			}
+		},
+		hidePopup() {
+			this.popupShow = false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.invoice-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.invoice-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		border-bottom: 1px solid #ebebeb;
+		.text {
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.invoice-text {
+			font-size: $font-size-28;
+			color: #F85050;
+			line-height: 90rpx;
+			display: inline-block;
+			float: right;
+			box-sizing: border-box;
+			padding-right: 40rpx;
+		}
+		.iconfont {
+			width: 50rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			color: #999999;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 0;
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 24rpx 0 24rpx;
+	.title {
+		font-size: $font-size-34;
+		color: $text-color;
+		line-height: 88rpx;
+		text-align: center;
+		float: left;
+		width: 100%;
+		height: 88rpx;
+		font-weight: bold;
+	}
+	.tui-popup-close {
+		width: 90rpx;
+		height: 90rpx;
+		position: absolute;
+		right: 0;
+		top: 24rpx;
+		line-height: 90rpx;
+		text-align: center;
+		color: #b2b2b2;
+		.icon-iconfontguanbi {
+			font-size: $font-size-40;
+		}
+	}
+	.tui-popup-main {
+		width: 100%;
+		float: left;
+		min-height: 400rpx;
+		.popup-form {
+			width: 100%;
+			height: 112rpx;
+			box-sizing: border-box;
+			padding: 23rpx 0;
+			border-bottom: 1px solid #e1e1e1;
+			&.none{
+				border-bottom: none;
+			}
+			.label {
+				width: 140rpx;
+				float: left;
+				font-size: $font-size-28;
+				line-height: 64rpx;
+				color: #666666;
+			}
+			.radio {
+				height: 64rpx;
+				padding: 0 28rpx;
+				line-height: 64rpx;
+				color: #666666;
+				text-align: center;
+				border-radius: 32rpx;
+				margin: 0 8rpx;
+				display: inline-block;
+				background: #f5f5f5;
+				font-size: $font-size-28;
+				&.active {
+					background: #fff4e6;
+					color: #f3b574;
+				}
+			}
+			.input {
+				line-height: 64rpx;
+				height: 64rpx;
+				color: #333333;
+				font-size: $font-size-28;
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+	}
+	.tui-modal-flex {
+		width: 100%;
+		height: 84rpx;
+		margin-top: 40rpx;
+		display: flex;
+		.tui-modal-button {
+			flex: 1;
+			line-height: 84rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 42rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			background: $btn-confirm;
+			color: #ffffff;
+			&.disabled {
+				background: #e1e1e1;
+				border-radius: 42rpx;
+			}
+		}
+	}
+}
+</style>

+ 257 - 0
pages/user/order/components/cm-list-button.vue

@@ -0,0 +1,257 @@
+<template name="button">
+	<view class="button-template">
+		<!-- 底部按钮 -->
+		<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="order.checkFlag === 2" @click.stop="btnConfirm('upload', order)"
+				>上传凭证</view
+			>
+			<view class="btn btn-share" @click.stop="onShareCode(order)">分享订单</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 class="tips">采美豆<text class="line"></text></view>
+			</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: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isDelete', val: [4], status: true },
+				{ label: 'isCancel', val: [0, 11], status: true },
+				{ label: 'isConfirm', val: [33], status: true },
+				{ label: 'isConfirmation', val: [0], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], 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(order) {
+			this.$parent.isShareModal = true
+			this.$parent.handleShopOrderId = order.shopOrderId
+		},
+		btnConfirm(type, order) {
+			let data = {
+				type: type,
+				shopOrderId: order.shopOrderId,
+				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 15rpx;
+			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: #f94b4b;
+			color: #ffffff;
+			border: 2rpx solid #f94b4b;
+		}
+		.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>

+ 148 - 0
pages/user/order/components/cm-orderpay-popup.vue

@@ -0,0 +1,148 @@
+<template name="sharealert">
+	<view class="alert spec" >
+		<view class="model-warp-main" @click.stop="hideConfirm">
+			<view class="content" v-if="modelType == 1">
+				<view class="content-title"></view>
+				<view class="text-content clearfix">
+					<view class="text">
+						<text>您有采美余额¥{{payModelData.ableUserMoney}}暂未使用,是否需要抵扣订单?</text>
+						<text>抵扣后您只需再支付¥{{payModelData.pendingPayments}}</text></view>
+					<view class="alert-btn" @click="cancelConfirm(dataInfo)">不抵扣,继续付款</view>
+					<view class="alert-btn" @click="paymentConfirm(1,dataInfo)">抵扣,继续付款</view>
+				</view>				
+			</view>
+			<view class="content" v-if="modelType == 2">
+				<view class="content-title"></view>
+				<view class="text-content clearfix">
+					<view class="text">您有采美余额¥{{payModelData.ableUserMoney}}暂未使用,是否需要抵扣订单?抵扣后订单支付完成</view>
+					<view class="alert-btn" @click="cancelConfirm(dataInfo)">不抵扣,继续付款</view>
+					<view class="alert-btn" @click="paymentConfirm(2,dataInfo)">抵扣</view>
+				</view>				
+			</view>
+			<view class="content" v-if="modelType == 3">
+				<view class="content-title"></view>
+				<view class="text-content clearfix">
+					<view class="text">目前机构余额剩余¥{{payModelData.ableUserMoney.toFixed(2)}}是否抵扣订单?</view>
+					<view class="alert-btn" @click="hideConfirm">取消,不抵扣</view>
+					<view class="alert-btn" @click="paymentConfirm(3,dataInfo)">抵扣</view>
+				</view>				
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:'sharealert',
+		props:{
+			modelType:{
+				type:Number,
+				default:3
+			},
+			payModelData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				dataInfo:{}
+			}
+		},
+		created() {
+			this.infoData(this.payModelData)
+		},
+		methods:{
+			infoData(el){
+				this.dataInfo = el
+			},
+			hideConfirm(){
+				this.$parent.isPayModel = false
+			},
+			cancelConfirm(data){
+				this.$emit('cancelConfirm',data)
+			},
+			paymentConfirm(type,data){
+				this.$parent.isPayModel = false
+				let _data = {type:type,order:data}
+				this.$emit('paymentConfirm',_data)
+			},
+			btnConfirm(data){//点击事件
+				this.$emit('btnConfirm',data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*弹窗*/
+	 .model-warp-main.none{
+		 display: none;
+	 }
+	 .model-warp-main.show{
+		 display: block;
+	 }
+	 .model-warp-main{
+		width: 100%;
+		height: 100%;
+		background: rgba(0,0,0,0.3);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 10000;
+		transition: all 0.4s;
+		&.none{
+			display: none;			
+		}
+		&.show{
+			display: block;
+		}
+		.content{
+			width: 540rpx;
+			min-height: 310rpx;
+			box-sizing: border-box;
+			position: absolute;
+			left: 50%;
+			top: 50%;
+			transform: translate(-50%,-50%);
+			border-radius: 14rpx;
+			background-color: #FFFFFF;
+			padding-top: 180rpx;
+			.content-title{
+				position: absolute;
+				left: 0;
+				top: -53rpx;
+				width: 100%;
+				height: 232rpx;
+				background: url(https://static.caimei365.com/app/img/icon/icon-orderAlert@2x.png) no-repeat;
+				background-size: contain;
+			}
+			.text-content{
+				width: 100%;
+				min-height: 208rpx;
+				box-sizing: border-box;
+				padding:24rpx;
+				float: left;
+				background-color: #FFFFFF;
+				border-radius:0 0 14rpx 14rpx;
+				.text{
+					letter-spacing: 2rpx;
+					line-height: 50rpx;
+					font-size: $font-size-26;
+					color: $text-color;
+					text-align: justify;
+					margin-bottom: 30rpx;
+				}
+			}
+			.alert-btn{
+				width: 492rpx;
+				height: 88rpx;
+				background: $btn-confirm;
+				line-height: 88rpx;
+				text-align: center;
+				border-radius: 44rpx;
+				color: #FFFFFF;
+				margin-top: 20rpx;
+			}
+		}	
+	}
+</style>

+ 0 - 0
pages/user/order/components/cm-return-instructions.vue → pages/user/order/components/cm-return-popup.vue


+ 11 - 9
components/cm-module/modelAlert/shareAlert.vue → pages/user/order/components/cm-share-popup.vue

@@ -24,7 +24,7 @@
 	export default{
 		name:'sharealert',
 		props:{
-			orderId:{
+			shopOrderId:{
 				type:Number
 			}
 		},
@@ -34,17 +34,19 @@
 			}
 		},
 		created() {
-			this.getShareCode(this.orderId)
+			this.getShareCode(this.shopOrderId)
 		},
 		methods:{
-			getShareCode(res){
-				this.OrderService.QueryOrderShareCode({orderId:res}).then(response =>{
-					this.shareCode = response.data
+			//获取订单分享码
+			async getShareCode(shopOrderId){
+				try{
+					const res = await this.OrderService.QueryOrderShareCode({shopOrderId:shopOrderId})
+					this.shareCode = res.data
 					this.$parent.shareCode = this.shareCode;
-				}).catch(error =>{
+				}catch(error){
 					this.$parent.isShareModal = false;
-					this.$util.modal('提示',error.msg,'确定','',false,() =>{})
-				})
+					this.$util.msg(error.msg, 2000)
+				}
 			},
 			hideConfirm(){
 				this.$parent.isShareModal = false
@@ -147,4 +149,4 @@
 			}
 		}	
 	}
-</style>
+</style>

+ 164 - 0
pages/user/order/components/details/cm-address-temp.vue

@@ -0,0 +1,164 @@
+<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 class="a-bg"  :src="StaticUrl + '/icon/line@3x.png'" mode=""></image>
+	</view>
+</template>
+
+<script>
+	import { mapState, mapMutations } from 'vuex'	
+	export default{
+		name:'address',
+		props:{
+			addressData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				initData:'',
+				StaticUrl: this.$Static,
+			}
+		},
+		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;
+        }
+		image{
+			float: left;
+			width: 100%;
+			height: 12rpx;
+		}
+	}
+	.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: 40rpx;
+			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-xiayibu {
+			font-size: 32rpx;
+			color: $text-color;
+			margin-right: 30rpx;
+		}
+	}
+</style>

+ 524 - 0
pages/user/order/components/details/cm-goods-temp.vue

@@ -0,0 +1,524 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list clearfix">
+			<view v-for="(item, index) in dataList" :key="index" class="goods-item clearfix">
+				<view class="shoptitle">
+					<view v-if="item.shopPromotion" class="floor-item-act">
+						<view class="floor-tags" @click.stop="clickPopupShow(item.shopPromotion)">{{
+							item.shopPromotion.name
+						}}</view>
+					</view>
+					<view class="title-text" v-if="orderInfo.secondHandOrderFlag == 1"
+						>{{ item.shopName }}
+						<label class="paymenttext" v-if="orderInfo.affirmPaymentFlag == 1">已确认打款供应商</label>
+					</view>
+					<view class="title-text" v-else @click="goShophome(item)">
+						{{ item.shopName }} <label class="iconfont icon-jinrudianpu"></label>
+					</view>
+				</view>
+				<view class="productlist">
+					<view class="goods-pros-t " @click="details(item)">
+						<view class="pros-left">
+							<view class="pros-img">
+								<image :src="item.image" alt="" />
+								<text class="tips" v-if="item.giftType == 2 || item.giftType == 1">赠品</text>
+							</view>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ item.name }}</view>
+							<view class="productspec product-view" v-if="item.productCategory != 2"
+								>规格:{{ item.productUnit ? item.productUnit : '' }}</view
+							>
+							<view class="product-view">
+								<view
+									class="view-num red"
+									:class="
+										item.svipPriceFlag == 1 || PromotionsFormat(item.productPromotion) ? 'none' : ''
+									"
+									>¥{{ item.price | NumFormat }}</view
+								>
+								<view class="view-num right">x {{ item.num }}</view>
+							</view>
+							<view class="floor-item-act">
+								<template v-if="item.productPromotion">
+									<view
+										v-if="PromotionsFormat(item.productPromotion)"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+									>
+										{{ item.productPromotion.name }}
+										<text v-if="item.productPromotion != null && item.productPromotion.type != 3">
+											:¥{{
+												item.productPromotion == null
+													? '0.00'
+													: item.productPromotion.touchPrice | NumFormat
+											}}
+										</text>
+									</view>
+									<view
+										v-else-if="item.productPromotion.type != 3"
+										class="floor-tags"
+										@click.stop="clickPopupShow(item.productPromotion)"
+										>{{ item.productPromotion.name }}</view
+									>
+								</template>
+								<template v-if="item.svipPriceFlag == 1">
+									<view class="svip-tags">
+										<view class="tags">SVIP</view>
+										<view class="price">{{ item.svipPriceTag }}</view>
+									</view>
+								</template>
+							</view>
+						</view>
+					</view>
+					<view class=" product-info clearfix"> 
+						<view class="product-view" v-if="item.returnedNum > 0 || item.actualCancelNum > 0">
+							<view class="view-num">已退货/已取消:<text class="text">{{ item.returnedNum }}/{{ item.actualCancelNum }}</text></view>
+						</view>
+<!-- 						<view class="product-view" v-if="item.svipPriceType != 1">
+							<view class="view-num">折扣:<text class="text">{{ item.discount == null ? '0' : item.discount }}%</text></view>
+						</view> -->
+						<view class="product-view">
+							<view class="view-num">税率:<text class="text">{{ item.taxRate }}%</text></view>
+						</view>
+<!-- 						<view class="product-view">
+							<view class="view-num">折后单价:<text class="text">¥{{ item.discountPrice | NumFormat }}</text></view>
+						</view> -->
+						<view class="product-view allPrice">
+							<view class="view-num">合计:<text class="text">¥{{ item.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>
+			<view class="goods-item">
+				<view class="goods-pros-b clearfix">
+					<view class="pros-price-view">
+						<view class="price-view-le">商品总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.productAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">运费:</view>
+						<view class="price-view-ri">{{ orderInfo.postageInfo }}</view>
+					</view>
+					<view class="pros-price-view" v-if="orderInfo.eachDiscount > 0">
+						<view class="price-view-le">优惠:</view>
+						<view class="price-view-ri">¥{{ orderInfo.eachDiscount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">订单总额:</view>
+						<view class="price-view-ri">¥{{ orderInfo.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">已付金额:</view>
+						<view class="price-view-ri">
+							¥{{ orderInfo.receiptAmount | NumFormat }}
+							<text v-if="orderInfo.accountAmount > 0">(余额抵扣:¥{{ orderInfo.accountAmount | NumFormat }})</text>
+						</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">待付金额:</view>
+						<view class="price-view-ri red">¥{{ orderInfo.obligation | NumFormat }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'goods',
+	props: {
+		
+		list: {
+			type: Array
+		},
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			dataList: [], 
+			isHandelShow:false,
+			vipFlag: 0,
+		}
+	},
+	created() {
+		this.initGetStotage(this.list)
+	},
+	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(list) {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.dataList = list
+		},
+		handelShowDetails(){
+			this.isHandelShow = !this.isHandelShow
+		},
+		goShophome(shop) {
+			if(shop.shopType === 2){
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
+		},
+		details(item) {
+			if (pros.validFlag == 9) {
+				return
+			} else {
+				this.$api.navigateTo(`/pages/goods/product?id=${item.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;
+			border-bottom: 1px solid #E1E1E1;
+			float: left;
+			&:last-child {
+				border-bottom: none;
+			}
+		}
+		.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%;
+			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>

+ 151 - 0
pages/user/order/components/details/cm-invice-temp.vue

@@ -0,0 +1,151 @@
+<template name="invoice">
+	<view class="invoice-template">
+		<!-- 发票信息 -->
+		<view class="invoice-content">
+			<view class="invoice-title">发票信息</view>
+			<view class="invoice-empty">
+				<text>{{ invoiceText }}</text>
+			</view>
+			<view class="invoice-text" v-if="orderInvoice.type > 0">
+				<view class="table">
+					<text class="label-name">发票抬头:</text>
+					<text class="label-text">{{ orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : '无' }}</text>
+				</view>
+				<template v-if="orderInvoice.type === 2 || orderInvoice.headingType === 1">
+					<view class="table">
+						<text class="label-name">单位税号:</text>
+						<text class="label-text">{{
+							orderInvoice.corporationTaxNum ? orderInvoice.corporationTaxNum : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册地址:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredAddress ? orderInvoice.registeredAddress : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">注册电话:</text>
+						<text class="label-text">{{
+							orderInvoice.registeredPhone ? orderInvoice.registeredPhone : '无'
+						}}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">开户银行:</text>
+						<text class="label-text">{{ orderInvoice.openBank ? orderInvoice.openBank : '无' }}</text>
+					</view>
+					<view class="table">
+						<text class="label-name">银行账号:</text>
+						<text class="label-text">{{ bankAccountNo ? bankAccountNo : '无' }}</text>
+					</view>
+				</template>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'invoice',
+	props: {
+		orderInvoice: {
+			type: Object
+		}
+	},
+	filters: {},
+	data() {
+		return {
+			invoiceText: '不开发票',
+			title: '发票信息',
+			isOpen: false,
+			bankAccountNo: ''
+		}
+	},
+	created() {
+		this.initData(this.orderInvoice)
+	},
+	computed: {},
+	methods: {
+		initData(data) {
+			if (data) {
+				this.bankAccountNo = this.$reg.bankRegex(data.bankAccountNo)
+				this.invoiceText = this.setInvoiceText(data)
+			}
+		},
+		// 设置发票文案
+		setInvoiceText(data) {
+			const map = {
+				0: '个人',
+				1: '单位'
+			}
+			switch (data.type) {
+				case 0:
+					return `不开发票`
+					break
+				case 1:
+					return `普票-${map[data.headingType]}`
+					break
+				case 2:
+					return `专票`
+					break
+			}
+		},
+		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: 64rpx;
+		.txt {
+			font-size: $font-size-24;
+			color: #999999;
+		}
+	}
+	.invoice-text {
+		width: 100%;
+		height: auto;
+		.table {
+			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;
+				color: #999999;
+			}
+			.label-text {
+				color: #333333;
+			}
+		}
+	}
+}
+</style>

+ 246 - 0
pages/user/order/components/details/cm-order-temp.vue

@@ -0,0 +1,246 @@
+<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.shopOrderNo ? orderData.shopOrderNo : '' }}</label>
+					</view>
+				</view>
+			</view>
+			<view class="information-view same">
+				<view class="view-man">
+					赠品总数:<label class="label">{{
+						orderData.presentNum
+					}}</label>
+				</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num time">
+					下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</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>
+	</view>
+</template>
+
+<script>
+const thorui = require('@/components/clipboard/clipboard.thorui.js')
+export default {
+	name: 'orderInfo',
+	props: {
+		orderInfo: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			orderData: '',
+			openShowflag: false,
+		}
+	},
+	created() {
+		this.initData(this.orderInfo)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value)
+			return number.toFixed(2)
+		}
+	},
+	computed: {},
+	watch: {
+		orderInfo: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	methods: {
+		openShow() {
+			this.openShowflag = true
+			this.infoflag = false
+		},
+		initData(data) {
+			this.orderData = data
+		},
+		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>

+ 160 - 0
pages/user/order/components/details/cm-payment-temp.vue

@@ -0,0 +1,160 @@
+<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: '余额抵扣',
+					31: '线下支付凭证'
+				}
+				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>

+ 235 - 0
pages/user/order/components/details/cm-promote-popup.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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 120 - 0
pages/user/order/components/details/cm-refund-temp.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>

+ 150 - 0
pages/user/order/components/details/cm-voucher-temp.vue

@@ -0,0 +1,150 @@
+<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 voucherList">
+				<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" v-if="item.remarks">
+					备注:{{ item.remarks }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"refund",
+		props:{
+			list:{
+				type:Array
+			},
+		},
+		data() {
+			return{
+				isEmpty:true,
+				voucherList:[]
+			}
+		},
+		created(){
+			this.initData(this.list)
+		},
+		computed: {
+		
+		},
+		methods:{
+			initData(data) {
+				this.voucherList = data
+			},
+			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;
+			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>

+ 0 - 295
pages/user/order/components/freight.vue

@@ -1,295 +0,0 @@
-<template name="freight">
-	<view class="freight-template" @click.stop="discard">
-		 <!-- 运费信息 -->
-		<view class="invoice-freight">
-			<view class="freight-main">
-				<view class="freight-left">运费<text class="tips" v-if="freightData.postageFlag == 1 && vipFlag!=1">运费可选择到付哟~</text></view>
-				<view class="freight-right" >
-					<view class="freight-text">{{freightText}}</view>
-					<view class="select" v-if="freightData.postageFlag == 1"  @click.stop="selectFreight">
-						<text class="select-text">{{orderPriceToFixed(freightMoney)}}</text>
-						<text class="iconfont icon-xiayibu"></text>
-					</view>
-				</view>
-			</view>
-			<view class="freight-bean" v-if="isBeansShow">
-				<view class="bean-le" v-if="postageFlag == 1">可用{{ deductionBeans }}采美豆抵用{{ freightMoney }}元运费</view>
-				<view class="bean-le" v-if="postageFlag == -1">可用{{ deductionBeans }}采美豆抵用{{ freightMoney }}运费</view>
-				<view class="bean-ri">
-					<view class="checkbox-box">
-						<button class="checkbox iconfont"
-								hover-class="btn-hover"
-								@click.stop="checkedBalabce"
-								:class="[ischecked ?'icon-yixuanze':'icon-weixuanze']"
-						>
-						</button>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'freight',
-		props:{
-			freightData:{
-				type:Object
-			}
-		},
-		data() {
-			return{
-				infoData:{},
-				freightText:'',
-				freightMoney:'',
-				isShowOption:false,
-				optionList:['到付'],
-				postageFlag:0,
-				ischecked:false,
-				isBeansShow:false,
-				userBeans:0,
-				deductionBeans:0,
-				freightBeansMoney:0,
-				vipFlag:0
-			}
-		},
-		created(){
-			this.initData(this.freightData)
-		},
-		computed: {
-
-		},
-		methods:{
-			async initData(res) {
-				const userInfo = await this.$api.getStorage()
-				this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
-				this.infoData = res
-				switch(res.postageFlag){
-					case 0:
-						this.freightText = '包邮'
-						this.freightData.freight  = 0
-						this.postageFlag = res.postageFlag
-						this.isBeansShow = false
-						break
-					case 1:
-						this.freightText = ''
-						this.freightMoney = this.freightBeansMoney =  res.postage
-						this.userBeans = res.userBeans
-						this.postageFlag = res.postageFlag
-						this.optionList.unshift(this.orderPriceToFixed(this.freightMoney))
-						if( res.userBeans > 0 ){
-							this.isBeansShow = true
-						}else{
-							this.isBeansShow = false
-						}
-						if(res.userBeans >= this.freightBeansMoney*100){
-							this.deductionBeans = this.freightBeansMoney*100
-						}else{
-							this.deductionBeans = res.userBeans
-						}
-						break
-					case -1:
-						this.freightText = '到付'
-						this.freightMoney = '到付'
-						this.userBeans = res.userBeans
-						this.postageFlag = res.postageFlag
-						this.freightData.freight  = 0
-						this.freightBeansMoney = 30
-						if( res.userBeans >0 ){
-							this.isBeansShow = true
-						}else{
-							this.isBeansShow = false
-						}
-						if(res.userBeans >= this.freightBeansMoney*100){
-							this.deductionBeans = this.freightBeansMoney*100
-						}else{
-							this.deductionBeans = res.userBeans
-						}
-						break
-				}
-			},
-			selectFreight (){//切换运费
-				if(this.vipFlag==1){ return }
-				let self = this
-				uni.showActionSheet({
-				    itemList: self.optionList,
-				    success: function (res) {
-						switch(res.tapIndex){
-							case 0:
-								self.freightMoney = self.infoData.postage
-								self.postageFlag = 1
-								if( self.userBeans > 0 ){
-									self.isBeansShow = true
-									self.freightBeansMoney = self.freightMoney
-									if(self.userBeans >= self.freightBeansMoney*100){
-										self.deductionBeans = self.freightBeansMoney*100
-									}else{
-										self.deductionBeans = self.userBeans
-									}
-								}else{
-									self.isBeansShow = false
-									self.freightBeansMoney = 0
-								}
-								break
-							case 1:
-								self.postageFlag = -1
-								self.freightMoney = '到付'
-								if( self.userBeans > 0 ){
-									self.freightBeansMoney = 30
-									self.isBeansShow = true
-									if(self.userBeans >= self.freightBeansMoney*100){
-										self.deductionBeans = self.freightBeansMoney*100
-									}else{
-										self.deductionBeans = self.userBeans
-									}
-								}else{
-									self.freightBeansMoney = 0
-									self.isBeansShow = false
-								}
-								break
-						}
-						let obj = {
-								postageFlag :self.postageFlag,
-								freightBeansMoney: self.freightBeansMoney
-							}
-						self.$emit('confirmFreight',obj)
-				    },
-				    fail: function (res) {
-				        console.log(res.errMsg)
-				    }
-				})
-			},
-			checkedBalabce(){//勾选使用采美豆抵扣
-				this.ischecked = !this.ischecked
-				this.$emit('confirmFreightBeans',this.ischecked)
-			},
-			orderPriceToFixed (value){
-				let price =''
-				if(value == '到付'){
-					price = value
-				}else{
-					price ='¥'+parseInt(value).toFixed(2)
-				}
-				return price
-			},
-			discard(){
-				this.isShowOption = false
-				this.selectClass = ''
-			},
-			showTip(){
-				this.$emit('showFreightAlert')
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	.freight-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.invoice-freight{
-			width: 100%;
-			box-sizing: border-box;
-			padding: 10rpx 24rpx;
-			.freight-main{
-				width: 100%;
-				height: 78rpx;
-				line-height: 78rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				background: #FFFFFF;
-				float: left;
-				font-weight: bold;
-				.freight-left{
-					float: left;
-					.tips{
-						font-size: $font-size-24;
-						color: $color-system;
-						font-weight: normal;
-						margin-left: 20rpx;
-					}
-					.icon-yunfeishuoming{
-						height: 100%;
-						padding:15rpx;
-						color: $color-system;
-						font-weight: normal;
-					}
-				}
-				.freight-right{
-					float: right;
-					color: #2A81FF;
-					position: relative;
-					.freight-text{
-						float: left;
-					}
-					.select{
-						float: right;
-						height: 60rpx;
-						padding: 0 20rpx;
-						margin-top: 14rpx;
-						line-height: 60rpx;
-						color: #2A81FF;
-						font-weight: normal;
-						position: relative;
-						.select-text{
-							display: inline-block;
-							float: left;
-							margin-right: 30rpx;
-						}
-						.iconfont{
-							width: 60rpx;
-							height: 60rpx;
-							line-height: 60rpx;
-							text-align: right;
-							position: absolute;
-							right: 0;
-							top: 0;
-							font-size: $font-size-28;
-							color: #2A81FF;
-						}
-					}
-				}
-			}
-			.freight-bean{
-				width: 100%;
-				height: 58rpx;
-				line-height: 58rpx;
-				float: left;
-				.bean-le{
-					float: left;
-					color: #666666;
-					font-size: $font-size-26;
-					font-weight: normal;
-				}
-				.bean-ri{
-					float: right;
-					display: flex;
-					align-items: center;
-					.checkbox-box{
-						display: flex;
-						width: 60rpx;
-						float: left;
-						height: 100%;
-						font-size: $font-size-26;
-						margin-top: 8rpx;
-						.checkbox{
-							width: 40rpx;
-							text-align: right;
-							box-sizing: border-box;
-							text-align: center;
-							text-decoration: none;
-							border-radius: 0;
-							-webkit-tap-highlight-color: transparent;
-							overflow: hidden;
-							color: $color-system;
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 352
pages/user/order/components/goodsList.vue

@@ -1,352 +0,0 @@
-<template name="goods">
-	<view class="goods-template">
-		 <!-- 商品列表 -->
-		<view class="goods-list">
-			<view v-for="(item, index) in goodsData" :key="index" class="goods-item">
-				<view class="shoptitle">
-					<view v-if="item.promotions" class="floor-item-act">
-						<view class="floor-tags">{{item.promotions.name}}</view>	
-					</view>
-					<view class="title-text">{{item.shopName}}</view> 
-				</view>
-				<view class="productlist" v-for="(pros,idx) in item.cartList" :key="idx">
-					<view class="goods-pros-t">
-						<view class="pros-img">
-							<image :src="pros.image" alt="" />
-							<text class="tips" v-if="pros.giftType ==2 || pros.giftType ==1">赠品</text>
-						</view>
-						<view class="pros-product">
-							<view class="producttitle">{{pros.name}}</view>
-							<view class="productspec"  v-if="pros.productCategory!=2">规格:{{pros.unit}}</view>
-							<view class="productspec" v-if="pros.productCode!=''&&pros.productCode!=null">
-								<view >商品编码:{{pros.productCode}}</view>
-							</view>
-							<view class="productprice">
-								<view class="price"><text>¥{{pros.price | NumFormat}}</text></view>
-								<view class="count"><text class="small">x</text>{{pros.number}}</view>
-							</view>
-							<view class="floor-item-act">
-								<template v-if="pros.actStatus == 1 && pros.promotions">
-									<view v-if="PromotionsFormat(pros.promotions)" class="floor-tags">
-										{{ pros.promotions.name }}
-										<text v-if ="pros.promotions">
-											:¥{{ pros.promotions == null ? '0.00' : pros.promotions.touchPrice | NumFormat}}
-										</text>
-									</view>
-									<view v-else-if="pros.promotions.type !=3" class="floor-tags">{{pros.promotions.name}}</view>	
-								</template>
-								<template v-if="pros.svipProductFlag == 1 && vipFlag == 1">
-									<view class="svip-tags">
-										<view class="tags">SVIP</view>
-										<view class="price">{{ pros.svipPriceTag }}</view>
-									</view>
-								</template>
-							</view>
-						</view>	
-					</view>
-				</view>	
-				<view class="goods-pros-m">
-					<view class="m-text">留言:</view>
-					<view class="m-input">
-						<input type="text" 
-						   v-model="remark[index]" 
-						   @change="changeHandle(index)"
-						   placeholder-class="placeholder"  
-						   maxlength="50" 
-						   placeholder="选填,最多不超过50个汉字"/>
-						</view>
-				</view>
-				<view class="goods-pros-b">
-					<view class="sum-none" v-if="(item.originalPrice - item.totalPrice)>0">
-						<text class="money-sign">¥</text>
-						<text class="money">{{ item.originalPrice | NumFormat }}</text>
-						<text class="money-reduced">减<text>¥{{ (item.originalPrice - item.totalPrice) | NumFormat}}</text></text>
-					</view>
-					<view class="sum">合计:<text class="money">¥{{ item.totalPrice | NumFormat }}</text></view>
-				</view>
-			</view>
-		</view>	
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'goods',
-		props:{
-			goodsData:{
-				type:Array
-			}
-		},
-		data() {
-			return{
-				remark:[],
-				vipFlag:0,
-			}
-		},
-		created(){
-			this.initGetStotage()
-		},
-		filters:{
-			NumFormat(value) {//处理金额
-				return Number(value).toFixed(2)
-			},
-		},	
-		watch: {
-			goodsData: {
-				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
-					this.goodsData = el
-				},
-				deep: true
-			}
-		},
-		computed: {
-
-		},
-		methods:{
-			async initGetStotage() {
-				const userInfo = await this.$api.getStorage()
-				this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
-			},
-			PromotionsFormat(promo){//促销活动类型数据处理
-				if(promo!=null){
-					if(promo.type == 1 && promo.mode == 1){
-						return true
-					}else{
-						return false
-					}
-				}
-				return false
-			},
-			changeHandle (index) {//输入框的值被改变后
-				this.goodsData[index].note = this.remark[index]
-				this.$emit('handleGoodList',this.goodsData)
-			}
-		},
-	}
-</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: 0 24rpx;
-				background: #FFFFFF;
-				margin-bottom: 24rpx;
-				&:last-child{
-					margin-bottom: 0;
-				}
-			}
-			.shoptitle{
-				display: flex;
-				align-items: center;
-				height: 80rpx;
-				line-height: 80rpx;
-				.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;
-				}
-				.floor-item-act{
-					height: 56rpx;
-					text-align: center;
-					box-sizing: border-box;
-					float: left;
-					padding: 12rpx 0;
-					margin-right: 12rpx;
-				}
-			}
-			.productlist{
-				width: 100%;
-				height: auto;
-			}	
-			.goods-pros-t{
-				display: flex;
-				align-items: center;
-				width: 100%;
-				height: auto;
-				padding:12rpx 0;
-				.pros-img{
-					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: 40rpx;
-				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: 40rpx;
-					line-height: 40rpx;
-					color: #999999;
-					text-overflow:ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 1;
-					overflow: hidden;
-				}
-				.productprice{
-					height: 54rpx;
-					width: 100%;
-					float: left;
-					.price{
-						line-height: 54rpx;
-						font-size: $font-size-28;
-						width: 48%;
-						color: #FF2A2A;
-						float: left;
-					}
-					.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;
-				}
-			}
-			.goods-pros-m{
-				height: 76rpx;
-				line-height: 76rpx;
-				font-size: $font-size-26;
-				color: $text-color;
-				margin-top: 12rpx;
-				.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: 580rpx;
-					height: 36rpx;
-					padding: 20rpx;
-					background: #F7F7F7;
-					border-radius: 10rpx;
-					input{
-						width: 100%;
-						height: 100%;
-						background: #F7F7F7;
-						font-size: $font-size-26;
-						line-height: 36rpx;
-						color: #333333;
-						min-height: 36rpx;
-					}
-				}
-			}
-			.goods-pros-b{
-				width:100%;
-				height: auto;
-				padding: 10rpx 0;
-				.sum-none{
-					width: 100%;
-					height: 48rpx;
-					line-height: 48rpx;
-					color: $text-color;
-					float: left;
-					text-align: right;
-					.money{
-						font-size: $font-size-26;
-						color: #999999;
-						text-decoration: line-through;
-					}
-					.money-sign{
-						font-size: $font-size-26;
-						color: #999999;
-						text-decoration: line-through;
-					}
-					.money-reduced{
-						margin-left: 10rpx;
-						font-size: $font-size-26;
-						color: $color-system;
-						.iconfont{
-							font-size: $font-size-34;
-						}
-					}
-				}
-				.sum{
-					width: 100%;
-					height: 48rpx;
-					font-size: $font-size-28;
-					line-height: 48rpx;
-					color: $text-color;
-					display: flex;
-					justify-content: flex-end;
-					.money{
-						color: #FF2A2A;
-						font-size: $font-size-28;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 683
pages/user/order/components/invoiceTent.vue

@@ -1,683 +0,0 @@
-<template name="invoice">
-	<view class="invoice-template">
-		 <!-- 发票信息 -->
-		<view class="invoice-title" @tap.stop="hanldOperationConfim">
-			<text class="text">发票信息:</text>
-			<text class="iconfont icon-xiayibu"></text>
-		</view>
-		<view class="invoice-text">
-			<text>{{invoiceText}}</text>
-		</view>
-		<!--底部选择模态层弹窗组件 -->
-		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="choiceaInvoiceConfim">
-			<!-- 遮罩层 -->
-			<view class="mask"></view>
-			<view class="layer" @tap.stop="discard">
-				<view class="content clearfix">
-					<view class="invoice-ltitle">发票类型</view>
-					<view class="invoice-radio">
-						<radio-group class="row-group" @change="radioChange">
-							<label class="row-input" v-for="(item, index) in invoiceTypeList" :key="item.value">
-								<radio class="row-radio" :value="item.value" :checked="index === current" color="#FF5B00"/>
-								<view class="row-text">{{item.name}}</view>
-							</label>
-						</radio-group>
-					</view>
-					<view class="invoice-main from" v-if="invoiceType == '2'">
-						<view class="invoice-from">
-							<view class="label">单位名称:</view>
-							<input class="form-input" type="text" v-model="invoiceData.invoiceTitle" placeholder="请填写单位信息(必填)" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">纳税人识别号:</view>
-							<input class="form-input" type="text" v-model="invoiceData.corporationTaxNum" placeholder="请填写纳税人识别号(必填)" maxlength="24">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册地址:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredAddress" placeholder="请填写单位注册地址(必填)" maxlength="100">
-						</view>
-						<view class="invoice-from">
-							<view class="label">注册电话:</view>
-							<input class="form-input" type="text" v-model="invoiceData.registeredPhone" placeholder="请填写注册电话(必填)" maxlength="15">
-						</view>
-						<view class="invoice-from">
-							<view class="label">开户银行:</view>
-							<input class="form-input" type="text" v-model="invoiceData.openBank"   placeholder="请填写开户银行(必填)" maxlength="30">
-						</view>
-						<view class="invoice-from">
-							<view class="label">银行账号:</view>
-							<input class="form-input" 
-								   type="text" 
-								   v-model="invoiceData.bankAccountNo" 
-								   placeholder="请填写银行账号(必填)" 
-								   maxlength="30">
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '3'">
-						<view class="invoice-ltitle">发票内容</view>
-						<view class="invoice-group tit">
-							<checkbox-group class="row-group" @change="checkboxChange">
-								<view class="text">商品明细</view>
-								<checkbox class="row-radio" value="明细"  :checked="inventoryChecked" color="#FF5B00"></checkbox>
-							</checkbox-group>
-						</view>
-						<view class="invoice-ltitle">发票抬头</view>
-						<view class="invoice-group tit">
-							<radio-group class="row-group radio" @change="radioChangeTitle">
-								<label class="row-input" v-for="(item, index) in invoiceTitleList" :key="item.value">
-									<radio class="row-radio" :value="item.value" :checked="index === titleCurrent" color="#FF5B00"/>
-									<view class="row-text">{{item.name}}</view>
-								</label>
-							</radio-group>
-						</view>
-						<view class="invoice-group from">
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '0'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写个人抬头" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.invoiceTitle"   placeholder="请填写公司抬头" maxlength="20">
-							</view>
-							<view class="group-from" v-if="peopleInvoiceData.invoiceTitleType == '1'">
-								<input class="form-input" type="text" v-model="peopleInvoiceData.corporationTaxNum"   placeholder="请填写纳税人识别号" maxlength="20">
-							</view>
-						</view>
-					</view>
-					<view class="invoice-main" v-if="invoiceType == '1'">
-						<view class="invoice-none">不开具发票信息</view>
-					</view>
-				</view>
-				<view class="btn">
-					<view class="button add" @click="choiceaInvoiceConfim">完成</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name:'invoice',
-		data() {
-			return{
-				invoiceText:'不要发票',
-				specClass: '',//规格弹窗css类,控制开关动画
-				invoiceType:'1',//发票类型
-				current:0,
-				titleCurrent:0,
-				inventoryChecked:false,
-				invoiceTypeList:[
-					{value:'1',name:'不要发票'},
-					{value:'2',name:'要发票'},
-				],
-				invoiceTitleList:[
-					{value:'0',name:'个人'},
-					{value:'1',name:'公司'},
-				],
-				peopleInvoiceData:{
-					invoiceTitle:'',   //单位名称
-					invoiceContent:'', //商品明细
-					corporationTaxNum:'',//纳税人识别号
-					invoiceTitleType:'0'//发票抬头类型 1企业 0个人
-				},
-				invoiceData:{
-					invoiceTitle:'',	 //单位名称
-					corporationTaxNum:'',//纳税人识别号
-					registeredAddress: '',//单位地址
-					registeredPhone:'',	 //注册电话
-					openBank:'',		//开户银行
-					bankAccountNo: ''  ,//银行账号
-				},
-			}
-		},
-		created(){
-			// this.initData(this.invoiceDatas)
-		},
-		computed: {
-
-		},
-		methods:{
-			getUseFindInvoice(){//获取发票信息
-				this.$api.getStorage().then((resolve) => {
-					this.OrderService.GetFindInvoice({userId:resolve.userId}).then(response =>{
-						if(response.data == null){
-							this.invoiceData = Object.assign(this.invoiceData,'',{type:0})
-						}else{
-							this.invoiceData = response.data
-						} 
-					})
-				})
-			},
-			updateInvoiceFn(){//保存发票信息
-				this.$api.getStorage().then((resolve) => {
-					console.log(resolve.userId)
-					this.OrderService.UpdateInvoice(Object.assign({userId:resolve.userId},this.invoiceData)).then(response =>{})
-				})
-			},
-			choiceaInvoiceConfim(){
-				switch(this.invoiceType){
-					case '1':
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-						break
-					// case '2':
-					// 	this.choiceaInvoiceTwo()
-					// 	this.invoiceText = this.peopleInvoiceData.invoiceTitle
-					// 	break;
-					case '2':
-						this.choiceaInvoiceFirst()
-						this.invoiceText = this.invoiceData.invoiceTitle
-						break	
-						default:
-						this.choiceaInvoiceThree()
-						this.invoiceText = '不要发票'
-				}
-			},
-			choiceaInvoiceFirst(){//增值税发票
-				if(this.invoiceData.invoiceTitle == ''){
-					this.$util.msg('请输入单位名称',2000)
-					return
-				}
-				if(this.invoiceData.corporationTaxNum == ''){
-					this.$util.msg('请输入纳税人识别号',2000)
-					return
-				}
-				if(this.invoiceData.registeredAddress == ''){
-					this.$util.msg('请输入单位地址',2000)
-					return
-				}
-				if(this.invoiceData.registeredPhone == ''){
-					this.$util.msg('请输入注册电话',2000)
-					return
-				}
-				if(this.invoiceData.openBank == ''){
-					this.$util.msg('请输入开户银行',2000)
-					return
-				}
-				if(this.invoiceData.bankAccountNo == ''){
-					this.$util.msg('请输入银行账号',2000)
-					return
-				}
-				this.updateInvoiceFn()
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:2}))
-				this.hideSpec()
-			},
-			choiceaInvoiceTwo(){//取消普通发票.(可删除)	
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '0':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入个人抬头',2000)
-							return
-						}
-						break
-					case '1':
-						if(this.peopleInvoiceData.invoiceContent == ''){
-							this.$util.msg('请选择商品明细',2000)
-							return
-						}
-						if(this.peopleInvoiceData.invoiceTitle == ''){
-							this.$util.msg('请输入公司抬头',2000)
-							return
-						}
-						if(this.peopleInvoiceData.corporationTaxNum == ''){
-							this.$util.msg('请输入纳税人识别号',2000)
-							return
-						}
-						break
-				}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.peopleInvoiceData,'',{type:1}))
-				this.hideSpec()
-			},
-			choiceaInvoiceThree(){//不要发票
-				this.invoiceData = {}
-				this.$emit('handleChoiceaInvoice',Object.assign(this.invoiceData,'',{type:0}))
-				this.hideSpec()
-			},
-			hideSpec() {//关闭弹窗
-				this.specClass = 'hide'
-				setTimeout(() => {
-					this.specClass = 'none'
-				}, 200)
-			},
-			hanldOperationConfim(){//显示发票弹窗
-				this.specClass = 'show'
-			},
-			radioChange(e) {
-				this.invoiceType = e.target.value
-				for (let i = 0; i < this.invoiceTypeList.length; i++) {
-					if (this.invoiceTypeList[i].value === this.invoiceType) {
-						this.current = i
-						break
-					}
-				}
-				switch(this.invoiceType){
-					case '2':
-						this.getUseFindInvoice()
-						break
-					//取消普通发票.(可删除)	
-					// case '3':
-					// 	this.peopleInvoiceData.invoiceTitleType = "0"
-					// 	this.titleCurrent = 0
-					// 	break;
-				}		
-			},
-			radioChangeTitle(e) {
-				this.peopleInvoiceData.invoiceTitleType = e.target.value
-				for (let i = 0; i < this.invoiceTitleList.length; i++) {
-					if (this.invoiceTitleList[i].value === this.peopleInvoiceData.invoiceTitleType) {
-						this.titleCurrent = i
-						break
-					}
-				}
-				switch(this.peopleInvoiceData.invoiceTitleType){
-					case '1':
-						this.inventoryChecked = false
-						this.peopleInvoiceData.invoiceTitle = ''
-						this.peopleInvoiceData.invoiceContent = ''
-						break
-				}		
-			},
-			checkboxChange(e){
-				this.inventoryChecked = !this.inventoryChecked
-				this.peopleInvoiceData.invoiceContent = e.detail.value[0]
-			},
-			inputBankNum(val) {
-				if (/\S{5}/.test(val)) {
-					this.invoiceData.bankAccountNo = val.replace(/\s/g, '').replace(/(.{4})/g, '$1 ')
-				}
-			},
-			discard(){
-				//丢弃
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.invoice-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.invoice-title{
-			width: 702rpx;
-			padding: 0 24rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			position: relative;
-			border-bottom: 1px solid #EBEBEB;
-			.text{
-				font-size: $font-size-28;
-				color: $text-color;
-			}
-			.iconfont{
-				width: 50rpx;
-				height: 88rpx;
-				line-height: 88rpx;
-				color: #999999;
-				display: block;
-				position: absolute;
-				right: 0;
-				top: 0;
-			}
-		}
-		.invoice-text{
-			width: 702rpx;
-			padding: 0 24rpx;
-			font-size: $font-size-24;
-			color: #666666;
-			line-height: 60rpx;
-		}
-		.invoice-ltitle{
-			width: 100%;
-			line-height: 60rpx;
-			height: 60rpx;
-			font-size: $font-size-28;
-			color: #333333;
-		}
-		.invoice-radio{
-			width: 100%;
-			height: 88rpx;
-			line-height: 88rpx;
-			display: flex;
-			border-bottom: 1px solid #EBEBEB;
-			.row-group{
-				flex:1;
-				display: flex;
-			}
-			.row-input{
-				flex: 1;
-				height: 88rpx;
-				line-height: 88rpx;
-			}
-			.row-radio{
-				float: left;
-				transform: scale(0.6);
-			}
-			.row-text{
-				font-size: $font-size-24;
-				color: $text-color;
-			}
-		}
-		.invoice-main{
-			width: 100%;
-			height: auto;
-			margin-top: 30rpx;
-			&.from{
-				padding-bottom: 40rpx;
-			}
-			.invoice-none{
-				line-height: 60rpx;
-				height: 60rpx;
-				font-size: $font-size-24;
-				color: #666666;
-				text-align: center;
-			}
-			.invoice-from{
-				width: 662rpx;
-				height: 40rpx;
-				padding: 20rpx;
-				line-height: 40rpx;
-				align-items: flex-start;
-				font-size: $font-size-28;
-				color: $text-color;
-				background: #F7F7F7;
-				border-radius: 14rpx;
-				margin-bottom: 20rpx;
-				.label{
-					height: 40rpx;
-					line-height: 40rpx;
-					float: left;
-				}
-				.form-input{
-					height: 40rpx;
-					line-height: 40rpx;
-					flex-grow: 1;
-					padding-left: 20rpx;
-				}
-			}
-			.invoice-group{
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				border-bottom: 1px solid #EBEBEB;
-				&.tit{
-					margin-bottom: 30rpx;
-				}
-				&.from{
-					margin-bottom: 30rpx;
-					border-bottom: 1px solid #FFFFFF;
-					flex-direction: row;
-					display: block;
-					.group-from{
-						flex: 1;
-						height: 40rpx;
-						padding: 20rpx;
-						line-height: 40rpx;
-						align-items: flex-start;
-						font-size: $font-size-24;
-						color: $text-color;
-						background: #F7F7F7;
-						border-radius: 14rpx;
-						margin-bottom: 20rpx;
-						.form-input{
-							height: 40rpx;
-							line-height: 40rpx;
-							flex-grow: 1;
-						}
-					}
-				}
-				.row-group{
-					line-height: 88rpx;
-					flex: 1;
-					.text{
-						font-size: $font-size-24;
-						color: $text-color;
-						line-height: 88rpx;
-						float: left;
-					}
-					.row-radio{
-						float: right;
-						transform: scale(0.8);
-						border-radius: 50%;
-					}
-					&.radio{
-						display: flex;
-						.row-input{
-							flex: 1;
-							height: 88rpx;
-							line-height: 88rpx;
-						}
-						.row-radio{
-							float: left;
-							transform: scale(0.6);
-						}
-						.row-text{
-							font-size: $font-size-24;
-							color: $text-color;
-						}
-					}
-				}
-			}
-		}
-	}
-	/* 加入购物模态层*/
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
-		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
-		}
-		100% {
-			opacity: 0;
-		}
-	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(0);
-		}
-		100% {
-			transform: translateY(-100%);
-		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(-100%);
-		}
-		100% {
-			transform: translateY(0);
-		}
-	}
-	@keyframes showAmnation {
-		0% {
-			top: -12rpx;
-			opacity: 0;
-		}
-		50% {
-			top: -60rpx;
-			opacity: 1;
-		}
-		100% {
-			top: -100rpx;
-			opacity: 0;
-		}
-	}
-	@keyframes hideAmnation {
-		0% {
-			top: -100rpx;
-			opacity: 0;
-		}
-		100% {
-			top: -12rpx;
-			opacity: 0;
-		}
-	}
-	.popup {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999;
-		display: none;
-		.mask{
-			position: fixed;
-			top: 0;
-			width: 100%;
-			height: 100%;
-			z-index: 21;
-			background-color: rgba(0, 0, 0, 0.6);
-		}
-		.layer {
-			position: absolute;
-			z-index: 22;
-			bottom: -1010rpx;
-			width: 702rpx;
-			padding: 24rpx 24rpx 65rpx 24rpx;
-			height: 920rpx;
-			border-radius: 20rpx 20rpx 0 0;
-			background-color: #fff;
-			display: flex;
-			flex-wrap: wrap;
-			align-content: space-between;
-			.content {
-				width: 100%;
-			}
-			.btn {
-				width: 100%;
-				height: 88rpx;
-				display: flex;
-				.button {
-					width: 702rpx;
-					height: 88rpx;
-					color: #fff;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					font-size: $font-size-28;
-					border-radius: 44rpx;
-					background: $btn-confirm;
-				}
-			}
-		}
-		
-		&.show {
-			display: block;
-			.mask{
-				animation: showPopup 0.2s linear both;
-			}
-			.layer {
-				animation: showLayer 0.2s linear both;
-			}
-		}
-		&.hide {
-			display: block;
-			.mask{
-				animation: hidePopup 0.2s linear both;
-			}
-			
-			.layer {
-				animation: hideLayer 0.2s linear both;
-			}
-		}
-		&.none {
-			display: none;
-		}
-		&.service {
-			.row {
-				margin: 30upx 0;
-				.title {
-					font-size: 30upx;
-					margin: 10upx 0;
-				}
-				.description {
-					font-size: 28upx;
-					color: #999;
-				}
-			}
-		}
-		.layer-smimg{
-			width: 114rpx;
-			height: 114rpx;
-			float: left;
-			border-radius: 10rpx;
-			margin-right: 24rpx;
-			image{
-				width: 114rpx;
-				height: 114rpx;	
-				border-radius: 10rpx;
-			}
-		}
-		.layer-nunbox{
-			justify-content: space-between;
-			align-items: center;
-			width: 536rpx;
-			height: 88rpx;
-			padding: 13rpx 0 0 0;
-			float: left;
-			.layer-nunbox-t{
-				width: 100%;
-				height:44rpx;
-				position:relative;
-				display: flex;
-				.layer-nunbox-text{
-					line-height: 44rpx;
-					font-size: $font-size-28;
-				}
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-32;
-						padding:0 18rpx;
-						font-size: $text-color;
-					}
-					.btn-input{
-						width: 62rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-28;
-					}
-				}
-				.product-step{
-					position: absolute;
-					left: 45rpx;
-					bottom: 0;
-					height: 44rpx;
-					background: #FFFFFF;
-				}
-			}
-			.layer-nunbox-b{
-				width: 100%;
-				height:44rpx;
-				margin-top: 13rpx;
-			}
-			.text{
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				.p{
-					color: #FF2A2A;
-				}
-				.p:first-child{
-					margin-left: 30rpx;
-				}
-				.p.sm{
-					font-size: $font-size-24;
-				}
-			}
-		}
-	}	
-</style>

+ 172 - 487
pages/user/order/create-order.vue

@@ -1,46 +1,38 @@
 <template>
-	<view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '170rpx' : '134rpx' }">
+	<view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '250rpx' : '214rpx' }">
 		<!-- 地址选择 -->
-		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
+		<cm-address-temp ref="choiceAddress" v-if="isRequest" :addressData="addressData" />
 		<!-- 商品 -->
-		<goods-list
+		<cm-goods-temp
 			ref="goods"
 			v-if="isRequest"
-			:goodsData="goodsData"
+			:goodsData.sync="goodsData"
 			@handleGoodList="handChangeInputGoodsList"
-		></goods-list>
+			@changeChina="handleChangeChina"
+			@changePostage="handleChangePostage"
+		/>
 		<!-- 发票信息 -->
-		<invoice-tent
+		<cm-invice-popup
 			ref="invoice"
 			v-if="isRequest"
 			:invoiceDatas="invoiceData"
 			@handleChoiceaInvoice="handleChoiceaInvoiceData"
-		>
-		</invoice-tent>
+		/>
 		<!-- 优惠券选择弹窗 -->
-		<coupon
+		<cm-coupon-popup
 			ref="coupon"
 			v-if="isCouponShow"
 			:couponList="couponList"
 			@handleChoiceaCoupon="handleChoiceaCouponData"
-		>
-		</coupon>
+		/>
 		<!-- 兑换优惠券弹窗 -->
-		<exchangeCoupon v-if="isExchangePopup"></exchangeCoupon>
-		<!-- 运费 -->
-		<freight
-			ref="freight"
-			v-if="isFreight"
-			:freightData="freightData"
-			@confirmFreight="hanldFreightFn"
-			@confirmFreightBeans="hanldFreightBeans"
-		>
-		</freight>
-		<freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
+		<cm-coupon-chang v-if="isExchangePopup" />
+		<!-- 优惠券 -->
+		<cm-coupon-tips ref="coupon-tips" :coupon="ExchangeCouponData" v-if="isCouponModel" />
 		<!-- 余额抵扣 -->
-		<view class="invoice-balance" v-show="!rechargeGoods">
+		<view class="invoice-balance" v-show="isRequest && !rechargeGoods">
 			<view class="balabce-t">
-				<view class="balabce-t-le">余额抵扣</view>
+				<view class="balabce-t-le">余额抵扣:</view>
 				<view class="balabce-t-ri">
 					<view class="money">
 						<text>可用余额:</text> <text>¥{{ userMoney | NumFormat }}</text>
@@ -70,11 +62,7 @@
 		</view>
 		<!-- 底部 -->
 		<view class="footer-wrapper" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
-			<cm-return-instructions
-				v-if="returnGoodsStutas"
-				:content="helpContent"
-				@change="onAgreementChange"
-			></cm-return-instructions>
+			<cm-return-popup v-if="returnGoodsStutas" :content="helpContent" @change="onAgreementChange" />
 			<view class="footer">
 				<view class="footer-le">
 					<view class="footer-count">
@@ -96,54 +84,6 @@
 				</view>
 			</view>
 		</view>
-		<!-- 优惠券 -->
-		<view class="coupon-content-model" v-if="isCouponModel">
-			<view class="coupon-alert-content">
-				<view class="coupon">
-					<view class="coupon-list">
-						<view class="list-cell-tags"
-							><text>{{ ExchangeCouponData.couponType | TypeFormat }}</text></view
-						>
-						<view class="list-cell-le">
-							<view class="coupon-maxMoney">
-								<text class="small">¥</text> {{ ExchangeCouponData.couponAmount }}
-							</view>
-							<view class="coupon-minMoney">
-								<text class="txt">满{{ ExchangeCouponData.touchPrice }}可用</text>
-							</view>
-						</view>
-						<view class="list-cell-ri">
-							<view class="list-cell-top">
-								<text v-if="ExchangeCouponData.couponType == 0">
-									{{
-										ExchangeCouponData.productType && ExchangeCouponData.productType == 1
-											? '全商城商品通用'
-											: '仅可购买指定商品'
-									}}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 1">
-									{{
-										ExchangeCouponData.categoryType == 1
-											? '仅限购买产品类商品'
-											: '仅限购买仪器类商品'
-									}}
-								</text>
-								<text v-if="ExchangeCouponData.couponType == 3"
-									>仅限购买店铺【{{ ExchangeCouponData.shopName }}】的商品</text
-								>
-								<text v-if="ExchangeCouponData.couponType == 4 || ExchangeCouponData.couponType == 2"
-									>全商城商品通用</text
-								>
-							</view>
-							<view class="list-cell-time"
-								>{{ ExchangeCouponData.startDate }} - {{ ExchangeCouponData.endDate }}</view
-							>
-						</view>
-					</view>
-					<view class="coupon-btn" @click.stop="handleClickCancel">立即收下</view>
-				</view>
-			</view>
-		</view>
 		<!-- 提示弹窗 -->
 		<tui-modal
 			:show="showModal"
@@ -155,8 +95,7 @@
 			:size="28"
 			shape="circle"
 			:maskClosable="false"
-		></tui-modal>
-
+		/>
 		<tui-modal
 			:show="agreementModel"
 			title="提示"
@@ -166,61 +105,35 @@
 			:size="28"
 			:button="agreementModelButtons"
 			@click="agreementModel = false"
-		></tui-modal>
+		/>
 	</view>
 </template>
 <script>
 import { mapState, mapMutations } from 'vuex'
-import choiceAddress from './components/choiceAddress'
-import goodsList from './components/goodsList'
-import invoiceTent from './components/invoiceTent'
-import coupon from './components/coupon'
-import exchangeCoupon from './components/exchangeCoupon'
-import freight from './components/freight'
-import cmReturnInstructions from './components/cm-return-instructions.vue'
-import freightAlert from '@/components/cm-module/modelAlert/freightAlert'
+import cmAddressTemp from './components/cm-address-temp'
+import cmGoodsTemp from './components/cm-goods-temp'
+import cmInvicePopup from './components/cm-invice-popup'
+import cmCouponPopup from './components/cm-coupon-popup'
+import cmCouponChang from './components/cm-coupon-chang'
+import cmReturnPopup from './components/cm-return-popup'
+import cmCouponTips from './components/cm-coupon-tips'
+import conMixins from './mixins/conMixins.js'
 export default {
+	mixins: [conMixins],
 	components: {
-		choiceAddress,
-		goodsList,
-		invoiceTent,
-		coupon,
-		exchangeCoupon,
-		freight,
-		freightAlert,
-		cmReturnInstructions
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmInvicePopup,
+		cmCouponPopup,
+		cmCouponChang,
+		cmReturnPopup,
+		cmCouponTips
 	},
 	data() {
 		return {
 			isIphoneX: this.$store.state.isIphoneX,
 			isSubLoading: false,
 			confirmType: 1,
-			orderID: 0,
-			cartParam: {
-				// 购物车立即结算确认订单参数
-				skuIds: 0, // 商品Id(逗号隔开)
-				source: 2, // 来源:1WWW 2小程序
-				userId: 0 // 用户Id
-			},
-			productParam: {
-				// 商品立即购买确认订单参数
-				productCount: 0, // 商品数量
-				productId: 0, // 商品Id
-				source: 2, // 来源:1WWW 2小程序
-				userId: 0 // 用户Id
-			},
-			supportParm: {
-				// 组合商品立即购买确认订单参数
-				productInfo: '',
-				source: 2, // 来源:1WWW 2小程序
-				userId: 0 // 用户Id
-			},
-			postageParam: {
-				// 邮费计算参数
-				skuIds: 0, // 商品Id(逗号隔开)
-				userId: 0, // 用户Id
-				townId: 0 // 地区Id
-			},
 			confirmParam: {
 				cartType: 1, // 购买类型:(1自主下单, 3协销下单)
 				orderMiniType: 0, // 订单提交状态 0初始提交 1 继续提交
@@ -232,11 +145,10 @@ export default {
 				orderInvoice: { type: 0 }, // 订单发票信息
 				payInfo: {
 					// 订单金额数据
-					isColdChina: 0, //是否勾选冷链费
 					orderShouldPayFee: 0, // 订单最终支付金额
 					balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
 					clauseId: 0, // 条款Id
-					postage: 0, // 运费金额
+					postage: '0.00', // 运费金额
 					postageFlag: 0, // 运费类型
 					userBeans: 0, // 抵扣采美豆数量
 					rebateFlag: 0 // 是否返佣订单
@@ -245,23 +157,10 @@ export default {
 			}, // 提交订单参数
 			productIds: '', // 获取上一级页面商品信息
 			submitState: '', // 提交状态
-			totalCount: 1, // 订单提交总数量
-			reducedPrice: 0, // 满减金额
-			couponAmount: 0, // 优惠券金额
-			totalDiscountAmount: 0, // 共减金额
-			allPrice: 0.0, // 订单总金额
-			orderShouldPayFee: 0, // 订单最终支付金额
-			surplusMoney: 0.0, // 显示勾选后的剩余抵扣
-			userMoney: 0.0, // 显示可使用余额
-			deductMoney: 0.0, // 显示已使用的余额
 			isRequest: false, // 是否加载完成渲染子组件
 			isFreight: false, // 是否加载完成渲染子组件
-			isAddress: false, // 是否加载完成地址
 			isExchangePopup: false, // 控制兑换优惠券弹窗
-			isfreightTip: false, // 控制邮费弹窗
 			ischecked: false, // 是否勾选余额
-			hanldFreePostFlag: '', // 邮费状态
-			hanldFreight: '', // 邮费
 			addressData: {}, // 初始化地址信息
 			goodsData: [], // 初始化商品信息
 			couponList: [], // 初始化优惠券信息
@@ -310,6 +209,7 @@ export default {
 	},
 	onLoad(option) {
 		//商品数据
+
 		this.initStorage(option)
 	},
 	filters: {
@@ -325,11 +225,10 @@ export default {
 		async initStorage(option) {
 			const data = JSON.parse(option.data)
 			const userInfo = await this.$api.getStorage()
-			console.log('data', data)
-			this.productParam.userId = this.cartParam.userId = this.supportParm.userId = this.postageParam.userId = userInfo.userId
-				? userInfo.userId
-				: 0
-			this.confirmParam.clubId = userInfo.clubId ? userInfo.clubId : 0
+			this.handleComType = option.type * 1
+			this.productParam.userId = this.cartParam.userId = userInfo.userId
+			this.supportParm.userId = userInfo.userId
+			this.confirmParam.clubId = userInfo.clubId
 			switch (option.type) {
 				case '1': // 商品详情立即购买
 					this.confirmParam.cartType = 2
@@ -337,56 +236,84 @@ export default {
 					this.productParam.productId = data.data.productIds
 					this.productParam.skuId = data.data.skuId
 					this.productIds = data.data.productIds
-					this.GetProductCreateOrderInfo()
+					this.getAddressData(userInfo.userId, 1)
 					break
 				case '2': // 购物车结算
 					this.confirmParam.cartType = 1
 					this.confirmType = 2
-					
 					this.cartParam.skuIds = data.data.skuIds
-					this.CartCreateOrderInfo()
+					this.getAddressData(userInfo.userId, 2)
 					break
 				case '3': // 组合商品立即购买
 					this.confirmParam.cartType = 2
 					this.confirmType = 2
 					this.supportParm.productInfo = JSON.stringify(data.data)
+					this.getAddressData(userInfo.userId, 3)
+			}
+		},
+		async getAddressData(userId, type) {
+			//获取地址信息
+			try {
+				const params = { pageNum: 1, pageSize: 1, userId: userId }
+				const res = await this.UserService.QueryAddressList(params)
+				const data = res.data
+				if (data.list && data.list.length > 0) {
+					this.addressData = data.list[0]
+					this.confirmParam.addressId = this.addressData.addressId
+					this.cartParam.townId = this.addressData.townId
+					this.productParam.townId = this.addressData.townId
+					this.supportParm.townId = this.addressData.townId
+				}
+				if (type === 1) {
+					//立即都买提交
+					this.GetProductCreateOrderInfo()
+				}
+				if (type === 2) {
+					//购物车提交
+					this.CartCreateOrderInfo()
+				}
+				if (type === 3) {
+					//组合商品提交
 					this.GetOrderClubProductSupporting()
+				}
+			} catch (error) {
+				console.log('获取订单地址异常')
 			}
 		},
-		GetProductCreateOrderInfo() {
-			// 商品立即购买确认订单数据初始化
-			this.OrderService.ProductCreateOrderInfo(this.productParam)
-				.then(response => {
-					this.setCreatDataInfo(response.data)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+		// 商品立即购买确认订单数据初始化
+		async GetProductCreateOrderInfo() {
+			try {
+				const res = await this.OrderService.ProductCreateOrderInfo(this.productParam)
+				this.setCreatDataInfo(res.data)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		GetOrderClubProductSupporting() {
-			// 组合商品立即购买确认订单数据初始化
-			this.OrderService.OrderClubProductSupporting(this.supportParm)
-				.then(response => {
-					this.setCreatDataInfo(response.data)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+		// 组合商品立即购买确认订单数据初始化
+		async GetOrderClubProductSupporting() {
+			try {
+				const res = await this.OrderService.OrderClubProductSupporting(this.supportParm)
+				this.setCreatDataInfo(res.data)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		CartCreateOrderInfo() {
-			// 购物车去结算确认订单数据初始化
-			this.OrderService.CartCreateOrderInfo(this.cartParam)
-				.then(response => {
-					this.setCreatDataInfo(response.data)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
+		// 购物车去结算确认订单数据初始化
+		async CartCreateOrderInfo() {
+			try {
+				const res = await this.OrderService.CartCreateOrderInfo(this.cartParam)
+				this.setCreatDataInfo(res.data)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
+		// 公共初始化数据
 		setCreatDataInfo(data) {
-			// 公共初始化数据
 			this.isRequest = true
-			this.goodsData = data.list
+			this.goodsData = data.list.map(el => {
+				el.handlePostageFlag = el.postageFlag
+				return el
+			})
 			this.couponList = data.couponList
 			this.userMoney = data.userMoney
 			this.reducedPrice = data.reducedPrice
@@ -399,30 +326,16 @@ export default {
 				this.confirmParam.clubCouponId = data.couponList[0].clubCouponId
 			}
 			this.orderShouldPayFee = this.allPrice - this.couponAmount
-			this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-			this.postageParam.skuIds = this.getProductIds(data.list)
 			// 特殊商品退货须知
 			this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
 			this.helpContent = data.helpContent
-			this.getAddressData()
-		},
-		// 获取订单SKUId列表
-		getProductIds(list) {
-			const skuId = []
-			list.forEach(function(supplier) {
-				supplier.cartList.forEach(function(product) {
-					skuId.push(product.skuId)
-				})
-			})
-			// console.log(list);
-			return skuId.join(',')
 		},
-
-		getFreightData() {
+		async getFreightData() {
 			// 获取邮费信息
-			this.isFreight = false
-			this.OrderService.GetOrderPostage(this.postageParam).then(response => {
-				const data = response.data
+			try {
+				this.isFreight = false
+				const res = await this.OrderService.GetOrderPostage(this.postageParam)
+				const data = res.data
 				this.isFreight = true
 				this.isCheckedBeans = false
 				this.freightData = data
@@ -447,29 +360,11 @@ export default {
 					this.attributePallPrice()
 					this.hanldFreightBeans(this.isCheckedBeans)
 				}
-			})
-		},
-		async getAddressData() {
-			//获取地址信息
-			const userInfo = await this.$api.getStorage()
-			this.UserService.QueryAddressList({
-				pageNum: 1,
-				pageSize: 1,
-				userId: userInfo.userId
-			}).then(response => {
-				let data = response.data
-				this.isAddress = true
-				this.addressData = {}
-				if (data.list && data.list.length > 0) {
-					this.confirmParam.addressId = data.list[0].addressId
-					this.postageParam.townId = data.list[0].townId
-					this.addressData = data.list[0]
-					this.getFreightData()
-				} else {
-					this.addressData = this.addressData
-				}
-			})
+			} catch (error) {
+				console.log('获取订单运费异常')
+			}
 		},
+
 		handChangeInputGoodsList(data) {
 			//对应供应商的留言信息
 			this.goodsData = data
@@ -478,28 +373,6 @@ export default {
 			//获取发票信息
 			this.confirmParam.orderInvoice = data
 		},
-		hanldFreightFn(data) {
-			//显示邮费弹窗
-			console.log('邮费信息', data)
-			switch (data.postageFlag) {
-				case 1:
-					this.hanldFreight = this.freightData.postage
-					this.hanldFreePostFlag = data.postageFlag
-					this.freightBeansMoney = data.freightBeansMoney
-					this.orderShouldPayFee = this.allPrice + this.hanldFreight
-					this.attributePallPrice()
-					this.hanldFreightBeans(this.isCheckedBeans)
-					break
-				case -1:
-					this.hanldFreight = 0
-					this.hanldFreePostFlag = data.postageFlag
-					this.freightBeansMoney = data.freightBeansMoney
-					this.orderShouldPayFee = this.allPrice
-					this.attributePallPrice()
-					this.hanldFreightBeans(this.isCheckedBeans)
-					break
-			}
-		},
 		hanldFreightBeans(data) {
 			//是否勾选采美豆抵扣
 			this.isCheckedBeans = data
@@ -544,71 +417,13 @@ export default {
 			// 勾选使用优惠券
 			console.log('优惠券信息', data)
 			this.couponAmount = data.couponAmount
-			this.totalDiscountAmount = this.reducedPrice + this.couponAmount
 			this.confirmParam.clubCouponId = data.clubCouponId
 			this.attributePallPrice()
-			this.hanldFreightBeans(this.isCheckedBeans)
-		},
-		checkedBalabce() {
-			//勾选使用余额
-			if (this.userMoney > 0) {
-				this.ischecked = !this.ischecked
-				if (this.ischecked) {
-					this.confirmParam.payInfo.balancePayFlag = 1
-					this.attributePallPrice()
-				} else {
-					this.confirmParam.payInfo.balancePayFlag = 0
-					if (this.hanldFreePostFlag == 1 || this.hanldFreePostFlag == '1') {
-						//如果是有运费时
-						if (this.isCheckedBeans) {
-							this.orderShouldPayFee = this.allPrice - this.couponAmount
-						} else {
-							this.orderShouldPayFee =
-								this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
-						}
-					} else {
-						this.orderShouldPayFee = this.allPrice - this.couponAmount
-					}
-				}
-				console.log('最终订单支付金额', this.orderShouldPayFee)
-				console.log('优惠券金额', this.couponAmount)
-			} else {
-				return
-			}
-		},
-		attributePallPrice() {
-			// 计算价格
-			if (this.hanldFreePostFlag == 1 || this.hanldFreePostFlag == '1') {
-				this.attributeHashfreight(this.freightData.postage)
-			} else {
-				this.attributeNofreight()
-			}
+			// this.hanldFreightBeans(this.isCheckedBeans)
 		},
-		attributeNofreight() {
-			// 计算没有邮费的支付价格
-			if (this.ischecked) {
-				let totalAmount = this.allPrice - this.couponAmount
-				if (this.userMoney >= totalAmount) {
-					this.orderShouldPayFee = 0.0
-					this.deductMoney = this.allPrice - this.couponAmount // 当前使用金额等于订单金额
-					this.surplusMoney = this.userMoney - this.deductMoney // 剩余金额等于余额-当前使用金额
-				} else {
-					this.orderShouldPayFee = this.allPrice - this.userMoney - this.couponAmount // 订单最终支付金额等于订单金额-账户余额
-					this.deductMoney = this.userMoney // 当前使用金额等于总余额
-					this.surplusMoney = this.userMoney - this.deductMoney // 剩余余额等于总余额-当前使用金额
-				}
-			} else {
-				this.orderShouldPayFee = this.allPrice - this.couponAmount
-				this.deductMoney = 0.0 // 当前使用
-				this.surplusMoney = this.userMoney // 剩余余额
-			}
-			console.log('最终订单支付金额', this.orderShouldPayFee)
-			console.log('优惠券金额', this.couponAmount)
-		},
-		attributeHashfreight(postage) {
+		attributeHashfreight() {
 			// 计算需要邮费的支付价格
-			console.log()
-			let totalAmount = this.allPrice + parseInt(postage) - this.couponAmount //计算不包邮的价格 总价等于商品价格+邮费
+			let totalAmount = this.allPrice - this.couponAmount //计算不包邮的价格 总价等于商品价格+邮费
 			if (this.ischecked) {
 				if (this.userMoney >= totalAmount) {
 					// 全部抵扣
@@ -618,7 +433,7 @@ export default {
 						this.deductMoney = this.allPrice - this.couponAmount // 当前使用金额等于订单金额
 						this.surplusMoney = this.userMoney - this.deductMoney // 剩余金额等于余额减去当前使用金额
 					} else {
-						this.deductMoney = this.allPrice + parseInt(postage) - this.couponAmount // 当前使用金额等于订单金额+运费金额
+						this.deductMoney = this.allPrice - this.couponAmount // 当前使用金额等于订单金额+运费金额
 						this.surplusMoney = this.userMoney - this.deductMoney // 剩余余额等于总余额-当前使用金额
 					}
 				} else {
@@ -629,13 +444,13 @@ export default {
 						this.deductMoney = this.userMoney // 当前使用金额等于账户余额
 						this.surplusMoney = this.userMoney - this.deductMoney // 剩余余额等于账户余额-当前使用金额
 					} else {
-						this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.userMoney - this.couponAmount //订单支付金额等于订单金额+运费-账户余额-优惠券
+						this.orderShouldPayFee = this.allPrice - this.userMoney - this.couponAmount //订单支付金额等于订单金额+运费-账户余额-优惠券
 						this.deductMoney = this.userMoney // 当前使用金额等于账户余额
 						this.surplusMoney = this.userMoney - this.deductMoney // 剩余余额等于账户余额-当前使用金额
 					}
 				}
 			} else {
-				this.orderShouldPayFee = this.allPrice + parseInt(postage) - this.couponAmount
+				this.orderShouldPayFee = this.allPrice - this.couponAmount
 				this.deductMoney = 0.0 // 当前使用金额
 				this.surplusMoney = this.userMoney // 剩余余额
 			}
@@ -673,11 +488,12 @@ export default {
 					splitCode: el.splitCode,
 					shopId: el.shopId,
 					note: el.note ? el.note : '',
+					postage: parseInt(el.postage).toFixed(2),
+					postageFlag: parseInt(el.handlePostageFlag),
+					isColdChina: el.isColdChina ? 1 : 0,
 					productInfo: productInfo
 				}
 			})
-			this.confirmParam.payInfo.postage = parseInt(this.hanldFreight).toFixed(2)
-			this.confirmParam.payInfo.postageFlag = parseInt(this.hanldFreePostFlag)
 			this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
 			this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
 			this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
@@ -686,44 +502,39 @@ export default {
 			this.isSubLoading = true
 			this.hanldeOrderSubmit(this.confirmParam)
 		},
-		hanldeOrderSubmit(params) {
-			// 提交订单
-			this.OrderService.CreatedOrderSubmit(params)
-				.then(response => {
-					let data = response.data
-					// 友盟埋点收集机构自主提交订单
-					if (process.env.NODE_ENV != 'development') {
-						this.$uma.trackEvent('Um_Event_ConfirmOrder', {
-							Um_Key_PageName: '机构提交订单',
-							Um_Key_SourcePage: '确认订单',
-							Um_Key_OrderID: `${data.orderId}`
-						})
-					}
-					if (data.code === 1) {
-						this.submitState = 'success'
-						setTimeout(() => {
-							this.isSubLoading = false
-						}, 2000)
-						this.$api.redirectTo(
-							`/pages/user/order/success?data=${JSON.stringify({ data: { orderId: data.orderId } })}`
-						)
-					} else {
-						this.submitState = 'confirm'
-						this.$util.msg('订单提交成功', 2000, true, 'success')
-						setTimeout(() => {
-							this.isSubLoading = false
-							if (data.onlinePayFlag === 1) {
-								this.$api.redirectTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
-							} else {
-								this.$api.redirectTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
-							}
-						}, 2000)
-					}
-				})
-				.catch(error => {
-					this.isSubLoading = false
-					this.handleError(error)
-				})
+		// 提交订单
+		async hanldeOrderSubmit(params) {
+			try {
+				const res = await this.OrderService.CreatedOrderSubmit(params)
+				const data = res.data
+				// 友盟埋点收集机构自主提交订单
+				if (process.env.NODE_ENV != 'development') {
+					this.$uma.trackEvent('Um_Event_ConfirmOrder', {
+						Um_Key_PageName: '机构提交订单',
+						Um_Key_SourcePage: '确认订单',
+						Um_Key_OrderID: `${data.orderId}`
+					})
+				}
+				if (data.code === 1) {
+					this.submitState = 'success'
+					setTimeout(() => {
+						this.isSubLoading = false
+					}, 2000)
+					this.$api.redirectTo(
+						`/pages/user/order/success?data=${JSON.stringify({ data: { orderId: data.orderId } })}`
+					)
+				} else {
+					this.submitState = 'confirm'
+					this.$util.msg('订单提交成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.isSubLoading = false
+						this.$api.redirectTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
+					}, 2000)
+				}
+			} catch (error) {
+				this.isSubLoading = false
+				this.handleError(error)
+			}
 		},
 		handleError(data) {
 			// 提交订单异常处理
@@ -813,10 +624,6 @@ export default {
 			this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
 			this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
 		},
-		handFreightAlertShow() {
-			//显示邮费弹窗
-			this.isfreightTip = true
-		},
 		handleClickCancel() {
 			// 关闭优惠券弹窗
 			this.isCouponModel = false
@@ -868,24 +675,32 @@ export default {
 					console.log(res)
 				}
 			})
-		},
-		hideFreight() {
-			//关闭邮费弹窗
-			this.isfreightTip = false
 		}
 	},
 	onShow() {
 		let pages = getCurrentPages()
 		let currPage = pages[pages.length - 1]
 		if (currPage.data.select == 'select') {
-			this.isAddress = true
-			let SelectData = uni.getStorageSync('selectAddress')
-			this.confirmParam.addressId = SelectData.addressId
-			this.postageParam.townId = SelectData.townId
-			this.addressData = SelectData
-			this.getFreightData()
-		} else {
-			this.getAddressData()
+			let address = uni.getStorageSync('selectAddress')
+			this.confirmParam.addressId = address.addressId
+			this.cartParam.townId = address.townId
+			this.productParam.townId = address.townId
+			this.supportParm.townId = address.townId
+			this.addressData = address
+			this.ischecked = false
+			this.isRequest = false
+			if (this.handleComType === 1) {
+				//立即都买提交
+				this.GetProductCreateOrderInfo()
+			}
+			if (this.handleComType === 2) {
+				//购物车提交
+				this.CartCreateOrderInfo()
+			}
+			if (this.handleComType === 3) {
+				//组合商品提交
+				this.GetOrderClubProductSupporting()
+			}
 		}
 	}
 }
@@ -1080,134 +895,4 @@ page {
 		}
 	}
 }
-.coupon-content-model {
-	width: 100%;
-	height: 100%;
-	background: rgba(0, 0, 0, 0.5);
-	position: fixed;
-	top: 0;
-	left: 0;
-	z-index: 8888;
-	transition: all 0.4s;
-	.coupon-alert-content {
-		width: 600rpx;
-		height: 612rpx;
-		position: absolute;
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-		margin: auto;
-		box-sizing: border-box;
-		padding-top: 92rpx;
-		.coupon {
-			width: 600rpx;
-			height: 522rpx;
-			background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
-			background-size: cover;
-			box-sizing: border-box;
-			padding: 230rpx 40rpx 0 40rpx;
-			.coupon-list {
-				width: 100%;
-				height: 147rpx;
-				margin-bottom: 32rpx;
-				box-sizing: border-box;
-				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
-				background-size: cover;
-				position: relative;
-				.list-cell-tags {
-					display: inline-block;
-					padding: 0 10rpx;
-					height: 32rpx;
-					line-height: 32rpx;
-					background-color: #f94b4b;
-					color: #ffffff;
-					font-size: 18rpx;
-					border-radius: 16rpx 0 16rpx 0;
-					text-align: center;
-					position: absolute;
-					top: 0;
-					left: 0;
-				}
-				.list-cell-le {
-					width: 154rpx;
-					height: 100%;
-					box-sizing: border-box;
-					padding: 30rpx 0;
-					float: left;
-					.coupon-maxMoney {
-						width: 100%;
-						height: 54rpx;
-						line-height: 54rpx;
-						font-size: 42rpx;
-						color: #f94b4b;
-						text-align: center;
-						margin-top: 10rpx;
-						.small {
-							font-size: $font-size-20;
-						}
-					}
-					.coupon-minMoney {
-						width: 100%;
-						height: 28rpx;
-						float: left;
-						box-sizing: border-box;
-						padding-left: 24rpx;
-						.txt {
-							display: block;
-							height: 28rpx;
-							line-height: 28rpx;
-							font-size: 16rpx;
-							color: #f94b4b;
-							text-align: center;
-							padding: 0 5rpx;
-							background-color: #fff1eb;
-							border-radius: 4rpx;
-							float: left;
-						}
-					}
-				}
-				.list-cell-ri {
-					width: 366rpx;
-					height: 100%;
-					box-sizing: border-box;
-					padding: 30rpx 20rpx;
-					float: left;
-					.list-cell-top {
-						width: 100%;
-						height: 64rpx;
-						line-height: 64rpx;
-						font-size: $font-size-26;
-						color: #333333;
-						float: left;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						word-break: break-all;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 1;
-						overflow: hidden;
-					}
-					.list-cell-time {
-						width: 100%;
-						height: 28rpx;
-						line-height: 28rpx;
-						text-align: left;
-						font-size: $font-size-20;
-						color: #999999;
-					}
-				}
-			}
-			.coupon-btn {
-				width: 100%;
-				height: 78rpx;
-				background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
-				background-size: cover;
-				line-height: 78rpx;
-				text-align: center;
-				color: #ffffff;
-				font-size: $font-size-36;
-			}
-		}
-	}
-}
 </style>

+ 103 - 0
pages/user/order/mixins/conMixins.js

@@ -0,0 +1,103 @@
+import Vue from 'vue'
+const conMixins = {
+    data() {
+        return {
+            handleComType:0,//跳转类型
+            cartParam: {
+                // 购物车立即结算确认订单参数
+                townId:'',          //地址ID
+                skuIds: 0, // 商品Id(逗号隔开)
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 // 用户Id
+            },
+            productParam: {
+                // 商品立即购买确认订单参数
+                townId:'',          //地址ID
+                productCount: 0, // 商品数量
+                productId: 0, // 商品Id
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 // 用户Id
+            },
+            supportParm: {
+                // 组合商品立即购买确认订单参数
+                townId:'',          //地址ID
+                productInfo: '',
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 // 用户Id
+            },
+            totalCount: 1, // 订单提交总数量
+            reducedPrice: 0, // 满减金额
+            couponAmount: 0, // 优惠券金额
+            allPrice: 0.0, // 订单总金额
+            userMoney: 0.0, // 显示可使用余额
+            deductMoney: 0.0, // 显示已使用的余额
+            orderShouldPayFee:0 //显示最终订单金额
+        }
+    },
+    computed: {
+        // 计算订单最终支付金额 = 供应商下的合计金额之和
+        orderTotalPrice(){
+            let totalPrice = 0
+            this.goodsData.forEach(el =>{
+                totalPrice += el.totalPrice
+            })
+            console.log('订单最终金额',totalPrice)
+            return totalPrice - this.couponAmount
+        },
+        // 显示勾选后的剩余抵扣 = 用户总余额-当前使用金额
+        surplusMoney(){
+			 console.log('剩余抵扣', (this.userMoney - this.deductMoney))
+            return this.userMoney - this.deductMoney
+        },
+        // 共减 = 减金额 + 优惠券金额
+        totalDiscountAmount(){
+			 console.log('共减金额', (this.reducedPrice + this.couponAmount))
+            return this.reducedPrice + this.couponAmount
+        }
+    },
+    methods: {
+        //勾选使用余额
+        checkedBalabce() {
+            if (this.userMoney > 0) {
+                this.ischecked = !this.ischecked
+                if (this.ischecked) {
+                    this.confirmParam.payInfo.balancePayFlag = 1
+                    this.attributePallPrice()
+                } else {
+                    this.confirmParam.payInfo.balancePayFlag = 0
+                    this.attributePallPrice()
+                }
+                console.log('勾选使用余额最终订单支付金额', this.orderShouldPayFee)
+            }
+        },
+        // 是否勾选冷链费计算
+        handleChangeChina(supplier){
+        	this.attributePallPrice()
+        },
+        // 修改供应商运费类型
+        handleChangePostage(supplier){
+            this.attributePallPrice()
+        },
+        // 计算最终订单支付金额
+        attributePallPrice() {
+            if (this.ischecked) {// 是否勾选余额抵扣
+                if (this.userMoney >= this.orderTotalPrice) {
+                    this.orderShouldPayFee =0.0
+                    this.deductMoney = this.orderTotalPrice// 当前使用金额等于订单金额
+                    console.log('最终订单支付金额00001', this.orderShouldPayFee)
+                } else {
+                    this.orderShouldPayFee = this.orderTotalPrice - this.userMoney // 订单最终支付金额等于订单金额-账户余额
+                    this.deductMoney = this.userMoney // 当前使用金额等于总余额
+                    console.log('最终订单支付金额00002', this.orderShouldPayFee)
+                }
+                console.log('余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            } else {
+                this.orderShouldPayFee = this.orderTotalPrice
+                this.deductMoney = 0 // 当前使用
+                console.log('未余额抵扣最终订单支付金额', this.orderShouldPayFee)
+            }
+        }
+    }
+}
+
+export default conMixins

+ 254 - 0
pages/user/order/order-addpay.vue

@@ -0,0 +1,254 @@
+<template>
+	<view class="container qualifications">
+		<view class="qualifications-content">
+			<view class="list-view-title"><text class="none">*</text>支付凭证图片:</view>
+			<view class="list-view-upload clearfix">
+				<view class="photo-item" v-for="(item, imageIndex) in imageList" :key="imageIndex">
+					<image :src="item" mode="aspectFill" @click.stop="previewImg(item)"></image>
+					<text class="iconfont icon-iconfontguanbi" @click.stop="deletePhotoFn(imageIndex)"></text>
+				</view>
+				<view
+					class="photo-item add"
+					@click.stop="uploadPhotoFn"
+					v-if="imageList.length < 5 || imageList.length == 0"
+				>
+					<text class="iconfont icon-jiahao"></text>
+				</view>
+			</view>
+			<view class="list-view-title">备注:</view>
+			<view class="list-view-text">
+				<textarea
+					class="textarea"
+					v-model="params.remarks"
+					placeholder="请输入备注信息"
+					maxlength="200"
+					@input="conInput"
+				/>
+				<text class="limit-text">{{ min }}/{{ max }}</text>
+			</view>
+		</view>
+		<view class="card-mains-btn">
+			<button
+				class="add-btn"
+				:disabled="disabled"
+				:class="[disabled ? 'disabled' : '']"
+				@click="orderInsertVoucher"
+			>
+				提交
+			</button>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import { uploadFileImage } from '@/services/public.js'
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			isPreviewImg: false,
+			imageList: [],
+			params: {
+				id: 0,
+				shopOrderId: 0,
+				remarks: '',
+				voucherImgs: ''
+			},
+			min: 0,
+			max: 200
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		this.params.shopOrderId = option.shopOrderId
+	},
+	computed: {
+		disabled() {
+			return !(this.imageList.length > 0)
+		}
+	},
+	methods: {
+		async orderInsertVoucher() {
+			try {
+				this.params.voucherImgs = this.imageList.join('##')
+				console.log('params', this.params)
+				const res = await this.OrderService.orderInsertVoucher(this.params)
+				this.$util.msg('保存成功', 2000, true, 'success')
+				setTimeout(() => {
+					this.$api.navigateBack(1)
+				}, 2000)
+			} catch (error) {
+				console.log('error', error)
+			}
+		},
+		async uploadPhotoFn() {
+			//添加图片
+			try {
+				const res = await uploadFileImage()
+				const data = JSON.parse(res.data).data
+				this.imageList.push(data)
+				console.log('imageList', this.imageList)
+			} catch (e) {
+				console.log('1111111111')
+			}
+		},
+		conInput(e) {
+			//备注文字字数限制
+			let value = e.detail.value
+			let len = parseInt(value.length)
+			if (len > this.max) return
+			this.min = len
+			if (this.min == 200) {
+				return
+			}
+		},
+		deletePhotoFn(index) {
+			//删除图片
+			this.imageList.splice(index, 1)
+		},
+		previewImg(image) {
+			//顶部商品图片预览
+			this.isPreviewImage = true
+			let urls = []
+			urls.push(image)
+			uni.previewImage({
+				urls: urls,
+				current: 0
+			})
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: auto;
+	background: #ffffff;
+}
+.qualifications-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	.list-view-title {
+		width: 100%;
+		height: 92rpx;
+		line-height: 92rpx;
+		font-size: $font-size-30;
+		color: #333333;
+		text-align: left;
+		.none {
+			color: #f85050;
+		}
+	}
+	.list-view-text {
+		width: 100%;
+		height: 216rpx;
+		box-sizing: border-box;
+		border: 1px solid #e1e1e1;
+		padding: 20rpx;
+		border-radius: 6rpx;
+		position: relative;
+		.textarea {
+			width: 100%;
+			height: 100%;
+			font-size: $font-size-26;
+			color: #666666;
+		}
+		.limit-text {
+			position: absolute;
+			right: 20rpx;
+			bottom: 16rpx;
+			line-height: 44rpx;
+			font-size: $font-size-24;
+			color: #b2b2b2;
+		}
+	}
+	.list-view-upload {
+		width: 100%;
+		height: auto;
+		padding: 10rpx 0;
+		.photo-item {
+			display: inline-block;
+			width: 150rpx;
+			height: 150rpx;
+			margin: 10rpx 0;
+			margin-right: 25rpx;
+			border-radius: 10rpx;
+			border: 1px dashed #b8bfca;
+			position: relative;
+			float: left;
+			&.add {
+				width: 150rpx;
+				height: 150rpx;
+				border-color: #b2b2b2;
+				text-align: center;
+				line-height: 150rpx;
+				margin-right: 0rpx;
+				.icon-jiahao {
+					font-size: $font-size-44;
+					color: #b2b2b2;
+					font-weight: bold;
+				}
+			}
+			.icon-iconfontguanbi {
+				width: 30rpx;
+				height: 30rpx;
+				border-radius: 50%;
+				display: block;
+				position: absolute;
+				right: -10rpx;
+				top: -10rpx;
+				background: #f94b4b;
+				text-align: center;
+				line-height: 30rpx;
+				color: #ffffff;
+				font-size: $font-size-22;
+			}
+			image {
+				width: 100%;
+				height: 100%;
+				border-radius: 10rpx;
+				display: block;
+			}
+		}
+		.photo-list {
+			width: 100%;
+			height: 116rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			display: flex;
+			align-items: flex-start;
+		}
+		.scoll-wrapper {
+			display: flex;
+			align-items: flex-start;
+		}
+	}
+}
+.card-mains-btn {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 75rpx;
+	margin-top: 180rpx;
+	.add-btn {
+		width: 100%;
+		height: 90rpx;
+		font-size: $font-size-30;
+		line-height: 90rpx;
+		color: #ffffff;
+		text-align: center;
+		background: $btn-confirm;
+		border-radius: 45rpx;
+		border-radius: 44rpx;
+		margin-top: 80rpx;
+		&.disabled {
+			background: #e1e1e1;
+			border-radius: 44rpx;
+		}
+	}
+}
+</style>

+ 296 - 293
pages/user/order/order-details.vue

@@ -6,60 +6,63 @@
 			:navbar-data="nvabarData"
 			:headerBtnPosi="headerBtnPosi"
 			:isShare="isOrderShare"
-		></header-back>
-		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
+		/>
+		<tui-skeleton
+			v-if="!skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<view class="container-details" v-else :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
-				<view class="view-type">{{ information.status | TextFormat }}</view>
-				<text class="bage-buss" v-if="information.orderSubmitType == 3 || information.orderSubmitType == 4"
+				<view class="view-type">{{ orderInfo.status | statusFilters }}</view>
+				<text class="bage-buss" v-if="orderInfo.orderSubmitType == 3 || orderInfo.orderSubmitType == 4"
 					>协销</text
 				>
 				<text
 					class="bage-auto"
 					v-if="
-						information.orderSubmitType == 0 ||
-							information.orderSubmitType == 1 ||
-							information.orderSubmitType == 2
-					"
-					>自主</text
-				>
+						orderInfo.orderSubmitType == 0 ||
+						orderInfo.orderSubmitType == 1 ||
+						orderInfo.orderSubmitType == 2"
+					>自主</text>
 			</view>
 			<!-- 地址选择 -->
-			<order-address
-				ref="orderAddress"
-				v-if="isRequest && !rechargeGoods"
-				:addressData="addressData"
-			></order-address>
-            <!-- 特殊商品退货须知 -->
-            <view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
+			<cm-address-temp ref="orderAddress" v-if="skeletonShow && !rechargeGoods" :addressData="addressData" />
+			<!-- 特殊商品退货须知 -->
+			<view class="return-instructions" v-if="returnGoodsStutas" v-html="helpContent"></view>
 			<!-- 商品 -->
-			<goods-list
+			<cm-goods-temp
 				ref="goods"
-				v-if="isRequest"
-				:shopOrderData="shopOrderData"
-				:information="information"
+				v-if="skeletonShow"
+				:list="orderInfo.orderProductList"
+				:orderInfo="orderInfo"
 				@popupClick="hanldePopupFn"
-			></goods-list>
+			/>
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<cm-order-temp ref="orderInfo" v-if="skeletonShow" :orderInfo="orderInfo" />
 			<!-- 发票信息 -->
-			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<cm-invice-temp ref="invoice" v-if="skeletonShow" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
-			<payment-record
+			<cm-payment-temp
 				ref="payment"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:discernReceiptList="discernReceiptList"
 				:receiptAmount="receiptAmount"
-			></payment-record>
+			/>
 			<!-- 退款记录 -->
-			<refund-record
+			<cm-refund-temp
 				ref="refund"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:returnedPurchaseList="returnedPurchaseList"
 				:returnedPurchaseFee="returnedPurchaseFee"
-			></refund-record>
+			/>
+			<!-- 支付凭证记录 -->
+			<cm-voucher-temp ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
 			<view
 				class="clause"
-				v-if="information.secondHandOrderFlag != 1 && !orderSubmitType"
+				v-if="orderInfo.secondHandOrderFlag != 1 && !orderSubmitType"
 				@tap.stop="openclauseConten(clauseData.id)"
 				:class="clauseData.name == '无条款' ? 'noclick' : ''"
 			>
@@ -68,18 +71,17 @@
 				}}</label>
 			</view>
 			<!-- 底部button -->
-			<order-button
+			<cm-details-button
 				ref="orderButton"
-				v-if="isRequest"
+				v-if="skeletonShow"
 				:status="btnStatus"
 				:shareCode="shareCode"
 				:order="orderInfo"
 				@buttonConfirm="handButtonConfirm"
-			>
-			</order-button>
+			/>
 		</view>
 		<!-- 付款弹窗 -->
-		<order-model
+		<cm-orderpay-popup
 			v-if="isPayModel"
 			:payModelData="payModelData"
 			:modelType="modelType"
@@ -87,9 +89,9 @@
 			@paymentConfirm="hanldPaymentConfirm"
 		/>
 		<!-- 分享弹窗 -->
-		<share-alert :orderId="orderId" v-if="isShareModal" @btnConfirm="onShareAppMessage"> </share-alert>
+		<cm-share-popup :shopOrderId="shopOrderId" v-if="isShareModal" @shareConfirm="onShareAppMessage" />
 		<!-- 促销活动弹窗 -->
-		<activi-popup :Promotion="handlerPros" :popupShow="popupShow"></activi-popup>
+		<cm-promote-popup :Promotion="handlerPros" :popupShow="popupShow" />
 		<!-- 采美豆提示弹窗 -->
 		<activityBean
 			v-if="isActivityBean"
@@ -97,7 +99,7 @@
 			:beansType="beansType"
 			:beanNumber="beanNumber"
 			@cancel="handleBeanlClick"
-		></activityBean>
+		/>
 		<!-- 提示弹窗 -->
 		<tui-modal
 			:show="modal"
@@ -108,65 +110,66 @@
 			:size="32"
 			shape="circle"
 			:maskClosable="false"
-		>
-		</tui-modal>
+		/>
 	</view>
 </template>
 
 <script>
 import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import orderAddress from '@/components/cm-module/orderDetails/orderAddress' //地址信息
-import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
-import invoiceTent from '@/components/cm-module/orderDetails/invoiceTent' //发票信息
-import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
-import paymentRecord from '@/components/cm-module/orderDetails/paymentRecord' //支付记录
-import refundRecord from '@/components/cm-module/orderDetails/refundRecord' //退款记录
-import orderButton from '@/components/cm-module/orderDetails/orderButton' //底部按钮
-import shareAlert from '@/components/cm-module/modelAlert/shareAlert.vue' //分享弹窗
-import orderModel from '@/components/cm-module/modelAlert/order-alert' //付款弹窗
-import activiPopup from '@/components/cm-module/orderDetails/activipopu' //促销活动弹窗
+import cmAddressTemp from './components/details/cm-address-temp' //地址信息
+import cmGoodsTemp from './components/details/cm-goods-temp' //商品列表
+import cmOrderTemp from './components/details/cm-order-temp' //订单信息
+import cmInviceTemp from './components/details/cm-invice-temp' //发票信息
+import cmPaymentTemp from './components/details/cm-payment-temp' //支付记录
+import cmRefundTemp from './components/details/cm-refund-temp' //退款记录
+import cmVoucherTemp from './components/details/cm-voucher-temp' //支付凭证记录
+import cmDetailsButton from './components/cm-details-button' //底部按钮
+import cmSharePopup from './components/cm-share-popup' //分享弹窗
+import cmOrderpayPopup from './components/cm-orderpay-popup' //付款弹窗
+import cmPromotePopup from './components/details/cm-promote-popup' //促销活动弹窗
 import activityBean from '@/components/cm-module/activity/activityBean.vue'
 
 export default {
 	components: {
 		headerBack,
-		orderInformation,
-		orderAddress,
-		invoiceTent,
-		goodsList,
-		paymentRecord,
-		refundRecord,
-		orderButton,
-		shareAlert,
-		orderModel,
-		activiPopup,
+		cmAddressTemp,
+		cmGoodsTemp,
+		cmOrderTemp,
+		cmInviceTemp,
+		cmPaymentTemp,
+		cmRefundTemp,
+		cmVoucherTemp,
+		cmDetailsButton,
+		cmSharePopup,
+		cmOrderpayPopup,
+		cmPromotePopup,
 		activityBean
 	},
 	data() {
 		return {
 			state: 0,
 			userId: '',
-			orderId: '',
+			orderId: 0,
+			shopOrderId: 0,
 			shareCode: '', //分享码
 			shareType: '', //分享登录页过来记录的状态
-			cellPhone: '', //客服电话
 			payStatus: 0,
 			btnStatus: 0, //按钮组件状态
 			onlinePayFlag: '',
-			isRequest: false, //是否加载完成渲染子组件
+			skeletonShow: false, //是否加载完成渲染子组件
 			isOrderShare: false,
 			isShareModal: false,
 			isPayModel: false,
 			modelType: 0,
-			orderInfo: {},
 			alertOrderInfo: {},
 			payModelData: {},
 			addressData: {}, //地址信息初始化
-			information: {}, //订单信息初始化
+			orderInfo: {}, //订单信息初始化
 			shopOrderData: {}, //商品信息初始化
 			orderInvoice: {}, //发票信息初始化
 			returnedPurchaseList: {}, //退款信息初始化
 			discernReceiptList: {}, //支付信息初始化
+			voucherList:[], // 线下支付凭证
 			receiptAmount: 0, //支付金额
 			returnedPurchaseFee: 0, //退款金额
 			rechargeGoods: false,
@@ -187,9 +190,15 @@ export default {
 			beansType: 1,
 			beanNumber: 0,
 			isActivityBean: false,
-			modal:false,
+			handleModelEven: 0,
+			modal: false,
 			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
 			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
 				{
 					text: '确定',
 					customStyle: {
@@ -199,14 +208,14 @@ export default {
 					plain: false
 				}
 			],
-            returnGoodsStutas: false,
-            helpContent: '',
+			returnGoodsStutas: false,
+			helpContent: ''
 		}
 	},
 	onLoad(option) {
 		console.log(option)
 		this.shareType = option.type
-		this.orderId = option.orderId
+		this.shopOrderId = option.shopOrderId
 		if (this.shareType === 'share') {
 			this.state = 0
 			this.isOrderShare = true
@@ -219,122 +228,207 @@ export default {
 		this.initOrderDetaileData()
 	},
 	filters: {
-		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
+		statusFilters(value) {
+			//处理订单状态显示
+			const map = {
+				0: '待确认',
+				2: '交易完成',
+				4: '已关闭',
+				5: '交易全退',
+				6: '交易全退',
+				11: '待付款待发货',
+				12: '待付款部分发货',
+				13: '待付款已发货',
+				21: '部分付款待发货',
+				22: '部分付款部分发货',
+				23: '部分付款已发货',
+				31: '已付款待发货',
+				32: '已付款部分发货',
+				33: '已付款已发货'
+			}
+			return map[value]
 		}
 	},
 	methods: {
-		openclauseConten(id) {
-			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
-		},
+		// 获取订单详情
 		async initOrderDetaileData() {
-			const userInfo = await this.$api.getStorage()
-			this.userId = userInfo.userId ? userInfo.userId : 0
-			//初始化页面数据@参数:订单ID
-			this.OrderService.QueryOrderDetails({ orderId: this.orderId, userId: this.userId })
-				.then(response => {
-					let data = response.data
-					this.isRequest = true
-					this.orderInfo = data.order
-					this.shareCode = data.shareCode
-					this.addressData = data.userInfo
-					this.information = data.order
-					this.rechargeGoods = data.order.rechargeGoods
-					this.btnStatus = data.order.status
-					this.payStatus = data.order.payStatus
-					this.payableAmount = data.order.payableAmount
-					this.shopOrderData = data.shopOrderList
-					this.orderInvoice = data.orderInvoice
-					this.onlinePayFlag = data.order.onlinePayFlag
-					this.returnedPurchaseList = data.returnedPurchaseList
-					this.discernReceiptList = data.discernReceiptList
-					this.receiptAmount = data.order.receiptAmount
-					this.returnedPurchaseFee = data.order.returnedPurchaseFee
-					this.clauseData = data.clause
-                    // 特殊商品退货须知
-                    this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
-                    this.helpContent = data.helpContent
-					if (
-						this.information.orderSubmitType == 0 ||
-						this.information.orderSubmitType == 1 ||
-						this.information.orderSubmitType == 2
-					) {
-						this.orderSubmitType = true
-					} else {
-						this.orderSubmitType = false
-					}
-				})
-				.catch(error => {
-					this.modal = true
+			try {
+				const userInfo = await this.$api.getStorage()
+				this.userId = userInfo.userId ? userInfo.userId : 0
+				const res = await this.OrderService.QueryOrderDetails({
+					shopOrderId: this.shopOrderId,
+					userId: this.userId
 				})
+				const data = res.data
+				this.skeletonShow = true
+				this.orderInfo = data.shopOrder
+				this.shareCode = data.shareCode
+				this.addressData = data.userInfo
+				this.rechargeGoods = data.shopOrder.rechargeGoods
+				this.btnStatus = data.shopOrder.status
+				this.payStatus = data.shopOrder.payStatus
+				this.payableAmount = data.shopOrder.payableAmount
+				this.shopOrderData = data.orderProductList
+				this.orderInvoice = data.orderInvoice
+				this.onlinePayFlag = data.shopOrder.onlinePayFlag
+				this.returnedPurchaseList = data.returnedPurchaseList
+				this.discernReceiptList = data.discernReceiptList
+				this.voucherList = data.voucher
+				this.receiptAmount = data.shopOrder.receiptAmount
+				this.returnedPurchaseFee = data.shopOrder.returnedPurchaseFee
+				this.clauseData = data.clause
+				// 特殊商品退货须知
+				this.returnGoodsStutas = data.returnGoodsStutas && data.returnGoodsStutas === 2 // 1:可以 2:不可以
+				this.helpContent = data.helpContent
+				if (
+					this.orderInfo.orderSubmitType == 0 ||
+					this.orderInfo.orderSubmitType == 1 ||
+					this.orderInfo.orderSubmitType == 2
+				) {
+					this.orderSubmitType = true
+				} else {
+					this.orderSubmitType = false
+				}
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		handleClick(){
-			this.modal = false
-			this.$api.switchTabTo('/pages/tabBar/home/index')
-		},
+		//判断点击的按钮类型并执行...
 		handButtonConfirm(data) {
-			//监听点击时间的按钮类型并执行...
-			this.handShowAlert(data)
-		},
-		handShowAlert(data) {
-			//判断点击的按钮类型并执行...
 			switch (data.type) {
-				case 'delete':
-					this.handOrderDetele()
+				case 'cancel': //取消订单
+					this.modal = true
+					this.contentModalText = '确认取消该订单吗?'
+					this.handleModelEven = 1
 					break
-				case 'cancel':
-					this.handCenceConfirm()
+				case 'confirm': //确认收货
+					this.modal = true
+					this.contentModalText = '确认收货吗?'
+					this.handleModelEven = 2
 					break
-				case 'query':
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + this.orderId)
+				case 'delete': //删除订单
+					this.modal = true
+					this.contentModalText = '确认删除该订单吗?'
+					this.handleModelEven = 3
 					break
-				case 'confirm':
-					this.handOrderConfirm()
+				case 'confirmation': // 确认订单
+					this.modal = true
+					this.contentModalText = '确认此订单吗?'
+					this.handleModelEven = 4
+					break
+				case 'payment': //打款给供应商
+					this.modal = true
+					this.contentModalText = '确定委托采美平台打款给供应商吗?确定之前请务必确保货品完好!'
+					this.handleModelEven = 5
 					break
 				case 'pay':
 					this.getOrderPaymentValidation(data)
 					break
-				case 'confirmation':
-					this.handOrderConfirmation()
+				case 'query':
+					this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + this.shopOrderId)
 					break
-				case 'payment':
-					this.hanldConfirmFn(data.orderId)
+				case 'upload':
+					this.$api.navigateTo('/pages/user/order/order-addpay?shopOrderId=' + this.shopOrderId)
 					break
 			}
 		},
-		getOrderPaymentValidation(data) {
-			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId }).then(response => {
-				let data = response.data
+		handleClick(e) {
+			//确认操作
+			if (e.index == 1) {
+				switch (this.handleModelEven) {
+					case 1: //取消订单
+						this.cancelOrder(this.shopOrderId)
+						break
+					case 2: //确认收货
+						this.confirmReceipt(this.shopOrderId)
+						break
+					case 3: //删除订单
+						this.deleteOrder(this.shopOrderId)
+						break
+					case 4: //确认订单
+						this.affirmOrder(this.shopOrderId)
+						break
+					case 5: //打款给供应商
+						this.confirmpayment(this.shopOrderId)
+						break
+				}
+			}
+			this.modal = false
+		},
+		//取消订单
+		async cancelOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.CancelOrder({ shopOrderId: shopOrderId, userIdentity: 0 })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//确认收货
+		async confirmReceipt(shopOrderId) {
+			try {
+				const res = await this.OrderService.ConfirmReceipt({ shopOrderId: shopOrderId })
+				this.beansType = 7
+				this.beanNumber = 100
+				this.isActivityBean = true
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//删除订单
+		async deleteOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.DeleteOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					if (this.shareType === 'share') {
+						this.$api.switchTabTo('/pages/tabBar/home/index')
+					} else {
+						this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
+					}
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//确认订单
+		async affirmOrder(shopOrderId) {
+			try {
+				const res = await this.OrderService.AffirmOrder({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//确认打款给供应商
+		async confirmpayment(shopOrderId) {
+			try {
+				const res = await this.OrderService.confirmpayment({ shopOrderId: shopOrderId })
+				this.$util.msg(res.msg, 2000, true, 'success')
+				setTimeout(() => {
+					this.initOrderDetaileData()
+				}, 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		//监听根据付款状态做操作
+		async getOrderPaymentValidation(order) {
+			try{
+				const res = await this.OrderService.OrderPaymentValidation({ shopOrderId: order.shopOrderId })
+				const data = res.data
+				console.log('data' ,data)
 				this.payModelData = data
-				if(data.balanceFlag == 1){// 0可以走余额抵扣,1不能走余额抵扣
-					this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
-				}else{
+				if (data.balanceFlag == 1) {
+					// 0可以走余额抵扣,1不能走余额抵扣
+					this.$api.navigateTo(`/pages/user/order/order-pay-list?shopOrderId=${order.order.shopOrderId}`)
+				} else {
 					switch (data.code) {
 						case 1:
 							this.isPayModel = true
@@ -348,147 +442,57 @@ export default {
 							this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})
 							break
 						default:
-							if (data.onlinePayFlag == 1) {// 只能线下
-								this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
-							} else {
-								this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
-							}
+							this.$api.navigateTo(`/pages/user/order/order-pay-list?shopOrderId=${order.order.shopOrderId}`)
 					}
 				}
-			})
-			.catch(error => {
+			}catch(error){
 				this.$util.msg(error.msg, 2000)
-			})
-		},
-		hanldPaymentConfirm(data) {
-			//余额抵扣跳转
-			this.OrderService.OrderBalanceDeduction({ orderId: data.order.orderId })
-				.then(response => {
-					if (data.type === 2) {
-						let _data = { orderId: data.order.orderId }
-						this.$api.navigateTo(
-							`/pages/user/order/success?type=deduction&data=${JSON.stringify({ data: _data })}`
-						)
-					} else {
-						this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.order.orderId}`)
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		hanldCancelConfirm(data) {
-			//不使用余额抵扣直接跳转收银台
-			if (data.onlinePayFlag == 1) {// 只能线下
-				this.$api.navigateTo(`/pages/user/order/order-payunder?orderId=${data.orderId}`)
-			} else {
-				this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
 			}
 		},
-		hanldConfirmFn(orderId) {
-			//确认打款供应商
-			this.$util.modal(
-				'提示',
-				'确定委托采美平台打款给供应商吗?确定之前请务必确保货品完好?',
-				'确定',
-				'取消',
-				true,
-				() => {
-					this.OrderService.confirmpayment({ orderId: orderId, userId: this.userId })
-						.then(response => {
-							this.$util.msg('确认成功', 2000, true, 'success')
-							setTimeout(() => {
-								this.getOrderDatainit(this.currentTab)
-							}, 2000)
-						})
-						.catch(error => {
-							this.$util.msg(error.msg, 2000)
-						})
+		//余额抵扣跳转
+		async hanldPaymentConfirm(order) {
+			try {
+				await this.OrderService.OrderBalanceDeduction({ shopOrderId: order.order.shopOrderId })
+				const data = { shopOrderId: order.order.shopOrderId }
+				if (data.type === 2) {
+					this.$api.navigateTo(
+						`/pages/user/order/success?type=deduction&data=${JSON.stringify({ data: data })}`
+					)
+				} else {
+					this.$api.navigateTo(`/pages/user/order/order-pay-list?shopOrderId=${order.order.shopOrderId}`)
 				}
-			)
-		},
-		handOrderConfirm() {
-			//确认收货
-			this.$util.modal('提示', '是否确认收货', '确定', '取消', true, () => {
-				this.OrderService.ConfirmReceipt({ orderId: this.orderId })
-					.then(response => {
-						this.beansType = 7
-						this.beanNumber = 100
-						this.isActivityBean = true
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
-		},
-		handOrderConfirmation() {
-			//确认订单
-			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
-				this.OrderService.AffirmOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.initOrderDetaileData()
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
 		},
-		handOrderDetele() {
-			//删除订单
-			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.DeleteOrder({ orderId: this.orderId })
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							if (this.shareType === 'share') {
-								this.$api.switchTabTo('/pages/tabBar/home/index')
-							} else {
-								this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
-							}
-						}, 500)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		//不使用余额抵扣直接跳转收银台
+		hanldCancelConfirm(data) {
+			this.$api.navigateTo(`/pages/user/order/order-pay-list?shopOrderId=${data.shopOrderId}`)
 		},
-		handCenceConfirm() {
-			//取消订单
-			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
-				this.OrderService.CancelOrder({ orderId: this.orderId , userIdentity : 0})
-					.then(response => {
-						this.$util.msg(response.msg, 2000, true, 'success')
-						setTimeout(() => {
-							this.initOrderDetaileData()
-						}, 2000)
-					})
-					.catch(error => {
-						this.$util.msg(error.msg, 2000)
-					})
-			})
+		// 查看售后条款
+		openclauseConten(id) {
+			this.$api.navigateTo(`/pages/service/sellconten?clauseId=${id}`)
 		},
+		//分享订单
 		onShareAppMessage(res) {
-			//分享转发
 			this.isShareModal = false
 			if (res.from === 'button') {
 				// 来自页面内转发按钮
 			}
 			return {
 				title: '您有新的分享订单,快来查看吧~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.orderId}&userId=${this.userId}`,
+				path: `/pages/user/order/order-sharelogin?shopOrderId=${this.shopOrderId}&userId=${this.userId}`,
 				imageUrl: 'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
 			}
 		},
+		// 监听活动内容
 		hanldePopupFn(data) {
-			//监听活动内容
 			this.popupShow = true
 			this.handlerPros = data
 		},
+		// 设置状态栏高度
 		getHeaderTopHeight() {
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+			let statusBarHeight = this.systeminfo.statusBarHeight
 			let headerPosi = this.headerBtnPosi
 			let btnPosi = {
 				// 胶囊实际位置,坐标信息不是左上角原点
@@ -503,10 +507,9 @@ export default {
 			}
 			this.navbarHeight = headerPosi.bottom + btnPosi.bottom // 原胶囊bottom + 现胶囊bottom
 		},
+		// 获得胶囊按钮位置信息
 		setHeaderBtnPosi() {
-			// 获得胶囊按钮位置信息
-			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
-			return headerBtnPosi
+			return uni.getMenuButtonBoundingClientRect()
 		},
 		setSysteminfo() {
 			let systeminfo
@@ -536,13 +539,13 @@ page {
 .details {
 	padding-bottom: 130rpx;
 }
-.return-instructions{
-    font-size: 26rpx;
-    color: #FF5B00;
-    line-height: 42rpx;
-    padding: 32rpx 50rpx;
-    background-color: #FFFAF8;
-    text-align: justify;
+.return-instructions {
+	font-size: 26rpx;
+	color: #ff5b00;
+	line-height: 42rpx;
+	padding: 32rpx 50rpx;
+	background-color: #fffaf8;
+	text-align: justify;
 }
 .btn-hover {
 	background: #ffffff;

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio