xiebaomin 2 лет назад
Родитель
Сommit
bbf16c1332
31 измененных файлов с 3652 добавлено и 3161 удалено
  1. 12 10
      components/cm-module/cm-cart-temp/index.vue
  2. 4 3
      components/cm-module/modelAlert/shareAlert.vue
  3. 1 1
      manifest.json
  4. 1 1
      pages/goods/product.vue
  5. 1 1
      pages/notice/club/notice-order.vue
  6. 44 31
      pages/user/address/addressManage.vue
  7. 5 7
      pages/user/order/components/choiceAddress.vue
  8. 132 0
      pages/user/order/components/countUp.vue
  9. 21 45
      pages/user/order/components/details/goodsList.vue
  10. 3 5
      pages/user/order/components/details/orderAddress.vue
  11. 9 10
      pages/user/order/components/details/orderButton.vue
  12. 19 44
      pages/user/order/components/details/orderInformation.vue
  13. 237 237
      pages/user/order/components/details/orderListButton.vue
  14. 1 1
      pages/user/order/components/details/paymentRecord.vue
  15. 3 3
      pages/user/order/components/details/refundRecord.vue
  16. 4 3
      pages/user/order/components/details/voucherRecord.vue
  17. 298 0
      pages/user/order/components/freight-popup.vue
  18. 3 1
      pages/user/order/components/freight.vue
  19. 325 287
      pages/user/order/components/goodsList.vue
  20. 755 776
      pages/user/order/create-order.vue
  21. 2 2
      pages/user/order/order-addpay.vue
  22. 34 28
      pages/user/order/order-details.vue
  23. 851 839
      pages/user/order/order-list.vue
  24. 1 1
      pages/user/order/order-logistics.vue
  25. 288 272
      pages/user/order/order-pay-list.vue
  26. 4 4
      pages/user/order/order-sharedetails.vue
  27. 11 11
      pages/user/order/order-sharelogin.vue
  28. 3 3
      pages/user/order/orderShareLogin.vue
  29. 563 527
      pages/user/pay/card-under.vue
  30. 9 7
      pages/user/pay/success.vue
  31. 8 1
      services/pay.service.js

+ 12 - 10
components/cm-module/cm-cart-temp/index.vue

@@ -64,13 +64,13 @@
 												pros.name
 											}}</view>
 											<view class="productspec">规格:{{ pros.unit ? pros.unit : '' }}</view>
-											<template v-if="pros.number > pros.stock || pros.stock === 0">
+<!-- 											<template v-if="pros.number > pros.stock || pros.stock === 0">
 												<view class="cart-sku-temp" @click.stop="handleShouUnitPopup(pros)">
 													<view class="cart-sku-text">重新选择商品规格</view>
 													<view class="cart-sku-btn">重选</view>
 												</view>
-											</template>
-											<template v-else>
+											</template> -->
+											<template>
 												<view class="productprice">
 													<!--使用过滤器对总价改变-->
 													<view class="price">
@@ -78,7 +78,7 @@
 													</view>
 													<view
 														class="count"
-														v-if="pros.validFlag == 1"
+														v-if="pros.validFlag == 2"
 														:class="[isshowDelbtn ? 'none' : 'show']"
 													>
 														<text class="count-tips" v-if="pros.number < pros.min"
@@ -398,13 +398,15 @@ export default {
 			this.goodsList = data.map((supplier, index) => {
 				supplier.cartList.forEach(pros => {
 					pros.shopId = supplier.shopId
+                    console.log(pros)
 					pros.isStep = false
-					if (pros.stock === 0 || pros.number > pros.stock) {
-						supplier.isDisable = true
-						pros.isDisable = true
-					} else {
-						pros.isDisable = false
-					}
+					// if (pros.stock === 0 || pros.number > pros.stock) {
+					// 	supplier.isDisable = true
+					// 	pros.isDisable = true
+					// } else {
+					// 	pros.isDisable = false
+					// }
+                    pros.isDisable = false
 					if (pros.step === 2) {
 						if (pros.number % pros.min != 0) {
 							pros.number = pros.min

+ 4 - 3
components/cm-module/modelAlert/shareAlert.vue

@@ -37,15 +37,16 @@
 			}
 		},
 		created() {
+            console.log(this.orderId, '分享弹窗shopOrderId')
 			this.getShareCode(this.orderId)
 		},
 		methods:{
 			getShareCode(res){
-				this.OrderService.QueryOrderShareCode({orderId:res}).then(response =>{
+				this.OrderService.QueryOrderShareCode({shopOrderId:res}).then(response =>{
 					this.shareCode = response.data
-					this.$parent.shareCode = this.shareCode;
+					this.$parent.shareCode = this.shareCode
 				}).catch(error =>{
-					this.$parent.isShareModal = false;
+					this.$parent.isShareModal = false
 					this.$util.modal('提示',error.msg,'确定','',false,() =>{})
 				})
 			},

+ 1 - 1
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "caimei-applets-mcare",
-    "appid" : "__UNI__1EA8401",
+    "appid" : "__UNI__E87C031",
     "description" : "联合丽格集采商城",
     "versionName" : "1.1.4",
     "versionCode" : "100",

+ 1 - 1
pages/goods/product.vue

@@ -338,7 +338,7 @@ export default {
 					return item.image
 				})
 				//处理下架商品和售罄商品
-				if (this.product.validFlag == 2) {
+				if (this.product.validFlag == 3) {
 					this.goodsData.disabledText = '下架'
 					this.goodsData.disabled = true
 				}

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

@@ -106,7 +106,7 @@ export default {
 		},
 		isOnliyPay(cell){
 			let onliyPay = false
-			let statusVal = [11, 12, 13, 21, 22, 23, 111]
+			let statusVal = [11, 12, 13, 21, 22, 23]
 			statusVal.forEach(value => {
 				if (cell.status === value) {
 					onliyPay = true

+ 44 - 31
pages/user/address/addressManage.vue

@@ -49,7 +49,8 @@
 
 <script>	
 	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
-	import authorize from '@/common/config/authorize.js'	
+	import authorize from '@/common/config/authorize.js'
+    import { mapState, mapMutations } from 'vuex'
 	export default {
 		components:{
 			mpvueCityPicker
@@ -71,40 +72,45 @@
 					address: '',	//地址
 					defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
 				},
-				params:{}				//参数
+				params:{}, //参数
+                isSelect: false,
 			}
 		},
 		onLoad(option){
 			let title = '添加新地址'
 			if(option.type==='edit'){
 				title = '编辑收货地址'
-				this.isConfirm = false;
-				this.addType = 2;			
+				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;
+				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
 			})
 		},
+        computed: {
+            ...mapState(['userInfo'])
+        },
 		methods: {			
 			switchChange(e){
 				if(e.detail.value== true){
-					this.addressData.defaultFlag = '1';
+					this.addressData.defaultFlag = '1'
 				}else{
-					this.addressData.defaultFlag = '0';
+					this.addressData.defaultFlag = '0'
 				}
 			},
 			// 三级联动选择
@@ -114,22 +120,22 @@
 			},
 			onConfirm(e) {
 				console.log(e)
-				this.addressData.allAddress = e.name;
-				this.addressData.townId = e.townCode;	
-				this.initInput();
+				this.addressData.allAddress = e.name
+				this.addressData.townId = e.townCode	
+				this.initInput()
 			},			
 			//提交
 			confirm(){
-				let data = this.addressData;
+				let data = this.addressData
 				if(!data.receiver){
-					this.$util.msg('请填写收货人');
+					this.$util.msg('请填写收货人')
 				}
 				if(data.address =='所在地区'){
-					this.$util.msg('请选择所在地区');
+					this.$util.msg('请选择所在地区')
 				}
 				if(!/(^1[0-9][0-9]{9}$)/.test(data.mobile)){
-					this.$util.msg('请输入正确的手机号码');
-					return;
+					this.$util.msg('请输入正确的手机号码')
+					return
 				}
 				if(this.addType ==1){
 					this.params ={
@@ -142,7 +148,7 @@
 						}
 					this.postAddressData(this.params)	
 				}else{
-					this.params =  this.addressData;
+					this.params =  this.addressData
 					this.postAddressData(this.params)
 				}
 			},
@@ -151,40 +157,47 @@
 				this.UserService.AddressSave(params).then( response=>{
 					this.$util.msg('保存成功',1500,true,'success')
 					this.btnText(false)
+                    console.log('params', params)
+                    if(this.isSelect) {
+                        uni.setStorageSync('selectAddress', response.data)
+                        var pages = getCurrentPages()
+                        var prevPage = pages[pages.length - 2]  //上一个页面	
+                        	prevPage.setData({select:'select'})
+                    }
 					setTimeout(()=>{
-						uni.navigateBack();
+						uni.navigateBack()
 					},2000)
 				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
+					this.$util.msg(error.msg,2000)
 					this.btnText(false)
 				})
 			},
 			btnText(flg){
 				if(flg){
-					this.isConfirm = true;
+					this.isConfirm = true
 					this.buttonText = '保存中...'
 				}else{
-					this.isConfirm = false;
+					this.isConfirm = false
 					this.buttonText = '保存'
 				}
 			},
 			onShouHuoRen(e){
 			   this.addressData.receiver = e.detail.value
-			   this.initInput();
+			   this.initInput()
 			},
 			onMobile(e){
 			   this.addressData.mobile = e.detail.value
-			   this.initInput();
+			   this.initInput()
 			},
 			onTextareaInput(e){
 			   this.addressData.address = e.detail.value
-			   this.initInput();
+			   this.initInput()
 			},
 			initInput(){
-				if(this.addressData.receiver !== "" && this.addressData.mobile !=="" && this.addressData.address !=="" && this.addressData.townId!==""){
-					this.isConfirm =false;
+				if(this.addressData.receiver !== '' && this.addressData.mobile !=='' && this.addressData.address !=='' && this.addressData.townId!==''){
+					this.isConfirm =false
 				}else{
-					this.isConfirm =true;
+					this.isConfirm =true
 				}
 			}
 		},

+ 5 - 7
pages/user/order/components/choiceAddress.vue

@@ -6,15 +6,15 @@
 			 	<text>添加收货地址</text><text class="iconfont icon-tianjiadizhi"></text>
 			</view>
 		 	<view class="address-content" v-else>
+                <view class="address-icon">
+                	<text class="iconfont icon-shouhuodizhi1"></text>
+                </view>
 		 		<view class="address-cen">
 		 			<view class="top">
 		 				<view class="name">{{addressData.receiver !== undefined ? addressData.receiver : ''}}</view>
 		 				<view class="mobile">{{addressData.mobile !== undefined ? addressData.mobile : ''}}</view>
 		 			</view>
 		 			<view class="address">
-						<view class="address-icon">
-							<text class="iconfont icon-shouhuodizhi1"></text>
-						</view>
 						<view class="address-text">
 							{{addressData.province !== undefined ? addressData.province : ''}}
 							{{addressData.city !== undefined ? addressData.city : ''}}
@@ -32,7 +32,7 @@
 
 <script>
 	export default{
-		name:"address",
+		name:'address',
 		props:{
 			addressData:{
 				type:Object
@@ -62,7 +62,7 @@
 			initData(res) {
 				if(Object.keys(res).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
@@ -128,8 +128,6 @@
 			height: auto;
 			position: relative;
 			.top{
-				padding-left: 50rpx;
-				height: 42rpx;
 				line-height: 42rpx;
 				text-align: left;
 				font-size: $font-size-30;

+ 132 - 0
pages/user/order/components/countUp.vue

@@ -0,0 +1,132 @@
+<template>
+    <view class="number-box">
+        <block v-for="(myIndex, index) in indexArr" :key="index">
+            <swiper
+                class="swiper"
+                vertical="true"
+                :current="myIndex"
+                circular="true"
+                v-bind:style="{
+                    color: color,
+                    width: myIndex == 10 ? '7px' : width + 'rpx',
+                    height: height + 'rpx',
+                    fontSize: fontSize + 'rpx'
+                }"
+            >
+                <swiper-item><view class="swiper-item">0</view></swiper-item>
+                <swiper-item><view class="swiper-item">1</view></swiper-item>
+                <swiper-item><view class="swiper-item">2</view></swiper-item>
+                <swiper-item><view class="swiper-item">3</view></swiper-item>
+                <swiper-item><view class="swiper-item">4</view></swiper-item>
+                <swiper-item><view class="swiper-item">5</view></swiper-item>
+                <swiper-item><view class="swiper-item">6</view></swiper-item>
+                <swiper-item><view class="swiper-item">7</view></swiper-item>
+                <swiper-item><view class="swiper-item">8</view></swiper-item>
+                <swiper-item><view class="swiper-item">9</view></swiper-item>
+                <swiper-item><view class="swiper-item">.</view></swiper-item>
+            </swiper>
+        </block>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        num: [String, Number],
+        color: {
+            type: String,
+            default: '#000000'
+        },
+        width: {
+            type: String,
+            default: '15'
+        },
+        height: {
+            type: String,
+            default: '15'
+        },
+        fontSize: {
+            type: String,
+            default: '15'
+        }
+    },
+    data() {
+        return {
+            indexArr: []
+        }
+    },
+    created() {
+        let { num } = this
+        console.log('初始数据', num)
+        let arr = new Array(num.toString().length)
+        arr.fill(0)
+        this.indexArr = arr
+    },
+    watch: {
+        num: function(val, oldVal) {
+            // 处理新老数据长度不一样的情况
+            let arr = Array.prototype.slice.apply(this.indexArr)
+            let newLen = val.toString().length
+            let oldLen = oldVal.toString().length
+            if (newLen > oldLen) {
+                for (let i = 0; i < newLen - oldLen; i++) {
+                    arr.push(0)
+                }
+                this.indexArr = arr
+            }
+            if (newLen < oldLen) {
+                for (let i = 0; i < oldLen - newLen; i++) {
+                    arr.pop()
+                }
+                this.indexArr = arr
+            }
+            this.numChange(val)
+        }
+    },
+    mounted() {
+        //定时器作用:app显示数字滚动
+        this._time = setTimeout(() => {
+            this.numChange(this.num)
+            clearTimeout(this.time)
+        }, 50)
+    },
+    methods: {
+        /**
+         * 数字改变
+         * @value 数字
+         */
+        numChange(num) {
+            let { indexArr } = this
+            let copyIndexArr = Array.prototype.slice.apply(indexArr)
+            let _num = num.toString()
+            for (let i = 0; i < _num.length; i++) {
+                if (_num[i] === '.') {
+                    copyIndexArr[i] = 10
+                } else {
+                    copyIndexArr[i] = Number(_num[i])
+                }
+            }
+            this.indexArr = copyIndexArr
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.number-box {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+}
+.swiper {
+    position: relative;
+}
+.swiper:after {
+    content: '';
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+}
+</style>

+ 21 - 45
pages/user/order/components/details/goodsList.vue

@@ -4,48 +4,31 @@
 		<view class="goods-list">
 			<view v-for="(item, index) in list" :key="index" class="goods-item clearfix">
 				<view class="shoptitle">
-					<view class="title-text" v-if="information.secondHandOrderFlag == 1"
+<!-- 					<view class="title-text" v-if="information.secondHandOrderFlag == 1"
 						>{{ item.shopName }}
-					</view>
-					<view class="title-text" v-else @click="goShophome(item)">
+					</view> -->
+					<view class="title-text" @click="goShophome(item)">
 						{{ item.shopName }} <label class="iconfont icon-jinrudianpu"></label>
 					</view>
 				</view>
-				<view class="productlist" v-for="(pros, idx) in item.orderProductList" :key="idx">
-					<view class="goods-pros-t " @click="details(pros)">
+				<view class="productlist" v-for="(i, o) in item.orderProductList" :key="o">
+					<view class="goods-pros-t " @click="details(i)">
 						<view class="pros-left">
 							<view class="pros-img">
-								<image :src="pros.image" alt="" />
+								<image :src="i.image" alt="" />
 							</view>
 						</view>
 						<view class="pros-product">
-							<view class="producttitle">{{ pros.name }}</view>
-							<view class="productspec product-view" v-if="pros.productCategory != 2"
-								>规格:{{ pros.productUnit ? pros.productUnit : '' }}</view
+							<view class="producttitle">{{ i.name }}</view>
+							<view class="productspec product-view" v-if="i.productCategory != 2"
+								>规格:{{ i.productUnit ? i.productUnit : '' }}</view
 							>
 							<view class="product-view">
-								<view class="view-num red">¥{{ pros.price | NumFormat }}</view>
-								<view class="view-num right">x {{ pros.num }}</view>
+								<view class="view-num red">¥{{ i.price | NumFormat }}</view>
+								<view class="view-num right">x {{ i.num }}</view>
 							</view>
 						</view>
 					</view>
-					<!-- <view class=" product-info clearfix"> 
-						<view class="product-view" v-if="pros.returnedNum > 0 || pros.actualCancelNum > 0">
-							<view class="view-num">已退货/已取消:<text class="text">{{ pros.returnedNum }}/{{ pros.actualCancelNum }}</text></view>
-						</view>
-						<view class="product-view" v-if="pros.svipPriceType != 1">
-							<view class="view-num">折扣:<text class="text">{{ pros.discount == null ? '0' : pros.discount }}%</text></view>
-						</view>
-						<view class="product-view">
-							<view class="view-num">税率:<text class="text">{{ pros.taxRate }}%</text></view>
-						</view>
-						<view class="product-view">
-							<view class="view-num">折后单价:<text class="text">¥{{ pros.discountPrice | NumFormat }}</text></view>
-						</view>
-						<view class="product-view allPrice">
-							<view class="view-num">合计:<text class="text">¥{{ pros.totalFee | NumFormat }}</text></view>
-						</view>
-					</view> -->
 				</view>
 				<view class="goods-pros-m" v-if="item.note">
 					<view class="m-text">留言:</view>
@@ -54,15 +37,19 @@
 					</view>
 				</view>
 				<view class="goods-pros-b clearfix">
-					<view class="pros-price-view" v-if="item.isHandelShow">
+					<view class="pros-price-view">
 						<view class="price-view-le">商品总额:</view>
 						<view class="price-view-ri">¥{{ item.totalAmount | NumFormat }}</view>
 					</view>
-					<view class="pros-price-view" v-if="item.isHandelShow">
+                    <view class="pros-price-view" @click="popupShow = true">
+                    	<view class="price-view-le">运费:</view>
+                    	<view class="price-view-ri">{{ item.postageInfo }}</view>
+                    </view>
+					<view class="pros-price-view">
 						<view class="price-view-le">应付金额:</view>
 						<view class="price-view-ri">¥{{ item.realPay | NumFormat }}</view>
 					</view>
-					<view class="pros-price-view" v-if="item.isHandelShow">
+					<view class="pros-price-view">
 						<view class="price-view-le">已付金额:</view>
 						<view class="price-view-ri">¥{{ item.receiptAmount | NumFormat }}</view>
 					</view>
@@ -70,12 +57,6 @@
 						<view class="price-view-le">待付金额:</view>
 						<view class="price-view-ri red">¥{{ item.obligation | NumFormat }}</view>
 					</view>
-					<view class="pros-price-btn">
-						<view class="btn" @click="handelShowDetails(item)">
-							{{ item.isHandelShow ? '收起' : '查看更多' }}
-							<text class="iconfont" :class="item.isHandelShow ? 'icon-xiangshangjiantou' : 'icon-xiangxiajiantou'"></text>
-						</view>
-					</view>
 				</view>
 			</view>
 		</view>
@@ -87,7 +68,7 @@ export default {
 	name: 'goods',
 	props: {
 		shopOrderData: {
-			type: Array
+			type: Object
 		},
 		information: {
 			type: Object
@@ -122,13 +103,7 @@ export default {
 		async initGetStotage(data) {
 			const userInfo = await this.$api.getStorage()
 			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
-			this.list = data.map((el,index)=>{
-				el.isHandelShow = false
-				return el
-			})
-		},
-		handelShowDetails(item){
-			item.isHandelShow = !item.isHandelShow
+			this.list = [data]
 		},
 		goShophome(shop) {
 			if(shop.shopType === 2){
@@ -346,6 +321,7 @@ export default {
 				-webkit-box-orient: vertical;
 				-webkit-line-clamp: 1;
 				overflow: hidden;
+                margin-bottom: 25rpx;
 			}
 			.productprice {
 				height: 48rpx;

+ 3 - 5
pages/user/order/components/details/orderAddress.vue

@@ -3,15 +3,15 @@
 		 <!-- 地址信息 -->
 		 <view class="address-section">
 		 	<view class="address-content">
+                <view class="address-icon">
+                	<text class="iconfont icon-shouhuodizhi1"></text>
+                </view>
 				<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-shouhuodizhi1"></text>
-						</view>
 						<view class="address-text">
 							{{addressData.province ? addressData.province : ''}}
 							{{addressData.city ? addressData.city : ''}}
@@ -113,8 +113,6 @@
 			height: auto;
 			position: relative;
 			.top{
-				padding-left: 50rpx;
-				height: 42rpx;
 				line-height: 42rpx;
 				text-align: left;
 				font-size: $font-size-30;

+ 9 - 10
pages/user/order/components/details/orderButton.vue

@@ -5,7 +5,7 @@
 			<!-- <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 === 1" @click.stop="btnConfirm('upload',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>
 				分享订单
@@ -48,13 +48,12 @@
 				btnState:this.initStatus(),
 				isIphoneX:this.$store.state.isIphoneX,
 				mapStateArr:[
-					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
-					{label:'isDelete',val:[6],status: true},
-					{label:'isCancel',val:[0,111],status: true},
-					{label:'isConfirm',val:[33],status: true},
-					{label:'isConfirmation',val:[0],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],status: true},
-					{label:'isUpload',val:[11,12,13,21,22,23,111],status: true},
+					{ 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 }
 				]
 			}
 		},
@@ -104,7 +103,7 @@
 			btnConfirm(type,order){
 				let data = {
 						type:type,
-						orderId:order.orderId,
+						orderId:order.shopOrderId,
 						order:order
 					}
 				this.$emit('buttonConfirm',data)
@@ -121,7 +120,7 @@
 		bottom: 0;
 		left: 0;
 		background: #FFFFFF;
-		z-index: 99999;
+		// z-index: 99999;
 		.button-content{
 			padding:0 24rpx;
 			height: auto;

+ 19 - 44
pages/user/order/components/details/orderInformation.vue

@@ -5,55 +5,17 @@
 			<view class="information-view title">
 				<view class="view-num">
 					<view class="bage-text">
-						订单编号:<label class="label">{{ orderData.orderNo ? orderData.orderNo : '' }}</label>
+						订单编号:<label class="label">{{ orderData.shopOrderNo ? orderData.shopOrderNo : '' }}</label>
 					</view>
 				</view>
 			</view>
-			<view class="information-view same">
-				<view class="view-num bold">
-					订单标识:<label class="label">{{ orderData.orderMark ? orderData.orderMark : '' }}</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">
-				<view class="view-num">
-					订单总额:<label class="label">¥{{ orderData.payTotalFee | NumFormat }}</label>
-				</view>
-			</view>
-			<template v-if="openShowflag">
-				<view class="information-view">
-					<view class="view-num">
-						待付金额:<text class="red">¥{{ orderData.pendingPayments | NumFormat }}</text>
-					</view>
-					<view class="view-man"></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>
-				<view class="information-view none">
-					<view class="view-num">
-						运费:<label class="label">{{ orderData.postageInfo }}</label>
-					</view>
-				</view>
-			</template>
-		</view>
-		<view class="openinfo" v-if="infoflag">
-			<view class="btnInfo" @click="openShow">
-				查看更多 <text class="iconfont icon-xiangxiajiantou"></text>
-			</view>
 		</view>
+        <view class="boundary"></view>
 	</view>
 </template>
 
@@ -149,17 +111,18 @@ export default {
 	height: auto;
 	background: #ffffff;
 	float: left;
-	margin-top: 24rpx;
+    position: relative;
 	.information-content {
-		width: 702rpx;
+		width: 100%;
 		padding: 15rpx 24rpx 20rpx 24rpx;
+        box-sizing: border-box;
 		.information-view {
 			height: 50rpx;
 			line-height: 50rpx;
 			font-size: $font-size-24;
 			margin: 4rpx 0;
 			// display: flex;
-			width: 55%;
+			width: 100%;
 			display: inline-block;
 			&.same {
 				width: 45%;
@@ -178,8 +141,12 @@ export default {
 				// flex: 1;
 				color: $text-color;
 				color: #999999;
+                width: 100%;
+                display: flex;
+                justify-content: space-between;
 				.label {
-					color: #666666;
+                    color: #333333;
+                    font-size: 26rpx;
 				}
 			}
 			.view-num.title {
@@ -263,6 +230,14 @@ export default {
 			}
 		}
 	}
+    .boundary {
+        position: absolute;
+        top: 0;
+        width: 702rpx;
+        left: 24rpx;
+        height: 1rpx;
+        background: #E1E1E1;
+    }
 }
 .openinfo {
 	width: 100%;

+ 237 - 237
pages/user/order/components/details/orderListButton.vue

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

+ 1 - 1
pages/user/order/components/details/paymentRecord.vue

@@ -53,7 +53,7 @@
 		},
 		methods:{
 			initData(res) {
-				if(res!=''){
+				if(res.length > 0){
 					this.isEmpty = false
 					this.paymentData = res
 				}else{

+ 3 - 3
pages/user/order/components/details/refundRecord.vue

@@ -20,7 +20,7 @@
 
 <script>
 	export default{
-		name:"refund",
+		name:'refund',
 		props:{
 			returnedPurchaseList:{
 				type:Array
@@ -43,11 +43,11 @@
 		},
 		methods:{
 			initData(res) {
-				if(res!=''){
+				if(res.length > 0){
 					this.isEmpty = true
 				}else{
 					this.isEmpty = false
-					this.refundData = res;
+					this.refundData = res
 				}
 			},
 		}

+ 4 - 3
pages/user/order/components/details/voucherRecord.vue

@@ -3,11 +3,11 @@
 		<!-- 支付凭证 -->
 		<view class="record-content">
 			<view class="record-title">线下支付凭证</view>
-			<view class="record-list" v-for="(item,index) in voucherList">
+			<view class="record-list" v-for="(item,index) in voucherList" :key="index">
 				<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__item" @click.stop="previewImg(image.img)" v-for="(image, i) in item.imgs" :key="i">
 							<view class="tui-goods__imgbox">
 								<image :src="image.img" mode="" class="tui-goods__img"></image>
 							</view>
@@ -24,7 +24,7 @@
 
 <script>
 	export default{
-		name:"refund",
+		name:'refund',
 		props:{
 			list:{
 				type:Array
@@ -37,6 +37,7 @@
 			}
 		},
 		created(){
+            console.log(this.list)
 			this.initData(this.list)
 		},
 		computed: {

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

@@ -0,0 +1,298 @@
+<template>
+    <view class="freight">
+        <view class="freight-switch">
+            <view class="freight-switch-title">运费</view>
+            <view class="freight-switch-fee" v-if="postAgeFlag(0)"><text>包邮</text></view>
+            <view class="freight-switch-fee" v-if="postAgeFlag(1)">
+                <text>{{ freightText }}</text>
+                <text
+                    class="cell-more iconfont icon-xiangyou"
+                    v-if="infoData.designatedFlag !== 1"
+                    @click="showPopup"
+                ></text>
+            </view>
+            <view class="freight-switch-fee" v-if="postAgeFlag(2)"><text>到付</text></view>
+        </view>
+        <tui-bottom-popup :radius="true" :show="popupShow">
+            <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="#F3B574"
+                            :id="item.name"
+                            :value="item.name"
+                            :checked="item.checked"
+                        ></radio>
+                        <label :for="item.name" class="label">
+                            <text>{{ item.value }}</text>
+                        </label>
+                    </label>
+                </radio-group>
+                <view class="freight-form">
+                    <view class="freight-form-item" v-if="infoData.designatedFlag !== 2">
+                        <view>冷链运输费</view>
+                        <view style="position: relative;">
+                            ¥{{ this.infoData.coldChain.toFixed(2) }}
+                            <radio
+                                class="freight-pay"
+                                color="#F3B574"
+                                @click="coldChainChange"
+                                :checked="isCheck"
+                            ></radio>
+                        </view>
+                    </view>
+                    <block>
+                        <view class="freight-form-item" v-if="isCPay">
+                            <view>其他运费</view>
+                            <view>{{ '¥' + postAge().toFixed(2) }}</view>
+                        </view>
+                        <view class="freight-form-item" v-else>
+                            <view>其他运费</view>
+                            <view>到付</view>
+                        </view>
+                    </block>
+                    <view class="freight-form-item">
+                        <view>总运费</view>
+                        <view style="color: #F94B4B;display: flex;">
+                            <view class="" v-if="allPostage === 0">
+                                到付
+                            </view>
+                            <view style="display: flex;" v-else>
+                                ¥
+                                <count-up
+                                    :num="allPostage.toFixed(2)"
+                                    :width="16"
+                                    :height="40"
+                                    :fontSize="28"
+                                    color="#F94B4B"
+                                ></count-up>
+                            </view>
+                        </view>
+                    </view>
+                </view>
+                <view class="freight-btn" @click="fetchPostAge">确定</view>
+            </view>
+        </tui-bottom-popup>
+    </view>
+</template>
+
+<script>
+import CountUp from './countUp.vue'
+export default {
+    props: {
+        ispopupShow: {
+            type: Boolean,
+            default: () => false
+        },
+        goodsData: {
+            type: Array,
+            default: () => []
+        },
+        goodIndex: {
+            type: Number
+        }
+    },
+    components: {
+        CountUp
+    },
+    data() {
+        return {
+            radioItems: [
+                {
+                    value: '不包邮',
+                    name: '0',
+                    checked: true
+                },
+                {
+                    value: '到付',
+                    name: '1'
+                }
+            ],
+            isCPay: true,
+            isCheck: false,
+            infoData: {},
+            freightText: '',
+            popupShow: false
+        }
+    },
+    watch: {
+        goodsData: {
+            handler(val) {
+                this.initData(val[0])
+            },
+            deep: true,
+            immediate: true
+        }
+    },
+    computed: {
+        // 总运费
+        allPostage() {
+            console.log(111)
+            this.freightText =
+                this.postAge() + (this.isCheck ? this.infoData.coldChain : 0) === 0
+                    ? '到付'
+                    : '¥' + (this.postAge() + (this.isCheck ? this.infoData.coldChain : 0)).toFixed(2)
+            return this.postAge() + (this.infoData.isColdChina ? this.infoData.coldChain : 0)
+        },
+        // 合计
+        allPrice() {
+            return Number(this.infoData.originalPrice) + Number(!this.isCPay ? 0 : this.allPostage)
+        }
+    },
+    mounted() {
+    },
+    methods: {
+        // 开启弹窗
+        showPopup() {
+            this.popupShow = true
+            this.$emit('showFreight', true)
+        },
+        postAgeFlag(e) {
+            return JSON.parse(uni.getStorageSync('goodsData'))[this.goodIndex].postageFlag === e
+        },
+        postAge() {
+            if (this.isCPay) return JSON.parse(uni.getStorageSync('goodsData'))[this.goodIndex].postage
+            else return 0
+        },
+        radioChange($event) {
+            console.log('切换运费')
+            this.isCPay = !this.isCPay
+            this.infoData.isColdChina = this.isCheck
+            this.infoData.postageFlag = this.isCPay ? 1 : 2
+        },
+        // 初始化运费组件
+        initData(data) {
+            this.infoData = JSON.parse(JSON.stringify(data))
+            this.isCheck = this.infoData.isColdChina
+            this.infoFreightText(data)
+        },
+        // 设置运费
+        infoFreightText(data) {
+            switch (data.postageFlag) {
+                case 0:
+                    this.freightText = '包邮'
+                    this.infoData.postage = 0
+                    this.infoData.postageFlag = data.postageFlag
+                    break
+                case 1:
+                    this.freightText = '¥' + (this.infoData.postage + this.infoData.coldChain)
+                    // this.infoData.postage = this.freightText
+                    this.infoData.postageFlag = data.postageFlag
+                    break
+                case 2:
+                    this.freightText = '到付'
+                    this.infoData.postage = 0
+                    this.infoData.postageFlag = data.postageFlag
+                    break
+            }
+        },
+        // 是否选择冷链费
+        coldChainChange() {
+            this.isCheck = !this.isCheck
+            this.freightText = this.isCheck ? this.allPostage : this.infoData.postage
+            this.infoData.isColdChina = this.isCheck
+        },
+
+        // 运费参数
+        fetchPostAge() {
+            this.$emit('changeFreight', [this.goodIndex, this.infoData, this.allPostage])
+            this.popupShow = false
+            this.$emit('showFreight', false)
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.freight {
+    position: relative;
+}
+.freight-switch {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    width: 100%;
+    box-sizing: border-box;
+    background-color: white;
+    padding: 24rpx 0;
+    .freight-switch-title {
+        color: #333333;
+        font-size: 28rpx;
+        font-weight: bold;
+    }
+    .freight-switch-fee {
+        color: #333333;
+        font-size: 28rpx;
+    }
+}
+.all-price {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    flex-direction: row-reverse;
+    width: 100%;
+    padding-bottom: 24rpx;
+    font-size: 28rpx;
+    background-color: #ffffff;
+    box-sizing: border-box;
+    .all-price-content {
+        display: flex;
+    }
+    .price {
+        color: #f94b4b;
+    }
+}
+.iconfont {
+    font-size: 32rpx !important;
+    margin-left: 15rpx;
+}
+.freight-title {
+    color: #333333;
+    font-size: 32rpx;
+    text-align: center;
+    margin: 50rpx 0 80rpx 0;
+}
+.freight-content {
+    box-sizing: border-box;
+    padding: 0 50rpx;
+    radio {
+        margin-right: 8rpx;
+    }
+    .label {
+        color: #666666;
+        font-size: 28rpx;
+        margin-right: 102rpx;
+    }
+    .freight-btn {
+        height: 90rpx;
+        background: #f3b574;
+        border-radius: 45rpx 45rpx 45rpx 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: 95%;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-bottom: 24rpx;
+        color: #666666;
+        font-size: 28rpx;
+    }
+}
+.freight-pay {
+    position: absolute;
+    right: -60%;
+    transform: scale(0.7);
+}
+</style>

+ 3 - 1
pages/user/order/components/freight.vue

@@ -102,6 +102,7 @@ export default {
 		},
 		infoFreightText(data) {
 			//仅其他供应商商品设置运费
+            console.log(data.postageFlag)
 			switch (data.postageFlag) {
 				case 0:
 					this.freightText = '包邮'
@@ -112,12 +113,13 @@ export default {
 					this.freightText = '¥'+ data.postage.toFixed(2)
 					this.postageFlag = data.postageFlag
 					break
-				case -1:
+				case 2:
 					this.freightText = '到付'
 					this.postageFlag = data.postageFlag
 					this.freightData.freight = 0
 					break
 			}
+            console.log('freightText', this.freightText)
 		},
 		checkedBalabce() {
 			//勾选是否使用冷链运输费

+ 325 - 287
pages/user/order/components/goodsList.vue

@@ -1,296 +1,334 @@
 <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 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="" />
-						</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 class="goods-template">
+        <!-- 商品列表 -->
+        <view class="goods-list">
+            <view v-for="(item, index) in goodsCloneData" :key="index" class="goods-item">
+                <view class="shoptitle">
+                    <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="" /></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>	
-					</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">合计:<text class="money">¥{{ item.totalPrice | NumFormat }}</text></view>
-				</view>
-			</view>
-		</view>	
-	</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>
+                    </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>
+                <freight-popup
+                    ref="freight"
+                    :goodIndex="index"
+                    :goodsData="[item]"
+                    :ispopupShow="ispopupShow"
+                    @show-freight="showFreight"
+                    @change-freight="changeFreight"
+                ></freight-popup>
+                <view class="goods-pros-b">
+                    <view class="sum">
+                        <text>合计:</text>
+                        <text class="money">¥</text>
+                        <count-up
+                            :num="item.totalPrice.toFixed(2)"
+                            :width="16"
+                            :height="40"
+                            :fontSize="28"
+                            color="#F94B4B"
+                        ></count-up>
+                    </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)
-			}
-		},
-	}
+import FreightPopup from './freight-popup.vue'
+import CountUp from './countUp.vue'
+export default {
+    name: 'goods',
+    props: {
+        goodsData: {
+            type: Array
+        }
+    },
+    components: {
+        FreightPopup,
+        CountUp
+    },
+    data() {
+        return {
+            remark: [],
+            vipFlag: 0,
+            ispopupShow: false, // 运费选择弹窗
+            allPrice: 0,
+            goodsCloneData: []
+        }
+    },
+    created() {},
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        }
+    },
+    watch: {
+        goodsData: {
+            handler: function(el) {
+                //监听对象的变换使用 function,箭头函数容易出现this指向不正确
+                this.goodsCloneData = el
+            },
+            deep: true,
+            immediate: true
+        }
+    },
+    computed: {},
+    methods: {
+        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)
+        },
+        showFreight($event) {
+            this.ispopupShow = $event
+        },
+        // 修改运费弹窗
+        changeFreight($event) {
+            this.goodsCloneData[$event[0]] = $event[1]
+            this.goodsCloneData[$event[0]].totalPrice = this.goodsCloneData[$event[0]].originalPrice + $event[2]
+            this.goodsCloneData[$event[0]].postage = $event[1].postageFlag === 2 ? 0 : $event[1].postage
+            this.$emit('handleGoodList', this.goodsCloneData)
+            console.log('goodsCloneData', this.goodsCloneData)
+        }
+    }
+}
 </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;
-				}
-			}
-			.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;
-					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;
-						}
-					}
-				}
-			}
-			.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;
-					}
-				}
-			}
-		}
-	}
+.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;
+            }
+        }
+        .productlist {
+            width: 100%;
+            height: auto;
+        }
+        .goods-pros-t {
+            display: flex;
+            width: 100%;
+            height: auto;
+            padding: 12rpx 0;
+            .pros-img {
+                width: 210rpx;
+                height: 100%;
+                border-radius: 10rpx;
+                margin: 0 26rpx 0 0;
+                position: relative;
+                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 {
+                color: #999999;
+                text-overflow: ellipsis;
+                display: -webkit-box;
+                word-break: break-all;
+                -webkit-box-orient: vertical;
+                -webkit-line-clamp: 1;
+                overflow: hidden;
+                margin: 8rpx 0 24rpx 0;
+            }
+            .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;
+                    }
+                }
+            }
+        }
+        .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>

+ 755 - 776
pages/user/order/create-order.vue

@@ -1,50 +1,57 @@
 <template>
-	<view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '200rpx' : '164rpx' }">
-		<!-- 地址选择 -->
-		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData" />
-		<!-- 商品 -->
-		<goods-list ref="goods" v-if="isRequest" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList" />
-		<!-- 发票信息 -->
-		<cm-invice-popup
-			ref="invoice"
-			v-if="isRequest"
-			:invoiceDatas="invoiceData"
-			@handleChoiceaInvoice="handleChoiceaInvoiceData"
-		/>
-		<!-- 运费 -->
-		<freight ref="freight" v-if="isFreight" :freightData="freightData" :coldChain="handleColdChain" @confirmFreight="hanldFreightFn" />
-		<freight-alert v-if="isfreightTip" ref="csPhone" />
-		<!-- 底部 -->
-		<view class="footer-wrapper" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
-			<view class="footer">
-				<view class="footer-le">
-					<view class="footer-count">
-						<text>共{{ totalCount }}件商品</text>
-					</view>
-					<view class="footer-price">
-						<view class="sum none">
-							总价:<text class="price">¥{{ orderShouldPayFee | NumFormat }}</text>
-						</view>
-					</view>
-				</view>
-				<view class="footer-submit" @click.stop="orderSubmitMit">
-					<view class="btn" :class="isSubLoading ? 'disabled' : ''">提交订单</view>
-				</view>
-			</view>
-		</view>
-		<!-- 提示弹窗 -->
-		<tui-modal
-			:show="showModal"
-			@click="handleClick"
-			@cancel="hideMobel"
-			:content="contentModalText"
-			:button="modalButton"
-			color="#333"
-			:size="28"
-			shape="circle"
-			:maskClosable="false"
-		></tui-modal>
-	</view>
+    <view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '200rpx' : '164rpx' }">
+        <!-- 地址选择 -->
+        <choice-address ref="choiceAddress" v-if="isRequest" :addressData="addressData" />
+        <!-- 商品 -->
+        <goods-list
+            ref="goods"
+            v-if="isRequest"
+            :goodsData="goodsData"
+            @handleGoodList="handChangeInputGoodsList"
+            :freightData="freightData"
+            :coldChain="handleColdChain"
+            @show-freight="showFreight"
+        />
+        <!-- <freight-alert v-if="isfreightTip" ref="csPhone" /> -->
+        <!-- 发票信息 -->
+        <cm-invice-popup
+            ref="invoice"
+            v-if="isRequest"
+            :invoiceDatas="invoiceData"
+            @handleChoiceaInvoice="handleChoiceaInvoiceData"
+        />
+        <!-- 底部 -->
+        <view class="footer-wrapper" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+            <view class="footer">
+                <view class="footer-le">
+                    <view class="footer-count">
+                        <text>共{{ totalCount }}件商品</text>
+                    </view>
+                    <view class="footer-price">
+                        <view class="sum none">
+                            总价:
+                            <text class="price">¥{{ orderShouldPayFee | NumFormat }}</text>
+                        </view>
+                    </view>
+                </view>
+                <view class="footer-submit" @click.stop="orderSubmitMit">
+                    <view class="btn" :class="isSubLoading ? 'disabled' : ''">提交订单</view>
+                </view>
+            </view>
+        </view>
+        <!-- 提示弹窗 -->
+        <tui-modal
+            :show="showModal"
+            @click="handleClick"
+            @cancel="hideMobel"
+            :content="contentModalText"
+            :button="modalButton"
+            color="#333"
+            :size="28"
+            shape="circle"
+            :maskClosable="false"
+        ></tui-modal>
+    </view>
 </template>
 <script>
 import { mapState, mapMutations } from 'vuex'
@@ -53,753 +60,725 @@ import goodsList from './components/goodsList'
 import cmInvicePopup from './components/cm-invice-popup'
 import freight from './components/freight'
 import freightAlert from '@/components/cm-module/modelAlert/freightAlert'
+import FreightPopup from './components/freight-popup.vue'
 export default {
-	components: {
-		choiceAddress,
-		goodsList,
-		cmInvicePopup,
-		freight,
-		freightAlert
-	},
-	data() {
-		return {
-			skeletonShow: true,
-			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 继续提交
-				orderSource: 6, // 订单来源 1WWW 6小程序[采美,星范]
-				addressId: 0, // 收货地址Id
-				clubCouponId: 0, // 关联优惠券Id
-				clubId: 0, // 机构Id
-				orderInfo: [], // 订单商品数据
-				orderInvoice: { type: 0 }, // 订单发票信息
-				payInfo: {
-					// 订单金额数据
-					isColdChina:1, //是否勾选冷链费	
-					orderShouldPayFee: 0, // 订单最终支付金额
-					balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
-					clauseId: 0, // 条款Id
-					postage: 0, // 运费金额
-					postageFlag: 0, // 运费类型
-					userBeans: 0, // 抵扣采美豆数量
-					rebateFlag: 0 // 是否返佣订单
-				},
-				unionId: uni.getStorageSync('unionId') // 用户unionId
-			}, // 提交订单参数
-			productIds: '', // 获取上一级页面商品信息
-			submitState: '', // 提交状态
-			totalCount: 1, // 订单提交总数量
-			allPrice: 0.0, // 订单总金额
-			orderShouldPayFee: 0, // 订单最终支付金额
-			isRequest: false, // 是否加载完成渲染子组件
-			isFreight: false, // 是否加载完成渲染子组件
-			isAddress: false, // 是否加载完成地址
-			isExchangePopup: false, // 控制兑换优惠券弹窗
-			isfreightTip: false, // 控制邮费弹窗
-			designatedFlag: '', // 是否为指定商品 1.仅为指定商品 2.仅为供应商商品 3.指定商品+供应商商品
-			hanldFreePostFlag: '', // 邮费状态
-			hanldFreight: '', // 邮费
-			addressData: {}, // 初始化地址信息
-			goodsData: [], // 初始化商品信息
-			couponList: [], // 初始化优惠券信息
-			invoiceData: { type: 0 }, // 初始化发票信息
-			freightData: {}, // 邮费数据
-			orderInfo: [], // 提交的商品信息
-			handleColdChain:0,// 指定商品冷链费
-			freightColdChain: 0, // 存储冷链费
-			contentModalText: '采购金额过小,将扣除500采美豆,建议您前往采美旗下“颜选美学”小程序购买小额商品。', //操作文字提示语句
-			modalButton: [
-				{
-					text: '前往颜选美学',
-					type: 'gray',
-					plain: true //是否空心
-				},
-				{
-					text: '继续提交',
-					customStyle: {
-						color: '#fff',
-						bgColor: 'linear-gradient(90deg, #F28F31 0%, #F3B574 100%)'
-					},
-					plain: false
-				}
-			],
-			showModal: false,
-			showModalstauts: 0
-		}
-	},
-	onLoad(option) {
-		//商品数据
-		this.initCreateOrderInfo(option)
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
-	methods: {
-		async initCreateOrderInfo(option) {
-			const data = JSON.parse(option.data)
-			const userInfo = await this.$api.getStorage()
-			this.productParam.userId = this.cartParam.userId = userInfo.userId
-			this.supportParm.userId = this.postageParam.userId = userInfo.userId
-			this.confirmParam.clubId = userInfo.clubId
-			switch (option.type) {
-				case '1': // 商品详情立即购买
-					this.confirmParam.cartType = 2
-					this.productParam.productCount = data.data.productCount
-					this.productParam.productId = data.data.productIds
-					this.productParam.skuId = data.data.skuId
-					this.productIds = data.data.productIds
-					this.GetProductCreateOrderInfo()
-					break
-				case '2': // 购物车结算
-					this.confirmParam.cartType = 1
-					this.confirmType = 2
-					this.cartParam.skuIds = data.data.skuIds
-					this.CartCreateOrderInfo()
-					break
-				case '3': // 组合商品立即购买
-					this.confirmParam.cartType = 2
-					this.confirmType = 2
-					this.supportParm.productInfo = JSON.stringify(data.data)
-					this.GetOrderClubProductSupporting()
-			}
-		},
-		// 商品立即购买确认订单数据初始化
-		async GetProductCreateOrderInfo() {
-			try {
-				const res = await this.OrderService.ProductCreateOrderInfo(this.productParam)
-				this.setCreatDataInfo(res.data)
-			} catch (error) {
-				console.log('商品立即购买订单初始化异常')
-			}
-		},
-		// 组合商品立即购买确认订单数据初始化
-		async GetOrderClubProductSupporting() {
-			try {
-				const res = await this.OrderService.OrderClubProductSupporting(this.supportParm)
-				this.setCreatDataInfo(res.data)
-			} catch (error) {
-				console.log('组合商品立即购买订单初始化异常')
-			}
-		},
-		// 购物车去结算确认订单数据初始化
-		async CartCreateOrderInfo() {
-			try {
-				const res = await this.OrderService.CartCreateOrderInfo(this.cartParam)
-				this.setCreatDataInfo(res.data)
-			} catch (error) {
-				console.log('购物车结算订单初始化异常')
-			}
-		},
-		// 公共初始化数据
-		setCreatDataInfo(data) {
-			this.isRequest = true
-			this.goodsData = data.list
-			this.couponList = data.couponList
-			this.handleColdChain = this.freightColdChain = data.coldChain
-			this.userMoney = data.userMoney
-			this.totalCount = data.totalCount
-			this.allPrice = data.totalPrice
-			this.orderShouldPayFee = this.allPrice
-			this.postageParam.skuIds = this.getProductIds(data.list)
-			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(',')
-		},
-		// 获取邮费信息
-		async getFreightData() {
-			try {
-				this.isFreight = false
-				const res = await this.OrderService.GetOrderPostage(this.postageParam)
-				const data = res.data
-				this.isFreight = true
-				this.freightData = data
-				this.designatedFlag = data.designatedFlag
-				this.hanldFreePostFlag = data.postageFlag
-				this.hanldFreight = data.postage
-				if(this.designatedFlag === 2){
-					this.confirmParam.payInfo.isColdChina = 0
-				}
-				this.attributePallPrice()
-			} catch (error) {
-				console.log('获取订单运费异常')
-			}
-		},
-		//获取地址信息
-		async getAddressData() {
-			try {
-				const userInfo = await this.$api.getStorage()
-				const res = await this.UserService.QueryAddressList({
-					pageNum: 1,
-					pageSize: 1,
-					userId: userInfo.userId
-				})
-				const data = res.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('error', error)
-			}
-		},
-		//对应供应商的留言信息
-		handChangeInputGoodsList(data) {
-			this.goodsData = data
-		},
-		//获取发票信息
-		handleChoiceaInvoiceData(data) {
-			this.confirmParam.orderInvoice = data
-		},
-		hanldFreightFn(ischecked){//是否勾选冷链费
-			this.confirmParam.payInfo.isColdChina = ischecked ? 1 : 0
-			if(ischecked){
-				this.freightColdChain = this.handleColdChain
-			}else{// 不勾选冷链费计算总价
-				this.freightColdChain = 0
-			}
-			this.attributePallPrice()
-		},
-		// 计算价格
-		attributePallPrice() {
-			switch(this.designatedFlag){
-				case 1://仅为指定商品
-					this.attributeChainfreight()
-					break
-				case 2:// 仅为供应商商品
-					if (this.hanldFreePostFlag == 1) {
-						this.attributeHashfreight(this.freightData.postage)
-					} else {
-						this.attributeNofreight()
-					}
-					break
-				case 3:// 有指定商品 + 供应商商品
-					if (this.hanldFreePostFlag == 1) {
-						this.attributeHashChainfreight(this.freightData.postage)
-					} else {
-						this.attributeChainfreight()
-					}
-					break
-			}
-		},
-		// 计算没有邮费的支付价格
-		attributeNofreight() {
-			this.orderShouldPayFee = this.allPrice
-			console.log('最终订单支付金额', this.orderShouldPayFee)
-		},
-		// 计算仅为指定商品冷链费的价格
-		attributeChainfreight(){
-			this.orderShouldPayFee = this.allPrice + this.freightColdChain
-			console.log('最终订单支付金额', this.orderShouldPayFee)
-		},
-		// 计算指定商品冷链费后+运费的支付价格
-		attributeHashChainfreight(postage){
-			this.orderShouldPayFee = this.allPrice + this.freightColdChain + parseInt(postage)
-			console.log('最终订单支付金额', this.orderShouldPayFee)
-		},
-		// 计算需要邮费的支付价格
-		attributeHashfreight(postage) {
-			this.orderShouldPayFee = this.allPrice + parseInt(postage)  //计算不包邮的价格 总价等于商品价格+邮费
-			console.log('最终订单支付金额', this.orderShouldPayFee)
-		},
-		// 提交订单按钮点击事件
-		orderSubmitMit() {
-			this.handleClickOrderSubmitMit()
-		},
-		// 提交订单
-		handleClickOrderSubmitMit() {
-			if (this.isSubLoading) {
-				return
-			}
-			if (this.confirmParam.addressId === 0) {
-				this.$util.msg('请先添加收货地址~', 2000)
-				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.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)
-			this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
-			console.log(this.confirmParam)
-			this.isSubLoading = true
-			this.hanldeOrderSubmit(this.confirmParam)
-		},
-		async hanldeOrderSubmit(params) {
-			// 提交订单
-			try {
-				const res = await this.OrderService.CreatedOrderSubmit(params)
-				const data = res.data
-				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/pay/card-under?orderId=${data.orderId}`)
-						} else {
-							this.$api.redirectTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
-						}
-					}, 2000)
-				}
-			} catch (error) {
-				console.log(error)
-				this.formatConfirmParam()
-				this.isSubLoading = false
-			}
-		},
-		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)
-		},
-		handFreightAlertShow() {
-			//显示邮费弹窗
-			this.isfreightTip = true
-		},
-		handleClick(e) {
-			// 采购量过小提示弹窗
-			if (e.index === 1) {
-				if (this.showModalstauts === 1) {
-					this.showModal = false
-					this.confirmParam.orderMiniType = 1
-					this.handleClickOrderSubmitMit()
-				} else if (this.showModalstauts === 2) {
-					this.showModal = false
-					this.isSubLoading = false
-					this.$api.navigateTo('/pages/login/apply')
-				} else {
-					this.showModal = false
-					this.handleClickHeHeMiniApplet()
-				}
-			} else {
-				if (this.showModalstauts == 1) {
-					this.showModal = false
-					this.handleClickHeHeMiniApplet()
-				} else if (this.showModalstauts === 2) {
-					this.showModal = false
-					this.confirmParam.orderMiniType = 2
-					this.handleClickOrderSubmitMit()
-				} else {
-					this.showModal = false
-				}
-			}
-		},
-		handleClickHeHeMiniApplet() {
-			// 跳转颜选美学小程序
-			uni.navigateToMiniProgram({
-				appId: 'wx2c3b0a7f343235b1',
-				path: '/pages/tabBar/index/index',
-				extraData: {
-					data1: 'test'
-				},
-				envVersion: 'develop',
-				success(res) {
-					// 打开成功
-					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()
-		}
-	}
+    components: {
+        choiceAddress,
+        goodsList,
+        cmInvicePopup,
+        freight,
+        freightAlert,
+        FreightPopup
+    },
+    data() {
+        return {
+            skeletonShow: true,
+            isIphoneX: this.$store.state.isIphoneX,
+            isSubLoading: false,
+            confirmType: 1,
+            orderID: 0,
+            cartParam: {
+                // 购物车立即结算确认订单参数
+                skuIds: 0, // 商品Id(逗号隔开)
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 ,// 用户Id
+                townId: '', // 区域id
+            },
+            productParam: {
+                // 商品立即购买确认订单参数
+                productCount: 0, // 商品数量
+                productId: 0, // 商品Id
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 ,// 用户Id
+                townId: '', // 区域id
+            },
+            supportParm: {
+                // 组合商品立即购买确认订单参数
+                productInfo: '',
+                source: 2, // 来源:1WWW 2小程序
+                userId: 0 ,// 用户Id
+                townId: '', // 区域id
+            },
+            postageParam: {
+                // 邮费计算参数
+                skuIds: 0, // 商品Id(逗号隔开)
+                userId: 0, // 用户Id
+                townId: 0 // 地区Id
+            },
+            confirmParam: {
+                cartType: 1, // 购买类型:(1自主下单, 3协销下单)
+                orderMiniType: 0, // 订单提交状态 0初始提交 1 继续提交
+                orderSource: 6, // 订单来源 1WWW 6小程序[采美,星范]
+                addressId: 0, // 收货地址Id
+                clubCouponId: 0, // 关联优惠券Id
+                clubId: 0, // 机构Id
+                orderInfo: [], // 订单商品数据
+                orderInvoice: { type: 0 }, // 订单发票信息
+                payInfo: {
+                    // 订单金额数据
+                    orderShouldPayFee: 0, // 订单最终支付金额
+                    balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
+                    clauseId: 0, // 条款Id
+                    postage: '0.00', // 运费金额
+                    postageFlag: 0, // 运费类型
+                    userBeans: 0, // 抵扣采美豆数量
+                    rebateFlag: 0 // 是否返佣订单
+                },
+                unionId: uni.getStorageSync('unionId') // 用户unionId
+            }, // 提交订单参数
+            productIds: '', // 获取上一级页面商品信息
+            submitState: '', // 提交状态
+            totalCount: 1, // 订单提交总数量
+            allPrice: 0.0, // 订单总金额
+            orderShouldPayFee: 0, // 订单最终支付金额
+            isRequest: false, // 是否加载完成渲染子组件
+            isFreight: false, // 是否加载完成渲染子组件
+            isAddress: false, // 是否加载完成地址
+            isExchangePopup: false, // 控制兑换优惠券弹窗
+            isfreightTip: false, // 控制邮费弹窗
+            designatedFlag: '', // 是否为指定商品 1.仅为指定商品 2.仅为供应商商品 3.指定商品+供应商商品
+            hanldFreePostFlag: '', // 邮费状态
+            hanldFreight: '', // 邮费
+            addressData: {}, // 初始化地址信息
+            goodsData: [], // 初始化商品信息
+            goodsCloneData: [], // 初始化商品信息
+            couponList: [], // 初始化优惠券信息
+            invoiceData: { type: 0 }, // 初始化发票信息
+            freightData: {}, // 邮费数据
+            orderInfo: [], // 提交的商品信息
+            handleColdChain: 0, // 指定商品冷链费
+            freightColdChain: 0, // 存储冷链费
+            contentModalText: '采购金额过小,将扣除500采美豆,建议您前往采美旗下“颜选美学”小程序购买小额商品。', //操作文字提示语句
+            modalButton: [
+                {
+                    text: '前往颜选美学',
+                    type: 'gray',
+                    plain: true //是否空心
+                },
+                {
+                    text: '继续提交',
+                    customStyle: {
+                        color: '#fff',
+                        bgColor: 'linear-gradient(90deg, #F28F31 0%, #F3B574 100%)'
+                    },
+                    plain: false
+                }
+            ],
+            showModal: false,
+            showModalstauts: 0,
+            popupShow: false ,// 运费选择弹窗
+            storeOptions: {}, // 上一页商品数据
+        }
+    },
+    onLoad(option) {
+        //商品数据
+        this.storeOptions = option
+        this.initCreateOrderInfo(option)
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        }
+    },
+    methods: {
+        // 运费底部上拉框
+        showFreight($event) {
+            this.popupShow = $event
+        },
+        async initCreateOrderInfo(option) {
+            const data = JSON.parse(option.data)
+            const userInfo = await this.$api.getStorage()
+            this.productParam.userId = this.cartParam.userId = userInfo.userId
+            this.supportParm.userId = this.postageParam.userId = userInfo.userId
+            this.confirmParam.clubId = userInfo.clubId
+            switch (option.type) {
+                case '1': // 商品详情立即购买
+                    this.confirmParam.cartType = 2
+                    this.productParam.productCount = data.data.productCount
+                    this.productParam.productId = data.data.productIds
+                    this.productParam.skuId = data.data.skuId
+                    this.productIds = data.data.productIds
+                    this.getAddressData(userInfo.userId,1)
+                    break
+                case '2': // 购物车结算
+                    this.confirmParam.cartType = 1
+                    this.confirmType = 2
+                    this.cartParam.skuIds = data.data.skuIds
+                    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 GetProductCreateOrderInfo() {
+            try {
+                const res = await this.OrderService.ProductCreateOrderInfo(this.productParam)
+                this.setCreatDataInfo(res.data)
+            } catch (error) {
+                console.log('商品立即购买订单初始化异常')
+            }
+        },
+        // 组合商品立即购买确认订单数据初始化
+        async GetOrderClubProductSupporting() {
+            try {
+                const res = await this.OrderService.OrderClubProductSupporting(this.supportParm)
+                this.setCreatDataInfo(res.data)
+            } catch (error) {
+                console.log('组合商品立即购买订单初始化异常')
+            }
+        },
+        // 购物车去结算确认订单数据初始化
+        async CartCreateOrderInfo() {
+            try {
+                const res = await this.OrderService.CartCreateOrderInfo(this.cartParam)
+                this.setCreatDataInfo(res.data)
+            } catch (error) {
+                console.log('购物车结算订单初始化异常')
+            }
+        },
+        // 公共初始化数据
+        setCreatDataInfo(data) {
+            this.isRequest = true
+            this.goodsData = data.list
+            if(uni.getStorageSync('goodsData')) {
+                uni.removeStorageSync('goodsData')
+            }
+            uni.setStorageSync('goodsData', JSON.stringify(data.list))
+            // console.log(JSON.parse(uni.getStorageSync('goodsData')))
+            this.goodsCloneData = data.list
+            this.couponList = data.couponList
+            this.handleColdChain = this.freightColdChain = data.coldChain
+            this.userMoney = data.userMoney
+            this.totalCount = data.totalCount
+            this.allPrice = data.totalPrice
+            this.orderShouldPayFee = this.allPrice
+        },
+        // 获取订单SKUId列表
+        getProductIds(list) {
+            const skuId = []
+            list.forEach(function(supplier) {
+                supplier.cartList.forEach(function(product) {
+                    skuId.push(product.skuId)
+                })
+            })
+            // console.log(list);
+            return skuId.join(',')
+        },
+        //获取地址信息
+        async getAddressData(userId, type) {
+            try {
+                const userInfo = await this.$api.getStorage()
+                const res = await this.UserService.QueryAddressList({
+                    pageNum: 1,
+                    pageSize: 1,
+                    userId: userId
+                })
+                const data = res.data
+                if (data.list.length > 0) {
+                    this.isAddress = true
+                    this.addressData = {}
+                    this.confirmParam.addressId = data.list[0].addressId
+                    this.productParam.townId = data.list[0].townId
+                    this.cartParam.townId = data.list[0].townId
+                    this.supportParm.townId = data.list[0].townId
+                    this.addressData = data.list[0]
+                }
+                // 根据类型调方法
+                if (type === 1) {
+                    //立即都买提交
+                    this.GetProductCreateOrderInfo()
+                }
+                if (type === 2) {
+                    //购物车提交
+                    this.CartCreateOrderInfo()
+                }
+                if (type === 3) {
+                    //组合商品提交
+                    this.GetOrderClubProductSupporting()
+                }
+            } catch (error) {
+                console.log('error', error)
+            }
+        },
+        //对应供应商的留言信息
+        handChangeInputGoodsList(data) {
+            this.goodsCloneData = data
+            this.orderShouldPayFee = 0
+            data.forEach(i => {
+                this.orderShouldPayFee += i.totalPrice
+            })
+            this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee
+        },
+        //获取发票信息
+        handleChoiceaInvoiceData(data) {
+            this.confirmParam.orderInvoice = data
+        },
+        // 提交订单按钮点击事件
+        orderSubmitMit() {
+            this.handleClickOrderSubmitMit()
+        },
+        // 提交订单
+        handleClickOrderSubmitMit() {
+            if (this.isSubLoading) {
+                return
+            }
+            if (this.confirmParam.addressId === 0) {
+                this.$util.msg('请先添加收货地址~', 2000)
+                return
+            }
+            this.confirmParam.orderInfo = this.goodsCloneData.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 : '',
+                    // postage: el.isColdChina ? (el.postage + el.coldChain).toFixed(2) : el.postage.toFixed(2),
+                    postage: el.postage.toFixed(2),
+                    postageFlag: el.postageFlag,
+                    isColdChina: el.isColdChina ? 1 : 0,
+                    productInfo: productInfo
+                }
+            })
+            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)
+            console.log(this.confirmParam)
+            this.isSubLoading = true
+            this.hanldeOrderSubmit(this.confirmParam)
+        },
+        async hanldeOrderSubmit(params) {
+            // 提交订单
+            try {
+                const res = await this.OrderService.CreatedOrderSubmit(params)
+                const data = res.data
+                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) {
+                console.log(error)
+                this.formatConfirmParam()
+                this.isSubLoading = false
+            }
+        },
+        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)
+        },
+        handFreightAlertShow() {
+            //显示邮费弹窗
+            this.isfreightTip = true
+        },
+        handleClick(e) {
+            // 采购量过小提示弹窗
+            if (e.index === 1) {
+                if (this.showModalstauts === 1) {
+                    this.showModal = false
+                    this.confirmParam.orderMiniType = 1
+                    this.handleClickOrderSubmitMit()
+                } else if (this.showModalstauts === 2) {
+                    this.showModal = false
+                    this.isSubLoading = false
+                    this.$api.navigateTo('/pages/login/apply')
+                } else {
+                    this.showModal = false
+                    this.handleClickHeHeMiniApplet()
+                }
+            } else {
+                if (this.showModalstauts == 1) {
+                    this.showModal = false
+                    this.handleClickHeHeMiniApplet()
+                } else if (this.showModalstauts === 2) {
+                    this.showModal = false
+                    this.confirmParam.orderMiniType = 2
+                    this.handleClickOrderSubmitMit()
+                } else {
+                    this.showModal = false
+                }
+            }
+        },
+        handleClickHeHeMiniApplet() {
+            // 跳转颜选美学小程序
+            uni.navigateToMiniProgram({
+                appId: 'wx2c3b0a7f343235b1',
+                path: '/pages/tabBar/index/index',
+                extraData: {
+                    data1: 'test'
+                },
+                envVersion: 'develop',
+                success(res) {
+                    // 打开成功
+                    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.productParam.townId = SelectData.townId
+            this.cartParam.townId = SelectData.townId
+            this.supportParm.townId = SelectData.townId
+            this.addressData = SelectData
+            if (this.storeOptions.type == 1) {
+                //立即都买提交
+                this.GetProductCreateOrderInfo()
+            }
+            if (this.storeOptions.type == 2) {
+                //购物车提交
+                this.CartCreateOrderInfo()
+            }
+            if (this.storeOptions.type == 3) {
+                //组合商品提交
+                this.GetOrderClubProductSupporting()
+            }
+        }
+    }
 }
 </script>
 
 <style lang="scss">
 page {
-	height: auto;
-	background: #f7f7f7;
+    height: auto;
+    background: #f7f7f7;
 }
 .btn-hover {
-	background: #ffffff;
+    background: #ffffff;
 }
 .animation {
-	/* transition: transform 0.3s ease;*/
-	transition-property: transform;
-	transition-duration: 0.3s;
-	transition-timing-function: ease;
+    /* transition: transform 0.3s ease;*/
+    transition-property: transform;
+    transition-duration: 0.3s;
+    transition-timing-function: ease;
 }
 .order {
-	padding-bottom: 134rpx;
+    padding-bottom: 134rpx;
 }
 .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 {
-			float: left;
-			font-weight: bold;
-		}
-		.balabce-t-ri {
-			float: right;
-			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;
-				}
-			}
-		}
-	}
-	.balabce-b {
-		width: 100%;
-		float: left;
-		overflow: hidden;
-		.balabce-b-text {
-			width: 100%;
-			line-height: 58rpx;
-			font-size: $font-size-24;
-			color: #ff2a2a;
-			text-align: right;
-			float: right;
-		}
-		&.balabce-b--hide {
-			padding: 0 0;
-			height: 0px;
-			line-height: 0px;
-		}
-	}
+    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 {
+            float: left;
+            font-weight: bold;
+        }
+        .balabce-t-ri {
+            float: right;
+            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;
+                }
+            }
+        }
+    }
+    .balabce-b {
+        width: 100%;
+        float: left;
+        overflow: hidden;
+        .balabce-b-text {
+            width: 100%;
+            line-height: 58rpx;
+            font-size: $font-size-24;
+            color: #ff2a2a;
+            text-align: right;
+            float: right;
+        }
+        &.balabce-b--hide {
+            padding: 0 0;
+            height: 0px;
+            line-height: 0px;
+        }
+    }
 }
 .footer-wrapper {
-	position: fixed;
-	left: 0;
-	bottom: 0;
-	background-color: #ffffff;
-	z-index: 990;
-	.footer {
-		display: flex;
-		align-items: center;
-		width: 100%;
-		height: 110rpx;
-		line-height: 110rpx;
-		justify-content: space-between;
-		font-size: $font-size-28;
-		color: $text-color;
-	}
-	.footer-le {
-		width: 570rpx;
-		height: 100%;
-		float: left;
-	}
-	.footer-count {
-		float: left;
-		padding-left: 24rpx;
-		box-sizing: border-box;
-	}
-	.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;
-			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: #ff2a2a;
-			}
-		}
-		.sum {
-			width: 100%;
-			height: 45rpx;
-			line-height: 45rpx;
-			float: left;
-			&.none {
-				height: 90rpx;
-				line-height: 90rpx;
-			}
-			.price {
-				font-size: $font-size-32;
-				color: #ff2a2a;
-			}
-		}
-	}
-	.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: $btn-confirm;
-			font-size: $font-size-26;
-			text-align: center;
-			line-height: 80rpx;
-			border-radius: 40rpx;
-			&.disabled {
-				background: #e4e8eb;
-				color: #999999;
-			}
-		}
-	}
+    position: fixed;
+    left: 0;
+    bottom: 0;
+    background-color: #ffffff;
+    z-index: 990;
+    .footer {
+        display: flex;
+        align-items: center;
+        width: 100%;
+        height: 110rpx;
+        line-height: 110rpx;
+        justify-content: space-between;
+        font-size: $font-size-28;
+        color: $text-color;
+    }
+    .footer-le {
+        width: 570rpx;
+        height: 100%;
+        float: left;
+    }
+    .footer-count {
+        float: left;
+        padding-left: 24rpx;
+        box-sizing: border-box;
+    }
+    .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;
+            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: #ff2a2a;
+            }
+        }
+        .sum {
+            width: 100%;
+            height: 45rpx;
+            line-height: 45rpx;
+            float: left;
+            &.none {
+                height: 90rpx;
+                line-height: 90rpx;
+            }
+            .price {
+                font-size: $font-size-32;
+                color: #ff2a2a;
+            }
+        }
+    }
+    .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: $btn-confirm;
+            font-size: $font-size-26;
+            text-align: center;
+            line-height: 80rpx;
+            border-radius: 40rpx;
+            &.disabled {
+                background: #e4e8eb;
+                color: #999999;
+            }
+        }
+    }
 }
 .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;
-			}
-		}
-	}
+    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>

+ 2 - 2
pages/user/order/order-addpay.vue

@@ -51,7 +51,7 @@ export default {
 			imageList: [],
 			params: {
 				id: 0,
-				orderId: 0,
+				shopOrderId: 0,
 				remarks: '',
 				voucherImgs: ''
 			},
@@ -61,7 +61,7 @@ export default {
 	},
 	onLoad(option) {
 		console.log(option)
-		this.params.orderId = option.orderId
+		this.params.shopOrderId = option.orderId
 	},
 	computed: {
 		disabled() {

+ 34 - 28
pages/user/order/order-details.vue

@@ -19,14 +19,15 @@
 			<order-address ref="orderAddress" v-if="skeletonShow" :addressData="addressData" />
 			<!-- 商品 -->
 			<goods-list ref="goods" v-if="skeletonShow" :shopOrderData="shopOrderData" :information="information" />
+            <!-- <freight-popup :popupShow="popupShow" @show-freight="showFreight"></freight-popup> -->
 			<!-- 订单信息 -->
-			<order-information ref="information" v-if="skeletonShow" :information="information" />
+			<order-information ref="information" v-if="skeletonShow" :information="shopOrderData" />
 			<!-- 发票信息 -->
 			<invoice-tent ref="invoice" v-if="skeletonShow" :orderInvoice="orderInvoice" />
 			<!-- 支付记录 -->
 			<payment-record
 				ref="payment"
-				v-if="skeletonShow && discernReceiptList.length > 0"
+				v-if="skeletonShow && discernReceiptList"
 				:discernReceiptList="discernReceiptList"
 				:receiptAmount="receiptAmount"
 			/>
@@ -38,7 +39,7 @@
 				:returnedPurchaseFee="returnedPurchaseFee"
 			/>
 			<!-- 支付凭证记录 -->
-			<voucher-record ref="voucher" v-if="skeletonShow && voucherList.length > 0" :list="voucherList" />
+			<voucher-record ref="voucher" v-if="skeletonShow && voucherList && voucherList.length > 0" :list="voucherList" />
 			<!-- 底部button -->
 			<order-button
 				ref="orderButton"
@@ -77,6 +78,7 @@ import refundRecord from './components/details/refundRecord' //退款记录
 import voucherRecord from './components/details/voucherRecord' //支付凭证记录
 import orderButton from './components/details/orderButton' //底部按钮
 import shareAlert from '@/components/cm-module/modelAlert/shareAlert.vue' //分享弹窗
+import FreightPopup from './components/freight-popup.vue'
 
 export default {
 	components: {
@@ -89,7 +91,8 @@ export default {
 		refundRecord,
 		voucherRecord,
 		orderButton,
-		shareAlert
+		shareAlert,
+        FreightPopup,
 	},
 	data() {
 		return {
@@ -122,8 +125,8 @@ export default {
 			information: {}, //订单信息初始化
 			shopOrderData: {}, //商品信息初始化
 			orderInvoice: {}, //发票信息初始化
-			returnedPurchaseList: {}, //退款信息初始化
-			discernReceiptList: {}, //支付信息初始化
+			returnedPurchaseList: [], //退款信息初始化
+			discernReceiptList: [], //支付信息初始化
 			voucherList: [], //支付凭证
 			receiptAmount: 0, //支付金额
 			returnedPurchaseFee: 0, //退款金额
@@ -144,7 +147,8 @@ export default {
 					},
 					plain: false
 				}
-			]
+			],
+            popupShow: false,
 		}
 	},
 	onLoad(option) {
@@ -168,11 +172,10 @@ export default {
 			let HtmlText,
 				typeTextObject = {
 					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
+					2: '交易完成',
+					4: '已关闭',
+					5: '交易全退',
+					6: '交易全退',
 					11: '待付款待发货',
 					12: '待付款部分发货',
 					13: '待付款已发货',
@@ -181,8 +184,7 @@ export default {
 					23: '部分付款已发货',
 					31: '已付款待发货',
 					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
+					33: '已付款已发货'
 				}
 			Object.keys(typeTextObject).forEach(key => {
 				if (key == status) {
@@ -193,29 +195,33 @@ export default {
 		}
 	},
 	methods: {
+        // showFreight 运费底部上拉框
+        showFreight($event) {
+            this.popupShow = $event
+        },
 		// 获取订单详情
 		async initOrderDetaileData() {
 			try {
 				const userInfo = await this.$api.getStorage()
 				this.userId = userInfo.userId ? userInfo.userId : 0
-				const res = await this.OrderService.QueryOrderDetails({ orderId: this.orderId, userId: this.userId })
+				const res = await this.OrderService.QueryOrderDetails({ shopOrderId: this.orderId, userId: this.userId })
 				const data = res.data
 				this.skeletonShow = true
-				this.orderInfo = data.order
-				this.shareCode = data.shareCode
+				this.orderInfo = data.shopOrder
+				// this.shareCode = data.shareCode
 				this.addressData = data.userInfo
-				this.information = data.order
-				this.btnStatus = data.order.status
-				this.payStatus = data.order.payStatus
-				this.payableAmount = data.order.payableAmount
-				this.shopOrderData = data.shopOrderList
+				this.information = data.shopOrder
+				this.btnStatus = data.shopOrder.status
+				this.payStatus = data.shopOrder.payStatus
+				this.payableAmount = data.shopOrder.payableAmount
+				this.shopOrderData = data.shopOrder
 				this.orderInvoice = data.orderInvoice
-				this.onlinePayFlag = data.order.onlinePayFlag
+				this.onlinePayFlag = data.shopOrder.onlinePayFlag
 				this.returnedPurchaseList = data.returnedPurchaseList
 				this.discernReceiptList = data.discernReceiptList
 				this.voucherList = data.voucher
-				this.receiptAmount = data.order.receiptAmount
-				this.returnedPurchaseFee = data.order.returnedPurchaseFee
+				this.receiptAmount = data.shopOrder.receiptAmount
+				this.returnedPurchaseFee = data.shopOrder.returnedPurchaseFee
 			} catch (error) {
 				//TODO handle the exception
 				this.$util.msg(error.msg, 2000)
@@ -253,7 +259,7 @@ export default {
 		},
 		getOrderPaymentValidation(data) {
 			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: data.orderId })
+			this.OrderService.OrderPaymentValidation({ shopOrderId: data.orderId })
 				.then(response => {
 					let data = response.data
 					if (data.onlinePayFlag == 1) {
@@ -284,7 +290,7 @@ export default {
 		async confirmReceipt() {
 			//确认收货
 			try {
-				const res = await this.OrderService.ConfirmReceipt({ orderId: this.orderId })
+				const res = await this.OrderService.ConfirmReceipt({ shopOrderId: this.orderInfo.shopOrderId })
 				this.$util.msg(res.msg, 2000, true, 'success')
 				setTimeout(() => {
 					this.initOrderDetaileData()
@@ -296,7 +302,7 @@ export default {
 		async cancelOrder() {
 			//取消订单
 			try {
-				const res = await this.OrderService.CancelOrder({ orderId: this.orderId, userIdentity: 0 })
+				const res = await this.OrderService.CancelOrder({ shopOrderId: this.orderInfo.shopOrderId, userIdentity: 0 })
 				this.$util.msg(res.msg, 2000, true, 'success')
 				setTimeout(() => {
 					this.initOrderDetaileData()

+ 851 - 839
pages/user/order/order-list.vue

@@ -1,59 +1,59 @@
 <template>
-	<view class="container" :style="{ paddingTop: navbarHeight + 'px' }">
-		<!-- 自定义返回 -->
-		<header-back
-			:systeminfo="systeminfo"
-			:navbar-data="nvabarData"
-			:headerBtnPosi="headerBtnPosi"
-			:isDelete="isDelete"
-			@goSearchPath="handlSearchPath"
-		></header-back>
-		<tui-skeleton
-			v-if="skeletonShow"
-			backgroundColor="#fafafa"
-			borderRadius="10rpx"
-			:isLoading="true"
-			:loadingType="5"
-		></tui-skeleton>
-		<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>
-			</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">
-						<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"
-								>
-									<view class="order-title">
+    <view class="container" :style="{ paddingTop: navbarHeight + 'px' }">
+        <!-- 自定义返回 -->
+        <header-back
+            :systeminfo="systeminfo"
+            :navbar-data="nvabarData"
+            :headerBtnPosi="headerBtnPosi"
+            :isDelete="isDelete"
+            @goSearchPath="handlSearchPath"
+        ></header-back>
+        <tui-skeleton
+            v-if="skeletonShow"
+            backgroundColor="#fafafa"
+            borderRadius="10rpx"
+            :isLoading="true"
+            :loadingType="5"
+        ></tui-skeleton>
+        <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>
+            </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">
+                        <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"
+                                >
+                                    <!-- <view class="order-title">
 										<view class="order-title-t">
 											<text class="bage-text tui-skeleton-fillet">订单编号:{{ order.orderNo }}</text>
 										</view>
@@ -65,111 +65,109 @@
 												StateExpFormat(order.status)
 											}}</view>
 										</view>
-									</view>
-									<block v-for="(shop, sindex) in order.shopOrderList" :key="sindex">
-										<view class="goods-title">
-											<view v-if="shop.shopPromotion" class="floor-item-act">
-												<view class="floor-tags">{{ shop.shopPromotion.name }}</view>
-											</view>
-											<view class="title-text" v-if="order.secondHandOrderFlag == 1"
-												>{{ shop.shopName }}
-												<label class="paymenttext" v-if="order.affirmPaymentFlag == 1"
-													>已确认打款供应商</label
-												>
-											</view>
-											<view
-												class="title-text tui-skeleton-fillet"
-												v-else
-												>{{ shop.shopName }}<label class="iconfont icon-jinrudianpu"></label
-											></view>
-										</view>
-										<view
-											class="goods-item"
-											v-for="(pros, prosIndex) in shop.orderProductList"
-											:key="prosIndex"
-											@click.stop="detail(order.orderId)"
-										>
-											<view class="goods-pros-t">
-												<view class="pros-img tui-skeleton-fillet">
-													<image :src="pros.image" alt="" />
-												</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="price tui-skeleton-fillet">
-															<text>¥{{ pros.price | NumFormat }}</text>
-														</view>
-														<view class="count tui-skeleton-fillet">
-															<text class="small">x</text>{{ pros.num }}
-														</view>
-													</view>
-												</view>
-											</view>
-										</view>
-									</block>
-									<view class="order-footer">
-										<view class="order-footer-bot">
-											<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
-											<view
-												class="money tui-skeleton-fillet"
-												v-if="order.status == 31 || order.status == 32 || order.status == 33"
-											>
-												已支付:<label style="color:#f94b4b ;"
-													>¥{{ order.receiptAmount | NumFormat }}</label
-												>
-											</view>
-											<view class="money tui-skeleton-fillet" v-else>
-												待付总额:<label style="color:#f94b4b ;"
-													>¥{{ order.pendingPayments | NumFormat }}</label
-												>
-											</view>
-										</view>
-									</view>
-									<!-- 底部button -->
-									<order-button
-										ref="orderButton"
-										:status="order.status"
-										:order="order"
-										@buttonConfirm="handButtonConfirm"
-									>
-									</order-button>
-								</view>
-								<!--加载loadding-->
-								<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-								<tui-nomore
-									:visible="!pullUpOn"
-									:backgroundColor="'#ffffff'"
-									:text="nomoreText"
-								></tui-nomore>
-								<!--加载loadding-->
-							</view>
-						</view>
-					</scroll-view>
-				</swiper-item>
-			</swiper>
-		</template>
-		<!-- 分享弹窗 -->
-		<share-alert v-if="isShareModal" :orderId="handleOrderId" @shareConfirm="onShareAppMessage" />
-		<!-- 提示弹窗 -->
-		<tui-modal
-			:show="modal"
-			@click="handleClick"
-			:content="contentModalText"
-			:button="modalButton"
-			color="#333"
-			:size="32"
-			shape="circle"
-			:maskClosable="false"
-		>
-		</tui-modal>
-		<!-- 透明模态层 -->
-		<modal-layer v-if="isModalLayer"></modal-layer>
-	</view>
+									</view> -->
+                                    <block v-for="(shop, sindex) in order.orderProductList" :key="sindex">
+                                        <view class="goods-title">
+                                            <view class="title-text tui-skeleton-fillet">
+                                                {{ shop.shopName }}
+                                                <label class="iconfont icon-jinrudianpu"></label>
+                                            </view>
+                                            <view class="order-title-tip">{{
+                                            	StateExpFormat(order.status)
+                                            }}</view>
+                                        </view>
+                                        <view
+                                            class="goods-item"
+                                            @click.stop="detail(shop.shopOrderId)"
+                                        >
+                                            <view class="goods-pros-t">
+                                                <view class="pros-img tui-skeleton-fillet">
+                                                    <image :src="shop.image" alt="" />
+                                                </view>
+                                                <view class="pros-product clearfix">
+                                                    <view class="producttitle tui-skeleton-fillet">
+                                                        {{ shop.name }}
+                                                    </view>
+                                                    <view
+                                                        class="productspec tui-skeleton-fillet"
+                                                        v-if="shop.productCategory != 2"
+                                                    >
+                                                        规格:{{ shop.productUnit }}
+                                                    </view>
+                                                    <view class="productprice">
+                                                        <view class="price tui-skeleton-fillet">
+                                                            <text>¥{{ shop.price | NumFormat }}</text>
+                                                        </view>
+                                                        <view class="count tui-skeleton-fillet">
+                                                            <text class="small">x</text>
+                                                            {{ shop.num }}
+                                                        </view>
+                                                    </view>
+                                                </view>
+                                            </view>
+                                        </view>
+                                    </block>
+                                    <view class="order-footer">
+                                        <view class="order-footer-bot">
+                                            <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"
+                                            >
+                                                已支付:
+                                                <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 -->
+                                    <order-button
+                                        ref="orderButton"
+                                        :status="order.status"
+                                        :order="order"
+                                        @shareConfirm="handButtonShareConfirm"
+                                        @buttonConfirm="handButtonConfirm"
+                                    ></order-button>
+                                </view>
+                                <!--加载loadding-->
+                                <tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+                                <tui-nomore
+                                    :visible="!pullUpOn"
+                                    :backgroundColor="'#ffffff'"
+                                    :text="nomoreText"
+                                ></tui-nomore>
+                                <!--加载loadding-->
+                            </view>
+                        </view>
+                    </scroll-view>
+                </swiper-item>
+            </swiper>
+        </template>
+        <!-- 分享弹窗 -->
+        <share-alert v-if="isShareModal" :orderId="handleOrderId" @shareConfirm="onShareAppMessage" />
+        <!-- 提示弹窗 -->
+        <tui-modal
+            :show="modal"
+            @click="handleClick"
+            :content="contentModalText"
+            :button="modalButton"
+            color="#333"
+            :size="32"
+            shape="circle"
+            :maskClosable="false"
+        ></tui-modal>
+        <!-- 透明模态层 -->
+        <modal-layer v-if="isModalLayer"></modal-layer>
+    </view>
 </template>
 
 <script>
@@ -181,732 +179,746 @@ import empty from './components/empty'
 import shareAlert from '@/components/cm-module/modelAlert/shareAlert' //分享弹窗
 
 export default {
-	components: {
-		headerBack,
-		empty,
-		btSearch,
-		orderButton,
-		modalLayer,
-		shareAlert,
-	},
-	data() {
-		return {
-			CustomBar: this.CustomBar, // 顶部导航栏高度
-			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
-			systeminfo: this.setSysteminfo(), //获取设备信息
-			winHeight: '', //窗口高度
-			nvabarData: {
-				//顶部自定义导航
-				showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-				showSearch: 1,
-				title: '我的订单' // 导航栏 中间的标题
-			},
-			orderTabBar: [
-				{ state: 0, text: '全部订单', orderList: [] },
-				{ state: 2, text: '待付款', orderList: [] },
-				{ state: 3, text: '待发货', orderList: [] },
-				{ state: 4, text: '已发货', orderList: [] },
-				{ state: 5, text: '退货/款', orderList: [] }
-			],
-			currentTab: 0, //预设当前项的值
-			scrollLeft: 0, //tab标题的滚动条位置
-			listQuery:{
-				orderState: 0, 
-				userId:0, 
-				pageNum: 1, 
-				pageSize: 10
-			},
-			orderData: [],
-			scrollTop: 0,
-			skeletonShow: true,
-			isDelete: false,
-			isClickChange: false,
-			isShareModal: false, //控制分享弹窗
-			isModalLayer: false,
-			loadding: false,
-			pullUpOn: true,
-			hasNextPage: false,
-			pullFlag: true,
-			navbarHeight: '',
-			modelType: 0,
-			nomoreText: '上拉显示更多',
-			isOnloadFlag: false,
-			handleOrderId: 0, //点击按钮传入的的订单ID
-			handleModelEven:0,
-			modal:false,
-			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
-			modalButton: [
-				{
-					text: '取消',
-					type: 'gray',
-					plain: true //是否空心
-				},
-				{
-					text: '确定',
-					customStyle: {
-						color: '#fff',
-						bgColor: '#F3B574'
-					},
-					plain: false
-				}
-			]
-		}
-	},
-	onLoad(e) {
-		
-		if (e.type === 'detele') {
-			this.isDelete = true
-		}
-		const evStateMap = { 0:0,2:1, 3:2, 4:3, 5:4 }
-		this.currentTab = evStateMap[e.state]
-		console.log('currentTab',this.currentTab)
-		this.isOnloadFlag = true
-		this.getHeaderTopHeight() //设置自定义导航高度
-		this.initStorage()
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			return Number(value).toFixed(2)
-		}
-	},
-	methods: {
-		async initStorage(){
-			//初始化
-			const usrInfo = await this.$api.getStorage()
-			this.listQuery.userId = usrInfo.userId ? usrInfo.userId : 0
-			this.getOrderDatainit(this.currentTab)
-		},
-		// 滚动切换标签样式
-		onChange: function(e) {
-			let tabIndex = e.target.current || e.detail.current
-			if (this.isClickChange) {
-				this.currentTab = tabIndex
-				this.isClickChange = false
-				return
-			}
-			this.isClickChange = false
-			this.currentTab = tabIndex
-			this.checkCor()
-			this.pageNum = 1
-			this.pullUpOn = true //切换时隐藏
-			this.loadding = false //切换时隐藏
-			this.nomoreText = ''
-			if (!this.isOnloadFlag) {
-				this.getOrderDatainit(this.currentTab, 'tabChange')
-			}
-		},
-		// 点击标题切换当前页时改变样式
-		onClickTab: function(e) {
-			let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current
-			if (this.currentTab === tabIndex) {
-				return false
-			} else {
-				this.isClickChange = true
-				this.currentTab = tabIndex
-				this.pageNum = 1
-				this.pullUpOn = true //切换时隐藏
-				this.loadding = false //切换时隐藏
-				this.getOrderDatainit(this.currentTab)
-			}
-		},
-		//判断当前滚动超过一屏时,设置tab标题滚动条。
-		checkCor: function() {
-			if (this.currentTab > 3) {
-				//这里距离按实际计算
-				this.scrollLeft = 300
-			} else {
-				this.scrollLeft = 0
-			}
-		},
-		async getOrderDatainit(index, source) {
-			let orderItem = this.orderTabBar[index]
-			if (source === 'tabChange' && orderItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return
-			}
-			try{
-				this.listQuery.orderState = this.orderTabBar[index].state
-				const res = await this.OrderService.QueryOrderList(this.listQuery)
-				const data = res.data
-				const orderList = data.list.filter(item => {
-					//添加不同状态下订单的表现形式
-					item = Object.assign(item, this.StateExpFormat(item.status))
-					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 = '已至底部'
-					}
-				}
-				this.skeletonShow = false
-				this.isOnloadFlag = false
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		async getOnReachBottomData(index) {
-			//上拉加载
-			try{
-				this.listQuery.pageNum += 1
-				this.listQuery.orderState = this.orderTabBar[index].state
-				const res = await this.OrderService.QueryOrderList(this.listQuery)
-				const data = res.data
-				const orderItem = this.orderTabBar[index]
-				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 = '已至底部'
-				}
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		scrolltolower() {
-			if (this.hasNextPage) {
-				this.loadding = true
-				this.pullUpOn = true
-				this.getOnReachBottomData(this.currentTab)
-			}
-		},
-		detail(orderId) {
-			//订单详情跳转
-			this.isModalLayer = true
-			this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderId=${orderId}`)
-		},
-		handButtonConfirm(data) {
-			//获取点击
-			this.handleOrderId = data.orderId
-			switch (data.type) {
-				case 'cancel':
-					//取消订单
-					this.modal = true
-					this.contentModalText = '确认取消该订单吗?'
-					this.handleModelEven = 1
-					break
-				case 'query':
-					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + this.handleOrderId)
-					break
-				case 'upload':
-					this.$api.navigateTo('/pages/user/order/order-addpay?orderId=' + this.handleOrderId)
-					break
-				case 'confirm':
-					//确认收货
-					this.modal = true
-					this.contentModalText = '确认收货吗?'
-					this.handleModelEven = 2
-					break
-				case 'pay':
-					this.orderPaymentValidation()
-					break
-			}
-		},
-		async orderPaymentValidation(){
-			//监听根据付款状态做操作
-			try{
-				const res = await this.OrderService.OrderPaymentValidation({ orderId: this.handleOrderId })
-				if (res.data.onlinePayFlag == 1) {// 只能线下
-					this.$api.navigateTo(`/pages/user/pay/card-under?orderId=${this.handleOrderId}`)
-				} else {
-					this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${this.handleOrderId}`)
-				}
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		handleClick(e){
-			//确认操作
-			if (e.index == 1) {
-				switch(this.handleModelEven){
-					case 1://取消订单
-						this.cancelOrder()
-					 break
-					case 2://确认收货
-						this.confirmReceipt()
-					 break
-				}
-			}
-			this.modal = false
-		},
-		async confirmReceipt(){
-			//确认收货
-			try{
-				const res = await this.OrderService.ConfirmReceipt({ orderId: this.handleOrderId })
-				this.$util.msg(res.msg, 2000, true, 'success')
-				setTimeout(() => {
-					this.getOrderDatainit(this.currentTab)
-				}, 2000)
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		async cancelOrder(){
-			//取消订单
-			try{
-				const res = await this.OrderService.CancelOrder({ orderId: this.handleOrderId, userIdentity : 0 })
-				this.$util.msg(res.msg, 2000, true, 'success')
-				setTimeout(() => {
-					this.getOrderDatainit(this.currentTab)
-				}, 2000)
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		handlSearchPath() {
-			this.$api.navigateTo('/pages/search/search-order')
-		},
-		onShareAppMessage(res) {
-			//分享转发
-			this.isShareModal = false
-			if (res.from === 'button') {
-				// 来自页面内转发按钮
-			}
-			return {
-				title: '您有新的分享订单,快来查看吧~',
-				path: `/pages/user/order/order-sharelogin?orderId=${this.handleOrderId}&userId=${this.listQuery.userId}`,
-				imageUrl: 'https://static.caimei365.com/app/mini-mcare/icon/icon_shareOrder@2x.png'
-			}
-		},
-		orderPriceToFixed(n) {
-			let price = ''
-			price = n.toFixed(2)
-			return price
-		},
-		getHeaderTopHeight() {
-			// 状态栏高度
-			let self = this
-			let statusBarHeight = this.systeminfo.statusBarHeight
-			let headerPosi = this.headerBtnPosi
-			let btnPosi = {
-				// 胶囊实际位置,坐标信息不是左上角原点
-				height: headerPosi.height,
-				width: headerPosi.width,
-				// 胶囊top - 状态栏高度
-				top: headerPosi.top - statusBarHeight,
-				// 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-				bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-				// 屏幕宽度 - 胶囊right
-				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
-				}
-			})
-		},
-		setHeaderBtnPosi() {
-			// 获得胶囊按钮位置信息
-			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
-			return headerBtnPosi
-		},
-		setSysteminfo() {
-			let systeminfo
-			uni.getSystemInfo({
-				// 获取设备信息
-				success: res => {
-					systeminfo = res
-				}
-			})
-			return systeminfo
-		},
-		PromotionsFormat(promo) {
-			//促销活动类型数据处理
-			if (promo != null) {
-				if (promo.type == 1 && promo.mode == 1) {
-					return true
-				} else {
-					return false
-				}
-			}
-			return false
-		},
-		StateExpFormat(state) {
-			//订单状态文字和颜色
-			var HtmlStateText = '',
-				stateTextObject = {
-					0: '待确认',
-					4: '交易完成',
-					5: '订单完成',
-					6: '已关闭',
-					7: '交易全退',
-					77: '交易全退',
-					11: '待付款待发货',
-					12: '待付款部分发货',
-					13: '待付款已发货',
-					21: '部分付款待发货',
-					22: '部分付款部分发货',
-					23: '部分付款已发货',
-					31: '已付款待发货',
-					32: '已付款部分发货',
-					33: '已付款已发货',
-					111: '待付款待发货'
-				}
-			Object.keys(stateTextObject).forEach(function(key) {
-				if (key == state) {
-					HtmlStateText = stateTextObject[key]
-				}
-			})
-			return HtmlStateText
-		},
-		handleBeanlClick() {
-			//关闭采美豆弹窗
-			this.isActivityBean = false
-			this.getOrderDatainit(this.currentTab)
-		}
-	},
-	onPageScroll(e) {
-		this.scrollTop = e.scrollTop
-	},
-	onShow() {
-		this.isModalLayer = false
-	}
+    components: {
+        headerBack,
+        empty,
+        btSearch,
+        orderButton,
+        modalLayer,
+        shareAlert
+    },
+    data() {
+        return {
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+            systeminfo: this.setSysteminfo(), //获取设备信息
+            winHeight: '', //窗口高度
+            nvabarData: {
+                //顶部自定义导航
+                showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+                showSearch: 1,
+                title: '我的订单' // 导航栏 中间的标题
+            },
+            orderTabBar: [
+                { state: 0, text: '全部订单', orderList: [] },
+                { state: 2, text: '待付款', orderList: [] },
+                { state: 3, text: '待发货', orderList: [] },
+                { state: 4, text: '已发货', orderList: [] },
+                { state: 5, text: '退货/款', orderList: [] }
+            ],
+            currentTab: 0, //预设当前项的值
+            scrollLeft: 0, //tab标题的滚动条位置
+            listQuery: {
+                orderState: 0,
+                userId: 0,
+                pageNum: 1,
+                pageSize: 10
+            },
+            orderData: [],
+            scrollTop: 0,
+            skeletonShow: true,
+            isDelete: false,
+            isClickChange: false,
+            isShareModal: false, //控制分享弹窗
+            isModalLayer: false,
+            loadding: false,
+            pullUpOn: true,
+            hasNextPage: false,
+            pullFlag: true,
+            navbarHeight: '',
+            modelType: 0,
+            nomoreText: '上拉显示更多',
+            isOnloadFlag: false,
+            handleOrderId: 0, //点击按钮传入的的订单ID
+            handleModelEven: 0,
+            modal: false,
+            contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
+            modalButton: [
+                {
+                    text: '取消',
+                    type: 'gray',
+                    plain: true //是否空心
+                },
+                {
+                    text: '确定',
+                    customStyle: {
+                        color: '#fff',
+                        bgColor: '#F3B574'
+                    },
+                    plain: false
+                }
+            ]
+        }
+    },
+    onLoad(e) {
+        if (e.type === 'detele') {
+            this.isDelete = true
+        }
+        const evStateMap = { 0: 0, 2: 1, 3: 2, 4: 3, 5: 4 }
+        this.currentTab = evStateMap[e.state]
+        console.log('currentTab', this.currentTab)
+        this.isOnloadFlag = true
+        this.getHeaderTopHeight() //设置自定义导航高度
+        this.initStorage()
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        }
+    },
+    methods: {
+        async initStorage() {
+            //初始化
+            const usrInfo = await this.$api.getStorage()
+            this.listQuery.userId = usrInfo.userId ? usrInfo.userId : 0
+            this.getOrderDatainit(this.currentTab)
+        },
+        // 滚动切换标签样式
+        onChange: function(e) {
+            let tabIndex = e.target.current || e.detail.current
+            if (this.isClickChange) {
+                this.currentTab = tabIndex
+                this.isClickChange = false
+                return
+            }
+            this.isClickChange = false
+            this.currentTab = tabIndex
+            this.checkCor()
+            this.pageNum = 1
+            this.pullUpOn = true //切换时隐藏
+            this.loadding = false //切换时隐藏
+            this.nomoreText = ''
+            if (!this.isOnloadFlag) {
+                this.getOrderDatainit(this.currentTab, 'tabChange')
+            }
+        },
+        // 点击标题切换当前页时改变样式
+        onClickTab: function(e) {
+            let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current
+            if (this.currentTab === tabIndex) {
+                return false
+            } else {
+                this.isClickChange = true
+                this.currentTab = tabIndex
+                this.pageNum = 1
+                this.listQuery.pageNum = 1
+                this.pullUpOn = true //切换时隐藏
+                this.loadding = false //切换时隐藏
+                this.getOrderDatainit(this.currentTab)
+            }
+        },
+        //判断当前滚动超过一屏时,设置tab标题滚动条。
+        checkCor: function() {
+            if (this.currentTab > 3) {
+                //这里距离按实际计算
+                this.scrollLeft = 300
+            } else {
+                this.scrollLeft = 0
+            }
+        },
+        async getOrderDatainit(index, source) {
+            let orderItem = this.orderTabBar[index]
+            if (source === 'tabChange' && orderItem.loaded === true) {
+                //tab切换只有第一次需要加载数据
+                return
+            }
+            try {
+                this.listQuery.orderState = this.orderTabBar[index].state
+                const res = await this.OrderService.QueryOrderList(this.listQuery)
+                const data = res.data
+                const orderList = data.list.filter(item => {
+                    //添加不同状态下订单的表现形式
+                    item = Object.assign(item, this.StateExpFormat(item.status))
+                    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 = '已至底部'
+                    }
+                }
+                this.skeletonShow = false
+                this.isOnloadFlag = false
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        async getOnReachBottomData(index) {
+            //上拉加载
+            try {
+                this.listQuery.pageNum += 1
+                this.listQuery.orderState = this.orderTabBar[index].state
+                const res = await this.OrderService.QueryOrderList(this.listQuery)
+                const data = res.data
+                const orderItem = this.orderTabBar[index]
+                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 = '已至底部'
+                }
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        scrolltolower() {
+            if (this.hasNextPage) {
+                this.loadding = true
+                this.pullUpOn = true
+                this.getOnReachBottomData(this.currentTab)
+            }
+        },
+        detail(orderId) {
+            //订单详情跳转
+            this.isModalLayer = true
+            this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderId=${orderId}`)
+        },
+        handButtonConfirm(data) {
+            console.log(data)
+            //获取点击
+            this.handleOrderId = data.order.shopOrderId
+            switch (data.type) {
+                case 'cancel':
+                    //取消订单
+                    this.modal = true
+                    this.contentModalText = '确认取消该订单吗?'
+                    this.handleModelEven = 1
+                    break
+                case 'query':
+                    this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + this.handleOrderId)
+                    break
+                case 'upload':
+                    this.$api.navigateTo('/pages/user/order/order-addpay?orderId=' + this.handleOrderId)
+                    break
+                case 'confirm':
+                    //确认收货
+                    this.modal = true
+                    this.contentModalText = '确认收货吗?'
+                    this.handleModelEven = 2
+                    break
+                case 'pay':
+                    this.orderPaymentValidation(data)
+                    break
+            }
+        },
+        async orderPaymentValidation(data) {
+            //监听根据付款状态做操作
+            try {
+                const res = await this.OrderService.OrderPaymentValidation({ shopOrderId: this.handleOrderId })
+                this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${res.data.orderId}`)
+                // if (res.data.onlinePayFlag == 1) {
+                //     // 只能线下
+                //     this.$api.navigateTo(`/pages/user/pay/card-under?orderId=${this.handleOrderId}`)
+                // } else {
+                //     this.$api.navigateTo(`/pages/user/order/order-pay-list?orderId=${this.handleOrderId}`)
+                // }
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        handleClick(e) {
+            //确认操作
+            if (e.index == 1) {
+                switch (this.handleModelEven) {
+                    case 1: //取消订单
+                        this.cancelOrder()
+                        break
+                    case 2: //确认收货
+                        this.confirmReceipt()
+                        break
+                }
+            }
+            this.modal = false
+        },
+        async confirmReceipt() {
+            //确认收货
+            try {
+                const res = await this.OrderService.ConfirmReceipt({ shopOrderId: this.handleOrderId })
+                this.$util.msg(res.msg, 2000, true, 'success')
+                setTimeout(() => {
+                    this.getOrderDatainit(this.currentTab)
+                }, 2000)
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        async cancelOrder() {
+            //取消订单
+            try {
+                const res = await this.OrderService.CancelOrder({ shopOrderId: this.handleOrderId, userIdentity: 0 })
+                this.$util.msg(res.msg, 2000, true, 'success')
+                setTimeout(() => {
+                    this.getOrderDatainit(this.currentTab)
+                }, 2000)
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        handlSearchPath() {
+            this.$api.navigateTo('/pages/search/search-order')
+        },
+        handButtonShareConfirm(data) {
+            this.handleOrderId = data
+        },
+        onShareAppMessage(res) {
+            console.log(res)
+            //分享转发
+            this.isShareModal = false
+            if (res.from === 'button') {
+                // 来自页面内转发按钮
+            }
+            return {
+                title: '您有新的分享订单,快来查看吧~',
+                path: `/pages/user/order/order-sharelogin?orderId=${this.handleOrderId}&userId=${
+                    this.listQuery.userId
+                }`,
+                imageUrl: 'https://static.caimei365.com/app/mini-mcare/icon/icon_shareOrder@2x.png'
+            }
+        },
+        orderPriceToFixed(n) {
+            let price = ''
+            price = n.toFixed(2)
+            return price
+        },
+        getHeaderTopHeight() {
+            // 状态栏高度
+            let self = this
+            let statusBarHeight = this.systeminfo.statusBarHeight
+            let headerPosi = this.headerBtnPosi
+            let btnPosi = {
+                // 胶囊实际位置,坐标信息不是左上角原点
+                height: headerPosi.height,
+                width: headerPosi.width,
+                // 胶囊top - 状态栏高度
+                top: headerPosi.top - statusBarHeight,
+                // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+                bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+                // 屏幕宽度 - 胶囊right
+                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
+                }
+            })
+        },
+        setHeaderBtnPosi() {
+            // 获得胶囊按钮位置信息
+            let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
+            return headerBtnPosi
+        },
+        setSysteminfo() {
+            let systeminfo
+            uni.getSystemInfo({
+                // 获取设备信息
+                success: res => {
+                    systeminfo = res
+                }
+            })
+            return systeminfo
+        },
+        PromotionsFormat(promo) {
+            //促销活动类型数据处理
+            if (promo != null) {
+                if (promo.type == 1 && promo.mode == 1) {
+                    return true
+                } else {
+                    return false
+                }
+            }
+            return false
+        },
+        StateExpFormat(state) {
+            //订单状态文字和颜色
+            var HtmlStateText = '',
+                stateTextObject = {
+                    0: '待确认',
+                    2: '交易完成',
+                    4: '已关闭',
+                    5: '交易全退',
+                    6: '交易全退',
+                    11: '待付款待发货',
+                    12: '待付款部分发货',
+                    13: '待付款已发货',
+                    21: '部分付款待发货',
+                    22: '部分付款部分发货',
+                    23: '部分付款已发货',
+                    31: '已付款待发货',
+                    32: '已付款部分发货',
+                    33: '已付款已发货'
+                }
+            Object.keys(stateTextObject).forEach(function(key) {
+                if (key == state) {
+                    HtmlStateText = stateTextObject[key]
+                }
+            })
+            return HtmlStateText
+        },
+        handleBeanlClick() {
+            //关闭采美豆弹窗
+            this.isActivityBean = false
+            this.getOrderDatainit(this.currentTab)
+        }
+    },
+    onPageScroll(e) {
+        this.scrollTop = e.scrollTop
+    },
+    onShow() {
+        this.isModalLayer = false
+    }
 }
 </script>
 
 <style lang="scss">
 /*tabbar start*/
 ::-webkit-scrollbar {
-	width: 0;
-	height: 0;
-	color: transparent;
+    width: 0;
+    height: 0;
+    color: transparent;
 }
 .order-section-top {
-	width: 100%;
-	position: fixed;
-	top: 0;
-	left: 0;
-	z-index: 99;
-	background: #ffffff;
+    width: 100%;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 99;
+    background: #ffffff;
 }
 .tab-view::before {
-	content: '';
-	position: absolute;
-	border-bottom: 1rpx solid #eaeef1;
-	-webkit-transform: scaleY(0.5);
-	transform: scaleY(0.5);
-	bottom: 0;
-	right: 0;
-	left: 0;
+    content: '';
+    position: absolute;
+    border-bottom: 1rpx solid #eaeef1;
+    -webkit-transform: scaleY(0.5);
+    transform: scaleY(0.5);
+    bottom: 0;
+    right: 0;
+    left: 0;
 }
 .tab-view {
-	width: 100%;
-	height: 80rpx;
-	overflow: hidden;
-	box-sizing: border-box;
-	background: #fff;
-	white-space: nowrap;
-	border-top: 1px solid #f7f7f7;
+    width: 100%;
+    height: 80rpx;
+    overflow: hidden;
+    box-sizing: border-box;
+    background: #fff;
+    white-space: nowrap;
+    border-top: 1px solid #f7f7f7;
 }
 .tab-bar-item {
-	padding: 0;
-	height: 80rpx;
-	min-width: 80rpx;
-	line-height: 80rpx;
-	margin: 0 28rpx;
-	display: inline-block;
-	text-align: center;
-	box-sizing: border-box;
+    padding: 0;
+    height: 80rpx;
+    min-width: 80rpx;
+    line-height: 80rpx;
+    margin: 0 28rpx;
+    display: inline-block;
+    text-align: center;
+    box-sizing: border-box;
 }
 .tab-bar-title {
-	height: 80rpx;
-	line-height: 80rpx;
-	font-size: $font-size-28;
-	color: $text-color;
+    height: 80rpx;
+    line-height: 80rpx;
+    font-size: $font-size-28;
+    color: $text-color;
 }
 
 .active {
-	border-bottom: 6rpx solid $color-system;
+    border-bottom: 6rpx solid $color-system;
 }
 
 .active .tab-bar-title {
-	color: $color-system !important;
+    color: $color-system !important;
 }
 
 /*tabbar end*/
 .scoll-y {
-	height: 100%;
+    height: 100%;
 }
 page {
-	background: #f7f7f7;
+    background: #f7f7f7;
 }
 .container {
-	padding-bottom: env(safe-area-inset-bottom);
-	height: auto;
-	position: relative;
+    padding-bottom: env(safe-area-inset-bottom);
+    height: auto;
+    position: relative;
 }
 .tui-order-content {
-	width: 100%;
-	height: auto;
+    width: 100%;
+    height: auto;
 }
 .tui-order-list {
-	margin-top: 90rpx;
-	width: 100%;
-	position: relative;
+    margin-top: 90rpx;
+    width: 100%;
+    position: relative;
 }
 .tui-order-item {
-	display: flex;
-	flex-direction: column;
-	width: 702rpx;
-	padding: 20rpx 24rpx 0 24rpx;
-	background: #fff;
-	border-bottom: 20rpx solid #f7f7f7;
+    display: flex;
+    flex-direction: column;
+    width: 702rpx;
+    padding: 20rpx 24rpx 0 24rpx;
+    background: #fff;
+    border-bottom: 20rpx solid #f7f7f7;
 }
 .order-title {
-	width: 100%;
-	height: auto;
-	.order-title-t {
-		width: 100%;
-		height: 68rpx;
-		float: left;
-		line-height: 68rpx;
-		position: relative;
-		.bage-icon {
-			width: 50rpx;
-			height: 50rpx;
-			display: block;
-			position: absolute;
-			right: 0;
-			top: 9rpx;
-		}
-		.bage-buss {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
-		}
-		.bage-auto {
-			display: inline-block;
-			width: 72rpx;
-			height: 30rpx;
-			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
-			border-radius: 4rpx;
-			line-height: 30rpx;
-			font-size: $font-size-22;
-			text-align: center;
-			color: #ffffff;
-		}
-		.bage-text {
-			display: inline-block;
-			font-size: $font-size-28;
-			line-height: 68rpx;
-			text-align: left;
-			color: $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;
-		}
-		.order-title-tip {
-			float: right;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			text-align: right;
-			color: #ff2a2a;
-		}
-	}
+    width: 100%;
+    height: auto;
+    .order-title-t {
+        width: 100%;
+        height: 68rpx;
+        float: left;
+        line-height: 68rpx;
+        position: relative;
+        .bage-icon {
+            width: 50rpx;
+            height: 50rpx;
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 9rpx;
+        }
+        .bage-buss {
+            display: inline-block;
+            width: 72rpx;
+            height: 30rpx;
+            background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+            border-radius: 4rpx;
+            line-height: 30rpx;
+            font-size: $font-size-22;
+            text-align: center;
+            color: #ffffff;
+        }
+        .bage-auto {
+            display: inline-block;
+            width: 72rpx;
+            height: 30rpx;
+            background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+            border-radius: 4rpx;
+            line-height: 30rpx;
+            font-size: $font-size-22;
+            text-align: center;
+            color: #ffffff;
+        }
+        .bage-text {
+            display: inline-block;
+            font-size: $font-size-28;
+            line-height: 68rpx;
+            text-align: left;
+            color: $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;
+        }
+        .order-title-tip {
+            float: right;
+            font-size: $font-size-28;
+            line-height: 40rpx;
+            text-align: right;
+            color: #ff2a2a;
+        }
+    }
 }
 .goods-title {
-	width: 100%;
-	height: 56rpx;
-	float: left;
-	margin-top: 10rpx;
-	.floor-item-act {
-		height: 56rpx;
-		text-align: center;
-		box-sizing: border-box;
-		float: left;
-		padding: 10rpx 0;
-		margin-right: 12rpx;
-	}
-	.title-text {
-		width: 400rpx;
-		overflow: hidden;
-		text-overflow: ellipsis;
-		white-space: nowrap;
-		float: left;
-		font-size: $font-size-28;
-		color: $text-color;
-		text-align: left;
-		line-height: 56rpx;
-		font-weight: bold;
-		.iconfont {
-			color: #999999;
-			font-size: 28rpx;
-			margin-left: 10rpx;
-		}
-		.paymenttext {
-			color: #f9a94b;
-			font-size: $font-size-22;
-			margin-left: 20rpx;
-		}
-	}
+    width: 100%;
+    height: 56rpx;
+    float: left;
+    margin-top: 10rpx;
+    .order-title-tip {
+        float: right;
+        font-size: $font-size-28;
+        line-height: 40rpx;
+        text-align: right;
+        color: #ff2a2a;
+    }
+    .floor-item-act {
+        height: 56rpx;
+        text-align: center;
+        box-sizing: border-box;
+        float: left;
+        padding: 10rpx 0;
+        margin-right: 12rpx;
+    }
+    .title-text {
+        width: 400rpx;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        float: left;
+        font-size: $font-size-28;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        font-weight: bold;
+        .iconfont {
+            color: #999999;
+            font-size: 28rpx;
+            margin-left: 10rpx;
+        }
+        .paymenttext {
+            color: #f9a94b;
+            font-size: $font-size-22;
+            margin-left: 20rpx;
+        }
+    }
 }
 .goods-item {
-	width: 100%;
-	height: auto;
+    width: 100%;
+    height: auto;
 }
 .goods-pros-t {
-	width: 100%;
-	height: auto;
-	padding: 24rpx 0;
-	.pros-img {
-		float: left;
-		width: 210rpx;
-		height: 100%;
-		border-radius: 10rpx;
-		margin: 0 26rpx 0 0;
-		position: relative;
-		.tips {
-			display: inline-block;
-			width: 80rpx;
-			height: 40rpx;
-			background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
-			line-height: 40rpx;
-			text-align: center;
-			font-size: $font-size-24;
-			color: #ffffff;
-			border-radius: 10rpx 0 10rpx 0;
-			position: absolute;
-			top: 0;
-			left: 0;
-		}
-		image {
-			width: 210rpx;
-			height: 210rpx;
-			border-radius: 10rpx;
-			border: 1px solid #f3f3f3;
-		}
-	}
+    width: 100%;
+    height: auto;
+    padding: 24rpx 0;
+    .pros-img {
+        float: left;
+        width: 210rpx;
+        height: 100%;
+        border-radius: 10rpx;
+        margin: 0 26rpx 0 0;
+        position: relative;
+        .tips {
+            display: inline-block;
+            width: 80rpx;
+            height: 40rpx;
+            background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+            line-height: 40rpx;
+            text-align: center;
+            font-size: $font-size-24;
+            color: #ffffff;
+            border-radius: 10rpx 0 10rpx 0;
+            position: absolute;
+            top: 0;
+            left: 0;
+        }
+        image {
+            width: 210rpx;
+            height: 210rpx;
+            border-radius: 10rpx;
+            border: 1px solid #f3f3f3;
+        }
+    }
 }
 .pros-product {
-	width: 460rpx;
-	height: 100%;
-	line-height: 36rpx;
-	font-size: $font-size-26;
-	position: relative;
-	float: left;
-	.producttitle {
-		width: 100%;
-		display: inline-block;
-		height: auto;
-		text-overflow: ellipsis;
-		display: -webkit-box;
-		word-break: break-all;
-		-webkit-box-orient: vertical;
-		-webkit-line-clamp: 2;
-		overflow: hidden;
-		margin-bottom: 8rpx;
-	}
-	.productspec {
-		height: 36rpx;
-		color: #999999;
-		margin: 30rpx 0;
-	}
-	.productprice {
-		height: 48rpx;
-		width: 100%;
-		float: left;
-		.price {
-			line-height: 48rpx;
-			font-size: $font-size-28;
-			width: 48%;
-			color: #ff2a2a;
-			float: left;
-			font-weight: bold;
-			&.none {
-				text-decoration: line-through;
-				color: #999999;
-			}
-		}
-		.count {
-			height: 100%;
-			float: right;
-			position: relative;
-			.small {
-				color: #666666;
-			}
-		}
-	}
-	.floor-item-act {
-		width: 100%;
-		height: 56rpx;
-		text-align: center;
-		box-sizing: border-box;
-		float: left;
-		padding: 0 0 10rpx 0;
-	}
+    width: 460rpx;
+    height: 100%;
+    line-height: 36rpx;
+    font-size: $font-size-26;
+    position: relative;
+    float: left;
+    .producttitle {
+        width: 100%;
+        display: inline-block;
+        height: auto;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        word-break: break-all;
+        -webkit-box-orient: vertical;
+        -webkit-line-clamp: 2;
+        overflow: hidden;
+        margin-bottom: 8rpx;
+    }
+    .productspec {
+        height: 36rpx;
+        color: #999999;
+        margin: 30rpx 0;
+    }
+    .productprice {
+        height: 48rpx;
+        width: 100%;
+        float: left;
+        .price {
+            line-height: 48rpx;
+            font-size: $font-size-28;
+            width: 48%;
+            color: #ff2a2a;
+            float: left;
+            font-weight: bold;
+            &.none {
+                text-decoration: line-through;
+                color: #999999;
+            }
+        }
+        .count {
+            height: 100%;
+            float: right;
+            position: relative;
+            .small {
+                color: #666666;
+            }
+        }
+    }
+    .floor-item-act {
+        width: 100%;
+        height: 56rpx;
+        text-align: center;
+        box-sizing: border-box;
+        float: left;
+        padding: 0 0 10rpx 0;
+    }
 }
 .order-footer {
-	width: 100%;
-	height: 78rpx;
-	float: left;
-	margin-top: 20rpx;
-	.order-footer-top {
-		width: 100%;
-		height: 34rpx;
-		line-height: 34rpx;
-		font-size: $font-size-24;
-		color: #999999;
-		text-align: right;
-	}
-	.order-footer-bot {
-		width: 100%;
-		float: left;
-		height: 48rpx;
-		line-height: 48rpx;
-		font-size: $font-size-28;
-		color: $text-color;
-		.count {
-			width: 50%;
-			float: left;
-			text-align: left;
-			font-weight: bold;
-		}
-		.money {
-			width: 50%;
-			float: right;
-			text-align: right;
-		}
-	}
+    width: 100%;
+    height: 78rpx;
+    float: left;
+    margin-top: 20rpx;
+    .order-footer-top {
+        width: 100%;
+        height: 34rpx;
+        line-height: 34rpx;
+        font-size: $font-size-24;
+        color: #999999;
+        text-align: right;
+    }
+    .order-footer-bot {
+        width: 100%;
+        float: left;
+        height: 48rpx;
+        line-height: 48rpx;
+        font-size: $font-size-28;
+        color: $text-color;
+        .count {
+            width: 50%;
+            float: left;
+            text-align: left;
+            font-weight: bold;
+        }
+        .money {
+            width: 50%;
+            float: right;
+            text-align: right;
+        }
+    }
 }
 </style>

+ 1 - 1
pages/user/order/order-logistics.vue

@@ -122,7 +122,7 @@ export default {
 			})
 		},
 		getData() {
-			this.OrderService.QueryLogistics({ orderId: this.orderId })
+			this.OrderService.QueryLogistics({ shopOrderId: this.orderId })
 				.then(response => {
 					const resData = response.data
 					// 添加订单列表信息

+ 288 - 272
pages/user/order/order-pay-list.vue

@@ -1,296 +1,312 @@
 <template>
-	<view class="container cashier">
-		<tui-skeleton
-			v-if="skeletonShow"
-			backgroundColor="#fafafa"
-			borderRadius="10rpx"
-			:isLoading="true"
-			:loadingType="5"
-		></tui-skeleton>
-		<template v-else>
-			<view class="pay-title" v-if="!showPayUnder" @click="handlePayunder">
-				<view class="content">
-					若需要线下转账支付订单,请点击右侧箭头查看线下转账信息。
-					<view class="content-icon"> <text class="iconfont icon-xiangyou"></text> </view>
-				</view>
-			</view>
-			<view class="pay-content">
-				<view class="pay-list" v-for="(list, index) in list" :key="index">
-					<view class="pay-list-title">{{ list.shopName }}</view>
-					<view class="pay-list-goods" v-for="(pros, prosIndex) in list.orderProductList" :key="prosIndex">
-						<view class="pay-list-image"> <image :src="pros.image" class="image" mode=""></image> </view>
-						<view class="pay-list-info">
-							<view class="info-title">{{ pros.name }}</view>
-							<view class="info-view" v-if="pros.productUnit != ''"> 规格:{{ pros.productUnit ? pros.productUnit : '' }} </view>
-							<view class="info-view" v-if="pros.productCode != '' && pros.productCode != null">
+    <view class="container cashier">
+        <tui-skeleton
+            v-if="skeletonShow"
+            backgroundColor="#fafafa"
+            borderRadius="10rpx"
+            :isLoading="true"
+            :loadingType="5"
+        ></tui-skeleton>
+        <template v-else>
+            <view class="pay-content">
+                <view class="pay-list" v-for="(list, index) in list" :key="index">
+                    <view class="pay-list-title">{{ list.shopName }}</view>
+                    <view class="pay-list-goods" v-for="(pros, prosIndex) in list.orderProductList" :key="prosIndex">
+                        <view class="pay-list-image"><image :src="pros.image" class="image" mode=""></image></view>
+                        <view class="pay-list-info">
+                            <view class="info-title">{{ pros.name }}</view>
+                            <view class="info-view" v-if="pros.productUnit != ''">
+                                规格:{{ pros.productUnit ? pros.productUnit : '' }}
+                            </view>
+                            <!-- 							<view class="info-view" v-if="pros.productCode != '' && pros.productCode != null">
 								商品编码:{{ pros.productCode ? pros.productCode : '' }}
-							</view>
-							<view class="info-price">
-								<view class="price">¥{{ pros.price | NumFormat }}</view>
-								<view class="count"><text class="sm">X</text> {{ pros.num }}</view>
-							</view>
-						</view>
-					</view>
-					<view class="pay-list-msg">
-						<view class="list-msg" v-if="list.receiptAmount > 0"
-							>已付:<text class="text">¥{{ list.receiptAmount | NumFormat }}</text></view
-						>
-						<view class="list-msg" v-if="list.eachDiscount > 0"
+							</view> -->
+                            <view class="info-price">
+                                <view class="price">¥{{ pros.price | NumFormat }}</view>
+                                <view class="count">
+                                    <text class="sm">X</text>
+                                    {{ pros.num }}
+                                </view>
+                            </view>
+                        </view>
+                    </view>
+                    <view class="pay-list-msg">
+                        <view class="list-msg" >
+                            运费:
+                            <text class="text">{{ list.postageInfo }}</text>
+                        </view>
+                        <view class="list-msg" v-if="Number(list.receiptAmount) > 0">
+                            已付:
+                            <text class="text">¥{{ list.receiptAmount | NumFormat }}</text>
+                        </view>
+                        <view class="list-msg" v-if="Number(list.obligation) > 0">
+                            待付:
+                            <text class="text red">¥{{ list.obligation | NumFormat }}</text>
+                        </view>
+                        <!-- 						<view class="list-msg" v-if="list.eachDiscount > 0"
 							>优惠:<text class="text">¥{{ list.eachDiscount | NumFormat }}</text></view
-						>
-					</view>
-					<view class="pay-list-btn">
+						> -->
+                    </view>
+                    <!-- 					<view class="pay-list-btn">
 						<view class="btn" v-if="list.receiptStatus != 3" @click="handlePayOrder(list.shopOrderId)">付款</view>
 						<view class="list-msg" v-if="list.obligation > 0"
 							>待付:<text class="text red">¥{{ list.obligation | NumFormat }}</text></view
 						>
-					</view>
-				</view>
-			</view>
-		</template>			
-	</view>
+					</view> -->
+                    <view class="pay-list-btn pay-btn">
+                        <view
+                            class="btn"
+                            @click="handlePayunder(list.shopOrderId)"
+                            v-if="list.onlinePay === 0 || list.onlinePay === 2"
+                        >
+                            线下转账
+                        </view>
+                        <view
+                            class="btn"
+                            @click="handlePayOrder(list.shopOrderId)"
+                            v-if="list.onlinePay === 0 || list.onlinePay === 1"
+                        >
+                            线上支付
+                        </view>
+                    </view>
+                </view>
+            </view>
+        </template>
+    </view>
 </template>
 
 <script>
 export default {
-	data() {
-		return {
-			orderId: 0,
-			showPayUnder:false,
-			skeletonShow:true,
-			list: []
-		}
-	},
-	onLoad(option) {
-		this.initData(option)
-	},
-	filters: {
-		NumFormat(value) {
-			//处理金额
-			if (value) {
-				return Number(value).toFixed(2)
-			} else {
-				return '0.00'
-			}
-		}
-	},
-	methods: {
-		initData(e) {
-			console.log(e)
-			this.orderId = e.orderId
-			this.payOrderId = '#' + e.orderId + '#'
-			this.PayOrderShoporders(this.orderId)
-		},
-		async PayOrderShoporders(orderId) {
-			try{
-				const res =await  this.PayService.PayOrderShoporders({ orderId: orderId })
-				this.list = res.data
-				this.PayOrderCheckoutCounter(orderId)
-			}catch(error){
-				this.$util.msg(error.msg, 2000)
-			}
-		},
-		async PayOrderCheckoutCounter(orderId){
-			try{
-				const res = await this.PayService.PayOrderCheckoutCounter({orderId:orderId})
-				const data = res.data
-				this.skeletonShow = false
-				if(data.discernReceipt.length>0){
-					this.showPayUnder = true
-				}
-			}catch(error){
-				this.$util.msg(error.msg,2000)
-			}
-		},
-		handlePayOrder(shopOrderId){
-			this.$api.navigateTo(`/pages/user/pay/card-order?shopOrderId=${shopOrderId}`)
-		},
-		handlePayunder(){
-			this.$api.navigateTo(`/pages/user/pay/card-under?orderId=${this.orderId}`)
-		}
-	},
-	onShow() {}
+    data() {
+        return {
+            orderId: 0,
+            showPayUnder: false,
+            skeletonShow: true,
+            list: []
+        }
+    },
+    onLoad(option) {
+        this.initData(option)
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            if (value) {
+                return Number(value).toFixed(2)
+            } else {
+                return '0.00'
+            }
+        }
+    },
+    methods: {
+        initData(e) {
+            console.log(e)
+            this.orderId = e.orderId
+            this.payOrderId = '#' + e.orderId + '#'
+            this.PayOrderShoporders(this.orderId)
+        },
+        async PayOrderShoporders(orderId) {
+            try {
+                const res = await this.PayService.PayOrderShoporders({ orderId: orderId })
+                this.list = res.data
+                // this.PayOrderCheckoutCounter(orderId)
+                this.skeletonShow = false
+            } catch (error) {
+                this.$util.msg(error.msg, 2000)
+            }
+        },
+        handlePayOrder(shopOrderId) {
+            this.$api.navigateTo(`/pages/user/pay/card-order?shopOrderId=${shopOrderId}`)
+        },
+        handlePayunder(shopOrderId) {
+            this.$api.navigateTo(
+                `/pages/user/pay/card-under?shopOrderId=${shopOrderId}`
+            )
+        }
+    },
+    onShow() {}
 }
 </script>
 
 <style lang="scss">
 page {
-	height: auto !important;
-	background-color: #f7f7f7;
+    height: auto !important;
+    background-color: #f7f7f7;
 }
 .cashier {
-	width: 100%;
+    width: 100%;
 }
 .pay-title {
-	width: 100%;
-	height: 144rpx;
-	box-sizing: border-box;
-	padding: 24rpx 24rpx 0 24rpx;
-	background-color: #ffffff;
-	.content {
-		width: 100%;
-		height: 100%;
-		position: relative;
-		box-sizing: border-box;
-		padding: 20rpx 100rpx 20rpx 24rpx;
-		background: url(https://static.caimei365.com/app/img/bg/pay-bgtitle@2x.png) no-repeat;
-		background-size: 100% 100%;
-		line-height: 40rpx;
-		font-size: $font-size-26;
-		text-align: justify;
-		color: $color-system;
-		.content-icon {
-			width: 40rpx;
-			height: 100%;
-			position: absolute;
-			top: 0;
-			right: 24rpx;
-			line-height: 120rpx;
-			.iconfont {
-				font-size: $font-size-34;
-				color: $color-system;
-				text-align: right;
-			}
-		}
-	}
+    width: 100%;
+    height: 144rpx;
+    box-sizing: border-box;
+    padding: 24rpx 24rpx 0 24rpx;
+    background-color: #ffffff;
+    .content {
+        width: 100%;
+        height: 100%;
+        position: relative;
+        box-sizing: border-box;
+        padding: 20rpx 100rpx 20rpx 24rpx;
+        background: url(https://static.caimei365.com/app/img/bg/pay-bgtitle@2x.png) no-repeat;
+        background-size: 100% 100%;
+        line-height: 40rpx;
+        font-size: $font-size-26;
+        text-align: justify;
+        color: $color-system;
+        .content-icon {
+            width: 40rpx;
+            height: 100%;
+            position: absolute;
+            top: 0;
+            right: 24rpx;
+            line-height: 120rpx;
+            .iconfont {
+                font-size: $font-size-34;
+                color: $color-system;
+                text-align: right;
+            }
+        }
+    }
 }
 .pay-content {
-	width: 100%;
-	height: auto;
-	.pay-list {
-		width: 100%;
-		height: auto;
-		padding: 30rpx 24rpx 30rpx 24rpx;
-		box-sizing: border-box;
-		background-color: #ffffff;
-		margin-bottom: 20rpx;
-		.pay-list-title {
-			width: 100%;
-			height: 42rpx;
-			line-height: 42rpx;
-			font-size: $font-size-30;
-			color: #333333;
-			margin-bottom: 20rpx;
-		}
-		.pay-list-goods {
-			width: 100%;
-			height: 180rpx;
-			margin-bottom: 30rpx;
-			.pay-list-image {
-				width: 180rpx;
-				height: 180rpx;
-				box-sizing: border-box;
-				border: 1px solid #e1e1e1;
-				border-radius: 8rpx;
-				float: left;
-				margin-right: 13rpx;
-				.image {
-					width: 100%;
-					height: 100%;
-					display: block;
-					border-radius: 8rpx;
-				}
-			}
-			.pay-list-info {
-				width: 508rpx;
-				height: 100%;
-				float: right;
-				.info-title {
-					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;
-					line-height: 38rpx;
-					font-size: $font-size-28;
-					color: #333333;
-				}
-				.info-view {
-					height: 40rpx;
-					line-height: 40rpx;
-					color: #999999;
-					text-overflow: ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
-					overflow: hidden;
-					font-size: $font-size-22;
-					color: #999999;
-				}
-				.info-price {
-					height: 40rpx;
-					width: 100%;
-					float: left;
-					line-height: 40rpx;
-					font-size: $font-size-26;
-					.price {
-						color: #333333;
-						float: left;
-					}
-					.count {
-						float: right;
-						color: #666666;
-						.sm{
-							font-size: $font-size-22;
-						}
-					}
-				}
-			}
-		}
-		.pay-list-msg {
-			width: 100%;
-			height: 40rpx;
-			line-height: 40rpx;
-			font-size: $font-size-26;
-			margin-bottom: 30rpx;
-			.list-msg {
-				float: right;
-				margin-left: 30rpx;
-				font-size: $font-size-26;
-				color: #333333;
-				font-weight: bold;
-				.text {
-					font-weight: normal;
-					&.red {
-						color: #f94b4b;
-					}
-				}
-			}
-		}
-		.pay-list-btn {
-			width: 100%;
-			height: 64rpx;
-			.btn {
-				width: 160rpx;
-				height: 64rpx;
-				line-height: 64rpx;
-				background: $btn-confirm;
-				font-size: $font-size-26;
-				text-align: center;
-				float: right;
-				color: #ffffff;
-				border-radius: 32rpx;
-			}
-			.list-msg {
-				float: right;
-				line-height: 64rpx;
-				margin-right: 40rpx;
-				font-size: $font-size-26;
-				color: #333333;
-				font-weight: bold;
-				.text {
-					font-weight: normal;
-					&.red {
-						color: #f94b4b;
-					}
-				}
-			}
-		}
-	}
+    width: 100%;
+    height: auto;
+    .pay-list {
+        width: 100%;
+        height: auto;
+        padding: 30rpx 24rpx 30rpx 24rpx;
+        box-sizing: border-box;
+        background-color: #ffffff;
+        margin-bottom: 20rpx;
+        .pay-list-title {
+            width: 100%;
+            height: 42rpx;
+            line-height: 42rpx;
+            font-size: $font-size-30;
+            color: #333333;
+            margin-bottom: 20rpx;
+        }
+        .pay-list-goods {
+            width: 100%;
+            height: 180rpx;
+            margin-bottom: 56rpx;
+            .pay-list-image {
+                width: 180rpx;
+                height: 180rpx;
+                box-sizing: border-box;
+                border: 1px solid #e1e1e1;
+                border-radius: 8rpx;
+                float: left;
+                margin-right: 13rpx;
+                .image {
+                    width: 100%;
+                    height: 100%;
+                    display: block;
+                    border-radius: 8rpx;
+                }
+            }
+            .pay-list-info {
+                width: 508rpx;
+                height: 100%;
+                float: right;
+                .info-title {
+                    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;
+                    line-height: 40rpx;
+                    font-size: $font-size-28;
+                    color: #333333;
+                    margin-bottom: 8rpx;
+                }
+                .info-view {
+                    height: 40rpx;
+                    line-height: 40rpx;
+                    color: #999999;
+                    text-overflow: ellipsis;
+                    display: -webkit-box;
+                    word-break: break-all;
+                    -webkit-box-orient: vertical;
+                    -webkit-line-clamp: 2;
+                    overflow: hidden;
+                    font-size: $font-size-22;
+                    margin-bottom: 24rpx;
+                }
+                .info-price {
+                    height: 40rpx;
+                    width: 100%;
+                    float: left;
+                    line-height: 40rpx;
+                    font-size: $font-size-26;
+                    .price {
+                        color: #f85050;
+                        float: left;
+                        font-size: 28rpx;
+                    }
+                    .count {
+                        float: right;
+                        color: #666666;
+                        .sm {
+                            font-size: $font-size-22;
+                        }
+                    }
+                }
+            }
+        }
+        .pay-list-msg {
+            width: 100%;
+            line-height: 40rpx;
+            font-size: $font-size-28;
+            margin-bottom: 30rpx;
+            .list-msg {
+                font-size: $font-size-28;
+                color: #333333;
+                display: flex;
+                justify-content: space-between;
+                margin-bottom: 16rpx;
+                .text {
+                    font-weight: normal;
+                    &.red {
+                        color: #f94b4b;
+                    }
+                }
+            }
+        }
+        .pay-list-btn {
+            width: 100%;
+            flex-direction: row-reverse;
+            display: flex;
+            .btn {
+                width: 160rpx;
+                height: 64rpx;
+                line-height: 64rpx;
+                background: $btn-confirm;
+                font-size: $font-size-26;
+                text-align: center;
+                color: #ffffff;
+                border-radius: 32rpx;
+                margin-left: 20rpx;
+            }
+            .list-msg {
+                line-height: 64rpx;
+                margin-right: 40rpx;
+                font-size: $font-size-26;
+                color: #333333;
+                font-weight: bold;
+                .text {
+                    font-weight: normal;
+                    &.red {
+                        color: #f94b4b;
+                    }
+                }
+            }
+        }
+    }
 }
 </style>

+ 4 - 4
pages/user/order/order-sharedetails.vue

@@ -80,8 +80,8 @@ export default {
 				isPay:false
 			},
 			mapStateArr: [
-				{ label: 'isQuery', val: [4, 5, 12, 13, 33, 22, 23, 32, 77], status: true },
-				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23, 111], status: true }
+				{ label: 'isQuery', val: [2, 3, 5, 6, 12, 13, 22, 23, 32, 33], status: true },
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], status: true }
 			]
 		}
 	},
@@ -93,7 +93,7 @@ export default {
 	methods: {
 		initOrderDetaileData() {
 			//初始化页面数据@参数:订单ID
-			this.OrderService.QueryOrderDetails({ orderId: this.orderId, userId: this.userId })
+			this.OrderService.QueryOrderDetails({ shopOrderId: this.orderId, userId: this.userId })
 				.then(response => {
 					let data = response.data
 					this.status = data.order.status
@@ -133,7 +133,7 @@ export default {
 		},
 		getOrderPaymentValidation(orderId) {
 			//监听根据付款状态做操作
-			this.OrderService.OrderPaymentValidation({ orderId: orderId })
+			this.OrderService.OrderPaymentValidation({ shopOrderId: orderId })
 				.then(response => {
 					if (response.data.code == -1) {
 						this.$util.modal('', '订单已申请全部退款,无需再付款!', '确定', '', false, () => {})

+ 11 - 11
pages/user/order/order-sharelogin.vue

@@ -55,7 +55,7 @@ export default {
 				code: '',
 				iv: '',
 				encryptedData: '',
-				orderId: 0, //订单ID
+				shopOrderId: 0, //订单ID
 				userId: 0, //机构用户ID
 				serviceProviderId: 0 //协销ID
 			},
@@ -63,7 +63,7 @@ export default {
 				isPay:false
 			},
 			mapStateArr: [
-				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23, 111], status: true }
+				{ label: 'isPay', val: [11, 12, 13, 21, 22, 23], status: true }
 			],
 			modal:false,
 			contentModalText: '', //操作文字提示语句
@@ -81,7 +81,7 @@ export default {
 	},
 	onLoad(e) {
 		console.log(e)
-		this.params.orderId = e.orderId
+		this.params.shopOrderId = e.orderId
 		this.params.userId = e.userId
 		if (e.serviceProviderId) {
 			this.params.serviceProviderId = e.serviceProviderId
@@ -101,18 +101,18 @@ export default {
 					this.getOrderCommodityData()
 				}else if (res.code === 1) {
 					// 同为会所运营人员查看订单详情
-					this.$api.navigateTo(`/pages/user/order/order-details?type=share&orderId=${this.params.orderId}`)
+					this.$api.navigateTo(`/pages/user/order/order-details?type=share&orderId=${this.params.shopOrderId}`)
 				} else if (res.code === 2) {
 					// 协销查看分享订单
 					this.$api.navigateTo(
-						`/pages/seller/order/order-details?type=share&orderId=${this.params.orderId}&userId=${
+						`/pages/seller/order/order-details?type=share&orderId=${this.params.shopOrderId}&userId=${
 							this.params.userId
 						}`
 					)
 				} else if (res.code === 3) {
 					// 游客第二次查看订单详情
 					this.$api.redirectTo(
-						`/pages/user/order/order-sharedetails?orderId=${this.params.orderId}&userId=${
+						`/pages/user/order/order-sharedetails?orderId=${this.params.shopOrderId}&userId=${
 							this.params.userId
 						}`
 					)
@@ -128,7 +128,7 @@ export default {
 		async getOrderCommodityData() {
 			//查询订单商品信息s
 			try{
-				const res = await this.OrderService.OrderCommodityData({ orderId: this.params.orderId })
+				const res = await this.OrderService.OrderCommodityData({ shopOrderId: this.params.shopOrderId })
 				const data =  res.data
 				this.productList = data.productList
 				this.mapStateArr.forEach(el => {
@@ -145,12 +145,12 @@ export default {
 		},
 		btnConfirmPay() {
 			// 待支付订单
-			this.getOrderPaymentValidation(this.params.orderId)
+			this.getOrderPaymentValidation(this.params.shopOrderId)
 		},
 		async getOrderPaymentValidation(orderId) {
 			//监听根据付款状态做操作
 			try{
-				const res = await this.OrderService.OrderPaymentValidation({ orderId: orderId })
+				const res = await this.OrderService.OrderPaymentValidation({ shopOrderId: orderId })
 				const data = res.data
 				if(data.code == -1){
 					this.modal = true
@@ -170,12 +170,12 @@ export default {
 			switch (index) {
 				case 1:
 					this.$store.commit('setLoginType', 7)
-					this.$store.commit('setLoginOrderId', this.params.orderId)
+					this.$store.commit('setLoginOrderId', this.params.shopOrderId)
 					this.$api.navigateTo('/pages/login/login')
 					break
 				case 2:
 					this.$api.navigateTo(
-						`/pages/user/order/orderShareLogin?orderId=${this.params.orderId}&userId=${this.params.userId}`
+						`/pages/user/order/orderShareLogin?orderId=${this.params.shopOrderId}&userId=${this.params.userId}`
 					)
 					break
 			}

+ 3 - 3
pages/user/order/orderShareLogin.vue

@@ -27,7 +27,7 @@
 					iv:'',
 					encryptedData:'',
 					shareCode:'',	// 邀请码
-					orderId:0,		// 订单ID
+					shopOrderId:0,		// 订单ID
 					userId:0,		// 分享人的用户ID
 				},
 				isShareStatus:false,
@@ -35,7 +35,7 @@
 		},
 		onLoad(e) {
 			console.log(e)
-			this.params.orderId = e.orderId
+			this.params.shopOrderId = e.orderId
 			this.params.userId = e.userId
 			this.initGetCode()
 		},
@@ -57,7 +57,7 @@
 				}
 				this.OrderService.OrderShareCode(this.params).then(response =>{
 					if (response.code === 0) {//游客第一次查看订单详情
-						this.$api.redirectTo(`/pages/user/order/order-sharedetails?orderId=${this.params.orderId}&userId=${this.params.userId}`)
+						this.$api.redirectTo(`/pages/user/order/order-sharedetails?orderId=${this.params.shopOrderId}&userId=${this.params.userId}`)
 					}else{
 						this.$util.msg(response.msg,2000)
 					}

+ 563 - 527
pages/user/pay/card-under.vue

@@ -1,546 +1,582 @@
 <template>
-	<view class="container cashier">
-		<tui-skeleton
-			v-if="skeletonShow"
-			backgroundColor="#fafafa"
-			borderRadius="10rpx"
-			:isLoading="true"
-			:loadingType="5"
-		></tui-skeleton>
-		<view class="container-cash clearfix" v-else>
-			<view class="container-wrapper">
-				<view class="pay-content">
-					<view class="pay-p"><text>待付金额</text></view>
-					<view class="pay-money">
-						<text class="pay-sm">¥</text> <text class="pay-bg">{{ payableAmount | NumFormat }}</text>
-					</view>
-				</view>
-			</view>
-			<view class="pay-bring-wrapper clearfix">
-				<view class="pay-bring-content">
-					<view class="text-v title"
-						><text class="label">转账信息</text>
-						<text class="clipboard" @click.stop="clipboard(clipboardtEXT)">复制信息</text></view
-					>
-					<view class="text-v"><text class="label">开户行:</text> {{ bankInfo.bankOfDeposit }}</view>
-					<view class="text-v"><text class="label">银行卡号:</text>{{ bankInfo.bankCardNo }}</view>
-					<view class="text-v"
-						><text class="label">公司名称:</text>{{ bankInfo.bankUserName }}</view
-					>
-					<view class="text-content"
-						>请将订单款项转账至上述账号,转账完成后截图支付凭证,并在订单页面上传支付凭证。</view
-					>
-				</view>
-			</view>
-		</view>
-	</view>
+    <view class="container cashier">
+        <tui-skeleton
+            v-if="skeletonShow"
+            backgroundColor="#fafafa"
+            borderRadius="10rpx"
+            :isLoading="true"
+            :loadingType="5"
+        ></tui-skeleton>
+        <view class="container-cash clearfix" v-else>
+            <view class="container-wrapper">
+                <view class="pay-content">
+                    <view class="pay-p"><text>待付金额</text></view>
+                    <view class="pay-money">
+                        <text class="pay-sm">¥</text>
+                        <text class="pay-bg">{{ payableAmount | NumFormat }}</text>
+                    </view>
+                </view>
+            </view>
+            <view class="pay-bring-wrapper clearfix">
+                <view class="pay-bring-content">
+                    <view class="text-v-title title">
+                        <text class="account">转账信息</text>
+                        <text
+                            class="clipboard"
+                            v-if="bankInfo.bankAccountName || bankInfo.bankAccount || bankInfo.bankName"
+                            @click.stop="clipboard(clipboardtEXT)"
+                        >
+                            复制信息
+                        </text>
+                    </view>
+                    <view class="text-v">
+                        <text class="label">开户行:</text>
+                        {{ bankInfo.bankAccountName || '暂无' }}
+                    </view>
+                    <view class="text-v">
+                        <text class="label">银行卡号:</text>
+                        {{ bankInfo.bankAccount || '暂无' }}
+                    </view>
+                    <view class="text-v">
+                        <text class="label">公司名称:</text>
+                        {{ bankInfo.bankName || '暂无' }}
+                    </view>
+                    <view class="text-content">
+                        请将订单款项转账至上述账号,转账完成后截图支付凭证,并在订单页面上传支付凭证。
+                    </view>
+                </view>
+            </view>
+        </view>
+    </view>
 </template>
 
 <script>
 const thorui = require('@/components/clipboard/clipboard.thorui.js')
 import bankMixins from './mixins/bankMixins.js'
+
 export default {
-	mixins: [bankMixins],
-	data() {
-		return {
-			bankInfo: {
-				bankOfDeposit: '江苏银行北京朝阳门支行',
-				bankCardNo: '32250188000060717',
-				bankUserName: '联合丽格(北京)医疗美容投资连锁集团股份有限公司'
-			},
-			clipboardtEXT: `开户行:江苏银行北京朝阳门支行,银行卡号:32250188000060717,公司名称:联合丽格(北京)医疗美容投资连锁集团股份有限公司`,
-			orderId: '',
-			payableAmount: 0,
-			payOrderId: '',
-			isIphoneX: this.$store.state.isIphoneX,
-			CustomBar: this.CustomBar, // 顶部导航栏高度
-			skeletonShow: true,
-			productImage: ['https://static.caimei365.com/app/img/icon/icon-vxkecode.png']
-		}
-	},
-	onLoad(option) {
-		this.initData(option)
-	},
-	filters: {
-		NumFormat(value) {
-			if (!value) return '0.00'
-			/*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1,感谢Nils指正*/
-			/*后来改成了 Number(value)|0,但是输入超过十一位就为负数了,具体见评论 */
-			var intPart = Number(value) - (Number(value) % 1) //获取整数部分(这里是windy93的方法)
-			var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断
-			var floatPart = '.00' //预定义小数部分
-			var value2Array = value.toString().split('.')
-			//=2表示数据有小数位
-			if (value2Array.length == 2) {
-				floatPart = value2Array[1].toString() //拿到小数部分
+    mixins: [bankMixins],
+    data() {
+        return {
+            bankInfo: {
+                bankAccountName: '江苏银行北京朝阳门支行',
+                bankAccount: '32250188000060717',
+                name: '联合丽格(北京)医疗美容投资连锁集团股份有限公司'
+            },
+            clipboardtEXT:
+                '开户行:江苏银行北京朝阳门支行,银行卡号:32250188000060717,公司名称:联合丽格(北京)医疗美容投资连锁集团股份有限公司',
+            orderId: '',
+            shopOrderId: '',
+            payableAmount: 0,
+            payOrderId: '',
+            isIphoneX: this.$store.state.isIphoneX,
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            skeletonShow: true,
+            productImage: ['https://static.caimei365.com/app/img/icon/icon-vxkecode.png']
+        }
+    },
+    onLoad(option) {
+        this.initData(option)
+    },
+    filters: {
+        NumFormat(value) {
+            if (!value) return '0.00'
+            /*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1,感谢Nils指正*/
+            /*后来改成了 Number(value)|0,但是输入超过十一位就为负数了,具体见评论 */
+            var intPart = Number(value) - (Number(value) % 1) //获取整数部分(这里是windy93的方法)
+            var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断
+            var floatPart = '.00' //预定义小数部分
+            var value2Array = value.toString().split('.')
+            //=2表示数据有小数位
+            if (value2Array.length == 2) {
+                floatPart = value2Array[1].toString() //拿到小数部分
 
-				if (floatPart.length == 1) {
-					//补0,实际上用不着
-					return intPartFormat + '.' + floatPart + '0'
-				} else {
-					return intPartFormat + '.' + floatPart
-				}
-			} else {
-				return intPartFormat + floatPart
-			}
-		}
-	},
-	methods: {
-		initData(e) {
-			console.log(e)
-			this.orderId = e.orderId
-			this.payOrderId = '#' + e.orderId + '#'
-			// this.cmGetBankTypeLists()
-			this.PayOrderCheckoutCounter(this.orderId)
-		},
-		async PayOrderCheckoutCounter(orderId) {
-			try {
-				const res = await this.PayService.PayOrderCheckoutCounter({ orderId: orderId })
-				const data = res.data.order
-				this.payableAmount = data.payableAmount - data.receiptAmount //待付金额
-				setTimeout(() => {
-					this.skeletonShow = false
-				}, 500)
-			} catch (error) {
-				console.log('error', error)
-			}
-		},
-		clipboard(data) {
-			thorui.getClipboardData(data, res => {
-				if (res) {
-					this.$util.msg('复制成功', 2000, true, 'success')
-				} else {
-					this.$util.msg('复制失败', 2000, true, 'none')
-				}
-			})
-		},
-		previewImg(index) {
-			//顶部商品图片预览
-			let previewUrls = this.productImage
-			uni.previewImage({
-				current: 0, //图片索引
-				urls: previewUrls, //必须是http图片,本地图片无效
-				longPressActions: ''
-			})
-		}
-	},
-	onShow() {}
+                if (floatPart.length == 1) {
+                    //补0,实际上用不着
+                    return intPartFormat + '.' + floatPart + '0'
+                } else {
+                    return intPartFormat + '.' + floatPart
+                }
+            } else {
+                return intPartFormat + floatPart
+            }
+        }
+    },
+    methods: {
+        initData(e) {
+            this.shopOrderId = e.shopOrderId
+            this.payOrderId = '#' + e.orderId + '#'
+            // this.cmGetBankTypeLists()
+            this.PayOrderCheckoutCounter(this.shopOrderId)
+        },
+        async PayOrderCheckoutCounter(shopOrderId) {
+            try {
+                const { data } = await this.PayService.PayOrderCheckoutCounter({ shopOrderId: shopOrderId })
+                this.payableAmount = data.shopOrder.obligation
+                const { data: bankData } = await this.PayService.getShopBank({ shopId: data.shopOrder.shopId })
+                this.bankInfo = bankData
+                this.clipboardtEXT = `开户行:${bankData.bankAccountName},银行卡号:${
+                    bankData.bankAccount
+                },公司名称:${bankData.bankName}`
+                setTimeout(() => {
+                    this.skeletonShow = false
+                }, 500)
+            } catch (error) {
+                console.log('error', error)
+            }
+        },
+        clipboard(data) {
+            thorui.getClipboardData(data, res => {
+                if (res) {
+                    this.$util.msg('复制成功', 2000, true, 'success')
+                } else {
+                    this.$util.msg('复制失败', 2000, true, 'none')
+                }
+            })
+        },
+        previewImg(index) {
+            //顶部商品图片预览
+            let previewUrls = this.productImage
+            uni.previewImage({
+                current: 0, //图片索引
+                urls: previewUrls, //必须是http图片,本地图片无效
+                longPressActions: ''
+            })
+        }
+    },
+    onShow() {}
 }
 </script>
 
 <style lang="scss">
 page {
-	height: auto !important;
-	background-color: #ffffff;
+    height: auto !important;
+    background-color: #ffffff;
 }
 .container-cash {
-	width: 100%;
-	padding-bottom: 250rpx;
-	.pay-bring-title {
-		box-sizing: border-box;
-		width: 100%;
-		min-height: 96rpx;
-		padding: 20rpx 24rpx;
-		line-height: 48rpx;
-		text-align: left;
-		font-size: $font-size-24;
-		background: rgba(255, 234, 221, 1);
-		color: $color-system;
-	}
-	.container-wrapper {
-		width: 662rpx;
-		margin: 0 auto;
-		.pay-title {
-			font-size: $font-size-32;
-			line-height: 44rpx;
-			text-align: center;
-			color: #2a86ff;
-			margin: 40rpx 0 0 0;
-			width: 100%;
-			float: left;
-		}
-		.pay-content {
-			width: 574rpx;
-			height: 136rpx;
-			padding: 52rpx 44rpx;
-			background: url(https://static.caimei365.com/app/mini-mcare/icon/icon_payUnd@2x.png) no-repeat;
-			background-size: cover;
-			float: left;
-			margin-top: 40rpx;
-			.pay-p {
-				font-size: $font-size-26;
-				color: #ffffff;
-				line-height: 36rpx;
-			}
-			.pay-money {
-				color: #ffffff;
-				line-height: 84rpx;
-				font-weight: bold;
-				.pay-sm {
-					font-size: $font-size-26;
-				}
-				.pay-bg {
-					font-size: 50rpx;
-				}
-			}
-		}
-		.pay-check {
-			width: 100%;
-			height: auto;
-			float: left;
-			.check-title {
-				width: 622rpx;
-				height: 40rpx;
-				line-height: 40rpx;
-				padding: 0 20rpx;
-				margin-top: 24rpx;
-				.text {
-					font-size: $font-size-28;
-					color: $text-color;
-					text-align: left;
-					float: left;
-				}
-				.icon {
-					width: 40rpx;
-					height: 40rpx;
-					border-radius: 50%;
-					line-height: 40rpx;
-					text-align: center;
-					color: #ffffff;
-					font-size: $font-size-24;
-					background: radial-gradient(
-						circle,
-						rgba(225, 86, 22, 1) 0%,
-						rgba(255, 170, 0, 1) 67%,
-						rgba(249, 185, 156, 1) 100%
-					);
-					float: right;
-				}
-			}
-			.pay-checked {
-				width: 100%;
-				height: auto;
-				.pay-item {
-					width: 618rpx;
-					height: 96rpx;
-					border: 2px solid #f5f5f5;
-					border-radius: 30rpx;
-					padding: 20rpx;
-					margin: 24rpx 0;
-					display: flex;
-					background-color: #ffffff;
-					&.current {
-						border-color: $color-system;
-						.item-r {
-							.icon-duigou {
-								color: $color-system;
-							}
-						}
-					}
-					.item-l {
-						flex: 8;
-						.item-icon {
-							width: 96rpx;
-							height: 96rpx;
-							float: left;
-							text-align: center;
-							line-height: 96rpx;
-							margin-right: 20rpx;
-							.iconfont {
-								font-size: 88rpx;
-							}
-							.icon-weixinzhifu {
-								color: #09bb07;
-							}
-							.icon-gerenwangyinzhifu {
-								color: #034582;
-							}
-							.icon-daewangyinzhuanzhang {
-								font-size: 68rpx;
-								color: #034582;
-							}
-							.icon-qiyewangyinzhifu {
-								color: #004889;
-							}
-						}
-						.item-texts {
-							line-height: 96rpx;
-							font-size: $font-size-26;
-							color: $text-color;
-						}
-						.item-text {
-							line-height: 48rpx;
-							font-size: $font-size-26;
-							.txt-p {
-								color: $text-color;
-							}
-							.txt-t {
-								font-size: $font-size-24;
-								color: #999999;
-							}
-						}
-					}
-					.item-r {
-						flex: 2;
-						text-align: center;
-						line-height: 96rpx;
-						.icon-duigou {
-							font-size: 60rpx;
-							color: #ffffff;
-						}
-					}
-				}
-			}
-		}
-	}
-	.pay-button {
-		width: 100%;
-		float: left;
-		margin-top: 30rpx;
-		.btn {
-			width: 662rpx;
-			height: 88rpx;
-			border-radius: 44rpx;
-			font-size: $font-size-28;
-			line-height: 88rpx;
-			color: #ffffff;
-			margin: 0 auto;
-			text-align: center;
-			background: $btn-confirm;
-		}
-	}
-	.pay-statustext {
-		width: 100%;
-		height: auto;
-		float: left;
-		margin-top: 40rpx;
-		.pay-statustext-inner {
-			width: 662rpx;
-			height: 100%;
-			margin: 0 auto;
-			.pay-icon {
-				width: 62rpx;
-				height: 100%;
-				float: left;
-				text-align: center;
-				.iconfont {
-					color: #ff2a2a;
-					font-size: $font-size-36;
-					line-height: 20rpx;
-				}
-			}
-			.pay-text {
-				width: 560rpx;
-				height: 100%;
-				float: left;
-				line-height: 40rpx;
-				font-size: $font-size-24;
-				color: #ff2a2a;
-				text-align: justify;
-			}
-		}
-	}
-	.pay-bring {
-		width: 100%;
-		min-height: 190rpx;
-		padding: 24rpx 0;
-		background-color: #ffffff;
-		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		border-radius: 30rpx 30rpx 0 0;
-		display: flex;
-		align-items: center;
-		flex-direction: column;
-		.pay-bring-line {
-			display: flex;
-			align-items: center;
-			.line {
-				display: inline-block;
-				width: 48rpx;
-				height: 2px;
-				background-color: #707070;
-			}
-		}
-		.pay-bring-content {
-			width: 654rpx;
-			height: auto;
-			padding: 0 24rpx;
-			.text {
-				font-size: $font-size-24;
-				color: #666;
-				line-height: 44rpx;
-				text-align: center;
-				&.bg-color {
-					color: $color-system;
-					line-height: 88rpx;
-				}
-			}
-			.text-v {
-				font-size: $font-size-28;
-				color: #4a4f58;
-				line-height: 70rpx;
-				text-align: left;
-				&.bg-color {
-					line-height: 44rpx;
-					color: $color-system;
-				}
-				.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: 18rpx;
-					line-height: 36rpx;
-					display: inline-block;
-					margin-left: 10rpx;
-				}
-			}
-		}
-	}
-	.pay-bring-wrapper {
-		width: 100%;
-		padding: 24rpx 0;
-		background-color: #ffffff;
-		display: flex;
-		align-items: center;
-		flex-direction: column;
-		.pay-bring-content {
-			width: 654rpx;
-			height: auto;
-			padding: 0 24rpx;
-			margin-top: 60rpx;
-			.text-title {
-				width: 100%;
-				height: 320rpx;
-				margin-bottom: 20rpx;
-				image {
-					width: 320rpx;
-					height: 320rpx;
-					display: block;
-					margin: 0 auto;
-				}
-			}
-			.text {
-				font-size: $font-size-24;
-				color: #666;
-				line-height: 44rpx;
-				text-align: center;
-				&.bg-color {
-					color: $color-system;
-					line-height: 88rpx;
-				}
-			}
-			.text-v {
-				font-size: $font-size-28;
-				color: #4a4f58;
-				line-height: 48rpx;
-				text-align: justify;
-				margin-bottom: 40rpx;
-				.label {
-					color: #999999;
-				}
-				&.bg-color {
-					line-height: 44rpx;
-					color: $color-system;
-				}
-				.clipboard {
-					height: 48rpx;
-					background: #e2e2e2;
-					text-align: center;
-					font-size: $font-size-24;
-					color: #999999;
-					border-radius: 24rpx;
-					line-height: 46rpx;
-					display: inline-block;
-					margin-left: 24rpx;
-					border: 1px solid #f7f7f7;
-					box-sizing: border-box;
-					padding: 0 10px;
-				}
-			}
-			.text-content {
-				width: 100%;
-				background-color: #f5f5f5;
-				box-sizing: border-box;
-				padding: 24rpx;
-				line-height: 44rpx;
-				font-size: $font-size-28;
-				color: $color-system;
-				text-align: justify;
-				margin-top: 60rpx;
-				border-radius: 8rpx;
-			}
-		}
-	}
+    width: 100%;
+    padding-bottom: 250rpx;
+    .pay-bring-title {
+        box-sizing: border-box;
+        width: 100%;
+        min-height: 96rpx;
+        padding: 20rpx 24rpx;
+        line-height: 48rpx;
+        text-align: left;
+        font-size: $font-size-24;
+        background: rgba(255, 234, 221, 1);
+        color: $color-system;
+    }
+    .container-wrapper {
+        width: 662rpx;
+        margin: 0 auto;
+        .pay-title {
+            font-size: $font-size-32;
+            line-height: 44rpx;
+            text-align: center;
+            color: #2a86ff;
+            margin: 40rpx 0 0 0;
+            width: 100%;
+            float: left;
+        }
+        .pay-content {
+            width: 574rpx;
+            height: 136rpx;
+            padding: 52rpx 44rpx;
+            background: url(https://static.caimei365.com/app/mini-mcare/icon/icon_payUnd@2x.png) no-repeat;
+            background-size: cover;
+            float: left;
+            margin-top: 40rpx;
+            .pay-p {
+                font-size: $font-size-26;
+                color: #ffffff;
+                line-height: 36rpx;
+            }
+            .pay-money {
+                color: #ffffff;
+                line-height: 84rpx;
+                font-weight: bold;
+                .pay-sm {
+                    font-size: 40rpx;
+                }
+                .pay-bg {
+                    font-size: 40rpx;
+                }
+            }
+        }
+        .pay-check {
+            width: 100%;
+            height: auto;
+            float: left;
+            .check-title {
+                width: 622rpx;
+                height: 40rpx;
+                line-height: 40rpx;
+                padding: 0 20rpx;
+                margin-top: 24rpx;
+                .text {
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    text-align: left;
+                    float: left;
+                }
+                .icon {
+                    width: 40rpx;
+                    height: 40rpx;
+                    border-radius: 50%;
+                    line-height: 40rpx;
+                    text-align: center;
+                    color: #ffffff;
+                    font-size: $font-size-24;
+                    background: radial-gradient(
+                        circle,
+                        rgba(225, 86, 22, 1) 0%,
+                        rgba(255, 170, 0, 1) 67%,
+                        rgba(249, 185, 156, 1) 100%
+                    );
+                    float: right;
+                }
+            }
+            .pay-checked {
+                width: 100%;
+                height: auto;
+                .pay-item {
+                    width: 618rpx;
+                    height: 96rpx;
+                    border: 2px solid #f5f5f5;
+                    border-radius: 30rpx;
+                    padding: 20rpx;
+                    margin: 24rpx 0;
+                    display: flex;
+                    background-color: #ffffff;
+                    &.current {
+                        border-color: $color-system;
+                        .item-r {
+                            .icon-duigou {
+                                color: $color-system;
+                            }
+                        }
+                    }
+                    .item-l {
+                        flex: 8;
+                        .item-icon {
+                            width: 96rpx;
+                            height: 96rpx;
+                            float: left;
+                            text-align: center;
+                            line-height: 96rpx;
+                            margin-right: 20rpx;
+                            .iconfont {
+                                font-size: 88rpx;
+                            }
+                            .icon-weixinzhifu {
+                                color: #09bb07;
+                            }
+                            .icon-gerenwangyinzhifu {
+                                color: #034582;
+                            }
+                            .icon-daewangyinzhuanzhang {
+                                font-size: 68rpx;
+                                color: #034582;
+                            }
+                            .icon-qiyewangyinzhifu {
+                                color: #004889;
+                            }
+                        }
+                        .item-texts {
+                            line-height: 96rpx;
+                            font-size: $font-size-26;
+                            color: $text-color;
+                        }
+                        .item-text {
+                            line-height: 48rpx;
+                            font-size: $font-size-26;
+                            .txt-p {
+                                color: $text-color;
+                            }
+                            .txt-t {
+                                font-size: $font-size-24;
+                                color: #999999;
+                            }
+                        }
+                    }
+                    .item-r {
+                        flex: 2;
+                        text-align: center;
+                        line-height: 96rpx;
+                        .icon-duigou {
+                            font-size: 60rpx;
+                            color: #ffffff;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    .pay-button {
+        width: 100%;
+        float: left;
+        margin-top: 30rpx;
+        .btn {
+            width: 662rpx;
+            height: 88rpx;
+            border-radius: 44rpx;
+            font-size: $font-size-28;
+            line-height: 88rpx;
+            color: #ffffff;
+            margin: 0 auto;
+            text-align: center;
+            background: $btn-confirm;
+        }
+    }
+    .pay-statustext {
+        width: 100%;
+        height: auto;
+        float: left;
+        margin-top: 40rpx;
+        .pay-statustext-inner {
+            width: 662rpx;
+            height: 100%;
+            margin: 0 auto;
+            .pay-icon {
+                width: 62rpx;
+                height: 100%;
+                float: left;
+                text-align: center;
+                .iconfont {
+                    color: #ff2a2a;
+                    font-size: $font-size-36;
+                    line-height: 20rpx;
+                }
+            }
+            .pay-text {
+                width: 560rpx;
+                height: 100%;
+                float: left;
+                line-height: 40rpx;
+                font-size: $font-size-24;
+                color: #ff2a2a;
+                text-align: justify;
+            }
+        }
+    }
+    .pay-bring {
+        width: 100%;
+        min-height: 190rpx;
+        padding: 24rpx 0;
+        background-color: #ffffff;
+        box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        border-radius: 30rpx 30rpx 0 0;
+        display: flex;
+        align-items: center;
+        flex-direction: column;
+        .pay-bring-line {
+            display: flex;
+            align-items: center;
+            .line {
+                display: inline-block;
+                width: 48rpx;
+                height: 2px;
+                background-color: #707070;
+            }
+        }
+        .pay-bring-content {
+            width: 654rpx;
+            height: auto;
+            padding: 0 24rpx;
+            .text {
+                font-size: $font-size-24;
+                color: #666;
+                line-height: 44rpx;
+                text-align: center;
+                &.bg-color {
+                    color: $color-system;
+                    line-height: 88rpx;
+                }
+            }
+            .text-title {
+            }
+            .text-v {
+                font-size: $font-size-28;
+                color: #4a4f58;
+                line-height: 70rpx;
+                text-align: left;
+                &.bg-color {
+                    line-height: 44rpx;
+                    color: $color-system;
+                }
+                .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: 18rpx;
+                    line-height: 36rpx;
+                    display: inline-block;
+                    margin-left: 10rpx;
+                }
+            }
+        }
+    }
+    .pay-bring-wrapper {
+        width: 100%;
+        padding: 24rpx 0;
+        background-color: #ffffff;
+        display: flex;
+        align-items: center;
+        flex-direction: column;
+        .pay-bring-content {
+            width: 654rpx;
+            height: auto;
+            padding: 0 24rpx;
+            margin-top: 48rpx;
+            .text-title {
+                width: 100%;
+                height: 320rpx;
+                margin-bottom: 20rpx;
+                image {
+                    width: 320rpx;
+                    height: 320rpx;
+                    display: block;
+                    margin: 0 auto;
+                }
+            }
+            .text {
+                font-size: $font-size-24;
+                color: #666;
+                line-height: 44rpx;
+                text-align: center;
+                &.bg-color {
+                    color: $color-system;
+                    line-height: 88rpx;
+                }
+            }
+            .text-v {
+                font-size: $font-size-28;
+                color: #4a4f58;
+                line-height: 48rpx;
+                text-align: justify;
+                margin-bottom: 20rpx;
+                .account {
+                    color: #333333;
+                }
+            }
+            .text-v-title {
+                font-size: $font-size-28;
+                color: #4a4f58;
+                line-height: 48rpx;
+                text-align: justify;
+                margin-bottom: 40rpx;
+                .account {
+                    color: #333333;
+                }
+                .label {
+                    color: #999999;
+                }
+                &.bg-color {
+                    line-height: 44rpx;
+                    color: $color-system;
+                }
+                .clipboard {
+                    height: 48rpx;
+                    background: #e2e2e2;
+                    text-align: center;
+                    font-size: $font-size-24;
+                    color: #999999;
+                    border-radius: 24rpx;
+                    line-height: 46rpx;
+                    display: inline-block;
+                    margin-left: 24rpx;
+                    border: 1px solid #f7f7f7;
+                    box-sizing: border-box;
+                    padding: 0 10px;
+                    margin-left: 60rpx;
+                }
+            }
+            .text-content {
+                width: 100%;
+                background-color: #f5f5f5;
+                box-sizing: border-box;
+                padding: 24rpx;
+                line-height: 44rpx;
+                font-size: $font-size-28;
+                color: #f94b4b;
+                text-align: justify;
+                margin-top: 60rpx;
+                border-radius: 8rpx;
+            }
+        }
+    }
 }
 .freight-alert {
-	width: 100%;
-	height: 100%;
-	background: rgba(0, 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: 422rpx;
-		height: 434rpx;
-		position: absolute;
-		background: $bg-color;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		top: 0;
-		margin: auto;
-		padding: 20rpx 32rpx;
-		border-radius: 12rpx;
-		.title {
-			width: 100%;
-			height: 68rpx;
-			line-height: 68rpx;
-			font-size: $font-size-28;
-			color: $text-color;
-			text-align: center;
-			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: 20rpx 0;
-				line-height: 44rpx;
-				font-size: $font-size-26;
-				color: #666666;
-				text-align: justify;
-			}
-			.text-p {
-				line-height: 44rpx;
-				font-size: $font-size-26;
-				color: $color-system;
-				text-align: left;
-			}
-		}
-	}
+    width: 100%;
+    height: 100%;
+    background: rgba(0, 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: 422rpx;
+        height: 434rpx;
+        position: absolute;
+        background: $bg-color;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        top: 0;
+        margin: auto;
+        padding: 20rpx 32rpx;
+        border-radius: 12rpx;
+        .title {
+            width: 100%;
+            height: 68rpx;
+            line-height: 68rpx;
+            font-size: $font-size-28;
+            color: $text-color;
+            text-align: center;
+            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: 20rpx 0;
+                line-height: 44rpx;
+                font-size: $font-size-26;
+                color: #666666;
+                text-align: justify;
+            }
+            .text-p {
+                line-height: 44rpx;
+                font-size: $font-size-26;
+                color: $color-system;
+                text-align: left;
+            }
+        }
+    }
 }
 </style>

+ 9 - 7
pages/user/pay/success.vue

@@ -27,7 +27,8 @@
 	export default{
 		data(){
 			return{
-				orderId:0,
+				shopOrderId:0, // 子订单id
+                orderId: 0,
 				nvabarData: {		//顶部自定义导航
 					haveBack:false,
 					haveHome:true,
@@ -43,7 +44,7 @@
 				successText:'订单支付失败',
 				isIphoneX:this.$store.state.isIphoneX,
 				CustomBar:this.CustomBar,// 顶部导航栏高度
-				mapStateArr:[11,12,13,21,22,23,111]
+				mapStateArr:[11,12,13,21,22,23]
 				
 			}
 		},
@@ -67,7 +68,8 @@
 			},
 			initData(option){
 				const data = JSON.parse(option.data)
-				this.orderId = data.data.orderId
+				this.shopOrderId = data.data.shopOrderId
+                this.orderId = data.data.orderId
 				this.payType = data.data.type
 				this.amuntMoney = data.data.payAmount
 				if(this.payType == 'success'){
@@ -77,10 +79,10 @@
 					this.payStatus = false
 					this.successText = '订单支付失败'
 				}
-				this.PayOrderCheckoutCounter(this.orderId)
+				this.PayOrderCheckoutCounter(this.shopOrderId)
 			},
-			PayOrderCheckoutCounter(orderId){//初始化支付信息
-				this.PayService.PayOrderCheckoutCounter({ orderId : orderId }).then(response =>{
+			PayOrderCheckoutCounter(shopOrderId){//初始化支付信息
+				this.PayService.PayOrderCheckoutCounter({ shopOrderId : shopOrderId }).then(response =>{
 					this.isRepuest = true
 					const status = response.data.order.status //主订单状态
 					this.mapStateArr.forEach(value => {
@@ -96,7 +98,7 @@
 				this.$api.reLaunch(`/pages/user/order/order-pay-list?orderId=${this.orderId}`)
 			},
 			details(){
-				this.$api.reLaunch('/pages/user/order/order-details?type=share&orderId='+this.orderId)
+				this.$api.reLaunch('/pages/user/order/order-details?type=share&orderId='+this.shopOrderId)
 			}
 		},
 		onShow() {

+ 8 - 1
services/pay.service.js

@@ -287,5 +287,12 @@ export default class PayService {
             data, 
             isLoading: true ,
         }) 
-    } 
+    }
+    getShopBank (data = {}) {
+        return this.AjaxService.get({
+            url: '/order/club/getShopBank',
+            data,
+            isLoading: false
+        })
+    }
 }