Kaynağa Gözat

销售合同

zhengjinyi 1 ay önce
ebeveyn
işleme
77012d4910

+ 2 - 1
components/cm-module/productDetails/cm-ladder-popup.vue

@@ -5,7 +5,8 @@
 			<view class="tui-scrollview-box">
 				<view class="ladder-main clearfix">
 					<view class="ladder-item">
-						<view class="ladder-item-td">起订量</view> <view class="ladder-item-td">价格</view>
+						<view class="ladder-item-td">起订量</view> 
+                        <view class="ladder-item-td">价格</view>
 					</view>
 					<view class="ladder-item" v-for="(ladd, index) in ladderPriceList" :key="index">
 						<view class="ladder-item-td">{{ ladd.numRange }}</view>

+ 1 - 1
pages.json

@@ -932,7 +932,7 @@
 				{
 					"path": "order/order-historylist",
 					"style": {
-						"navigationBarTitleText": "订单列表"
+						"navigationBarTitleText": "机构订单"
 					}
 				}, 
 				{

+ 1 - 1
pages/login/logincode.vue

@@ -111,7 +111,7 @@
                             }
                         }
                         uni.removeStorageSync('LOGIN_REDIRECT_URL')
-                    }, 1000)
+                    }, 2000)
                 } catch (error) {
                     this.$util.msg(error.msg, 2000)
                     this.isUserInfo = false

+ 19 - 85
pages/seller/club/club-list.vue

@@ -34,22 +34,24 @@
                                 </view>
                                 <view class="list-item">
                                     <view class="list-title">
+                                        <text class="tags" v-if="club.vipFlag == 0 && club.userIdentity === 2">VIP</text>
+                                        <text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
                                         <text class="list-name">
                                             {{ club.name }}
                                         </text>
-                                        <text class="tags"
-                                            v-if="club.vipFlag == 0 && club.userIdentity === 2">VIP</text>
-                                        <text class="tags sv" v-if="club.vipFlag == 1">SVIP</text>
-                                        <text class="list-hist" @click.stop="handleClickOper(5, club)"><text
-                                                class="iconfont icon-dingdanliebiao"></text>订单列表</text>
                                     </view>
                                 </view>
                             </view>
                             <view class="club-list-bot">
+                              
                                 <view class="btn buy" @click.stop="handleClickOper(1, club)"> 
                                     <!-- <text class="iconfont icon-lijixiadan"></text> -->
                                     立即下单
                                 </view>
+                                <view class="btn none" @click.stop="handleClickOper(5, club)">
+                                    <!-- <text class="iconfont icon-dingdanliebiao"></text> -->
+                                    机构订单
+                                </view>
                                 <!--   <view class="btn" @click.stop="handleClickOper(3, club)"> <text class="iconfont icon-zaicigoumai1"></text> 再次购买</view>
             							<view class="btn" @click.stop="handleClickOper(6, club)"> <text class="iconfont icon-youhuiquan"></text> 购买优惠券</view>
             							<view class="btn" @click.stop="handleShowBubble(club,index)"> 
@@ -84,7 +86,7 @@
         pageNum: 1,
         pageSize: 10,
         spId: 0,
-        status: 66,
+        status: 90,
         type: 1,
         groupServiceId: 0
     }
@@ -357,13 +359,13 @@
                                 color: $text-color;
                                 padding-left: 11rpx;
                                 flex-direction: row;
+                                display: flex;
                                 justify-content: flex-start;
+                                align-items: center;
                 
                                 .list-name {
                                     min-width: 100rpx;
-                                    display: block;
-                                    float: left;
-                                    text-align: left;
+                                    display: flex;
                                     -o-text-overflow: ellipsis;
                                     text-overflow: ellipsis;
                                     display: -webkit-box;
@@ -461,7 +463,7 @@
                         height: 60rpx;
                         float: left;
                         border-radius: 8rpx;
-                
+                        
                         .btn {
                             height: 60rpx;
                             box-sizing: border-box;
@@ -474,6 +476,13 @@
                             float: right;
                             position: relative;
                             border-radius: 40rpx;
+                            margin-right: 20rpx;
+                            &.none{
+                                background: #F1F1F1;
+                                border: 1px solid #E1E1E1;
+                                color: #999999;
+                                line-height: 56rpx;
+                            }
                             &.buy{
                                 background:$btn-confirm;
                                 color: #FFFFFF;
@@ -481,81 +490,6 @@
                                     color: #FFFFFF;
                                 }
                             }
-                            &:nth-child(2) {
-                                &:before {
-                                    content: '';
-                                    width: 1px;
-                                    height: 20rpx;
-                                    background-color: #B2B2B2;
-                                    position: absolute;
-                                    right: 0;
-                                    top: 30rpx;
-                                }
-                            }
-                
-                            &:nth-child(3) {
-                                &:before {
-                                    content: '';
-                                    width: 1px;
-                                    height: 20rpx;
-                                    background-color: #B2B2B2;
-                                    position: absolute;
-                                    right: 0;
-                                    top: 30rpx;
-                                }
-                            }
-                
-                            &:last-child {
-                                // padding: 0 36rpx;
-                
-                                .iconfont {
-                                    font-weight: bold;
-                                }
-                
-                                .btn-bubble {
-                                    width: 200rpx;
-                                    height: 160rpx;
-                                    background: rgba(51, 51, 51, 0.8);
-                                    position: absolute;
-                                    top: -154rpx;
-                                    right: 0;
-                                    border-radius: 8rpx;
-                
-                                    &:before {
-                                        content: '';
-                                        width: 0;
-                                        height: 0;
-                                        border: 15rpx solid transparent;
-                                        border-top: 15rpx solid rgba(51, 51, 51, 0.8);
-                                        position: absolute;
-                                        bottom: -28rpx;
-                                        right: 42rpx;
-                                    }
-                
-                                    .btn-view {
-                                        width: 100%;
-                                        height: 80rpx;
-                                        box-sizing: border-box;
-                                        line-height: 80rpx;
-                                        font-size: $font-size-24;
-                                        color: #FFFFFF;
-                                        text-align: center;
-                                        float: left;
-                
-                                        .iconfont {
-                                            font-size: 28rpx;
-                                            color: #FFFFFF;
-                                            margin-right: 5rpx;
-                                            font-weight: normal;
-                                        }
-                
-                                        &.border {
-                                            border-bottom: 1px solid rgba(255, 255, 255, 0.3);
-                                        }
-                                    }
-                                }
-                            }
-                
                             .iconfont {
                                 font-size: 30rpx;
                                 color: #333333;

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

@@ -20,9 +20,9 @@
 					<view class="tips" v-if="shareCode">分享码:{{ shareCode }}</view> 分享订单
 				</view>
 			</template>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', order)"
+	<!-- 		<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', order)"
 				>确认订单</view
-			>
+			> -->
 			<view
 				class="btn btn-query"
 				v-if="btnState.isQuery && order.secondHandOrderFlag != 1"

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

@@ -24,9 +24,9 @@
 				@click.stop="btnConfirm('query', shopOrderId)"
 				>查看物流</view
 			>
-			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', shopOrderId)"
+<!-- 			<view class="btn btn-color" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', shopOrderId)"
 				>确认订单</view
-			>
+			> -->
 		</view>
 	</view>
 </template>

+ 1 - 1
pages/user/order/components/cm-address-temp.vue

@@ -120,7 +120,7 @@
 			justify-content: center;
 			width: 40rpx;
 			color: $color-system;
-			font-size: 46rpx;
+			font-size: 36rpx;
 			margin-right: 10rpx;
 		}	
 		.address-cen {

+ 118 - 0
pages/user/order/components/cm-contract-goods.vue

@@ -0,0 +1,118 @@
+<template name="goods">
+    <view class="goods-template">
+        <!-- 商品列表 -->
+        <view class="goods-list">
+            <view class="goods-main clearfix" v-for="(supplier, index) in goodsData" :key="index">
+            	<view class="goods-item">
+            		<view class="goods-item-td">产品名称</view> 
+                    <view class="goods-item-td">注册证编号/备案编号</view>
+                    <view class="goods-item-td">生产厂家</view>
+                    <view class="goods-item-td">规格</view>
+                    <view class="goods-item-td">数量(支)</view>
+                    <view class="goods-item-td">单价(元/支)</view>
+                    <view class="goods-item-td">总价(元)</view>
+            	</view>
+            	<view class="goods-item" v-for="(pros, idx) in supplier.cartList" :key="idx">
+            		<view class="goods-item-td">{{ pros.name }}</view>
+            		<view class="goods-item-td">国械注准20213130488 晋药消械生产许20150014号</view>
+            		<view class="goods-item-td">山西锦波生物医药股份有限公司</view>
+            		<view class="goods-item-td">{{ pros.unit }}</view>
+            		<view class="goods-item-td"><text class="red">{{ pros.number }}</text></view>
+            		<view class="goods-item-td"><text class="red">¥{{ pros.price | NumFormat }}</text></view>
+            		<view class="goods-item-td"><text class="red">¥{{ supplier.totalPrice | NumFormat }}</text> </view>
+            	</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        name: 'goods',
+        props: {
+            goodsData: {
+                type: Array
+            }
+        },
+        data() {
+            return {
+               
+            }
+        },
+        created() {
+            
+        },
+        filters: {
+            NumFormat(value) {
+                //处理金额
+                return Number(value).toFixed(2)
+            }
+        },
+        watch: {
+            goodsData: {
+                handler: function(el) {
+                    //监听对象的变换使用 function,箭头函数容易出现this指向不正确
+                    this.goodsData = el
+                },
+                deep: true
+            }
+        },
+        computed: {},
+        methods: {
+            
+        }
+    }
+</script>
+
+<style lang="scss">
+    .goods-template {
+        width: 100%;
+        height: auto;
+        background: #ffffff;
+        box-sizing: border-box;
+        padding: 24rpx 0;
+        .goods-list {
+            width: 100%;
+            height: auto;
+            overflow-x: scroll;
+            padding: 24rpx 0;
+            .goods-main {
+            	width: 1500rpx;
+            	min-height: 240rpx;
+            	border: 1px solid #666666;
+            	border-radius: 10rpx;
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+            	.goods-item {
+            		width: 100%;
+            		border-bottom: 1px solid #666666;
+                    display: flex;
+                    justify-content: center;
+            		&:last-child {
+            			border-bottom: none;
+            		}
+            		.goods-item-td {
+                        width: 14.28%;
+                        display: flex;
+                        justify-content: center;
+                        align-items: center;
+                        flex-wrap: wrap;
+                        padding: 20rpx;
+            			font-size: $font-size-24;
+                        line-height: 40rpx;
+            			color: #666666;
+            			box-sizing: border-box;
+                        border-right: 1px solid #666666;
+                        .red{
+                            color: #ff2a2a;
+                        }
+            			&:last-child {
+                            border-right: none;
+            			}
+            		}
+            	}
+            }
+        }
+    }
+</style>

+ 118 - 0
pages/user/order/components/cm-contract-order.vue

@@ -0,0 +1,118 @@
+<template name="goods">
+    <view class="goods-template">
+        <!-- 商品列表 -->
+        <view class="goods-list">
+            <view class="goods-main clearfix">
+            	<view class="goods-item">
+            		<view class="goods-item-td">产品名称</view> 
+                    <view class="goods-item-td">注册证编号</view>
+                    <view class="goods-item-td">生产厂家</view>
+                    <view class="goods-item-td">规格</view>
+                    <view class="goods-item-td">数量(支)</view>
+                    <view class="goods-item-td">单价(元/支)</view>
+                    <view class="goods-item-td">总价(元)</view>
+            	</view>
+            	<view class="goods-item" v-for="(pros, idx) in orderData.orderProductList" :key="idx">
+            		<view class="goods-item-td">{{ pros.name }}</view>
+            		<view class="goods-item-td">国械注准20213130488 晋药消械生产许20150014号</view>
+            		<view class="goods-item-td">山西锦波生物医药股份有限公司</view>
+            		<view class="goods-item-td">{{ pros.productUnit }}</view>
+            		<view class="goods-item-td"><text class="red">{{ pros.num }}</text></view>
+            		<view class="goods-item-td"><text class="red">¥{{ pros.price | NumFormat }}</text></view>
+            		<view class="goods-item-td"><text class="red">¥{{ orderData.totalAmount | NumFormat }}</text> </view>
+            	</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        name: 'goods',
+        props: {
+            orderData: {
+                type: Object
+            }
+        },
+        data() {
+            return {
+                
+            }
+        },
+        created() {
+            console.log('orderData',this.orderData)
+        },
+        filters: {
+            NumFormat(value) {
+                //处理金额
+                return Number(value).toFixed(2)
+            }
+        },
+        watch: {
+            orderData: {
+                handler: function(el) {
+                    //监听对象的变换使用 function,箭头函数容易出现this指向不正确
+                    this.orderData = el
+                },
+                deep: true
+            }
+        },
+        computed: {},
+        methods: {
+            
+        }
+    }
+</script>
+
+<style lang="scss">
+    .goods-template {
+        width: 100%;
+        height: auto;
+        background: #ffffff;
+        box-sizing: border-box;
+        padding: 24rpx 0;
+        .goods-list {
+            width: 100%;
+            height: auto;
+            overflow-x: scroll;
+            padding: 24rpx 0;
+            .goods-main {
+            	width: 1500rpx;
+            	min-height: 240rpx;
+            	border: 1px solid #666666;
+            	border-radius: 10rpx;
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+            	.goods-item {
+            		width: 100%;
+            		border-bottom: 1px solid #666666;
+                    display: flex;
+                    justify-content: center;
+            		&:last-child {
+            			border-bottom: none;
+            		}
+            		.goods-item-td {
+                        width: 14.28%;
+                        display: flex;
+                        justify-content: center;
+                        align-items: center;
+                        flex-wrap: wrap;
+                        padding: 20rpx;
+            			font-size: $font-size-24;
+                        line-height: 40rpx;
+            			color: #666666;
+            			box-sizing: border-box;
+                        border-right: 1px solid #666666;
+                        .red{
+                            color: #ff2a2a;
+                        }
+            			&:last-child {
+                            border-right: none;
+            			}
+            		}
+            	}
+            }
+        }
+    }
+</style>

+ 72 - 72
pages/user/order/components/cm-contract-temp.vue

@@ -1,27 +1,37 @@
 <template name="cm-parameter">
     <view class="contract-template">
         <!-- 发票信息 -->
-        <view class="contract-title" @tap.stop="handleContract">
-            <text class="text">销售合同:</text>
-            <text class="contract-text">查看合同</text>
-            <text class="iconfont icon-xiangyou"></text>
-        </view>
-        <view class="contract-checked" @click.stop="handleChecked">
-            <view class="checkbox-text">
-                (请查看并阅读销售合同后勾选同意)
-            </view>
-            <view class="checkbox-box">
-                <button class="checkbox iconfont" hover-class="btn-hover"
-                    :class="[ischecked ? 'icon-gouxuanl' : 'icon-weigouxuan']"></button>
+        <view class="contract-title">
+            <view class="text">销售合同:</view>
+            <view class="contract-checked" @click.stop="handleChecked">
+                <view class="checkbox-text">
+                    请先阅读
+                    <text @click.stop="handleContract">
+                     《销售合同》
+                    </text>
+                    后勾选同意
+                </view>
+                <view class="checkbox-box">
+                    <button class="checkbox iconfont" hover-class="btn-hover"
+                        :class="[ischecked ? 'icon-gouxuanl' : 'icon-weigouxuan']"></button>
+                </view>
             </view>
         </view>
+        
     </view>
 </template>
 
 <script>
     export default {
         name: 'cm-contract-temp',
-        props: {},
+        props: {
+            invoiceData:{
+                type:Object
+            },
+            goodsData: {
+            	type: Array
+            }
+        },
         data() {
             return {
                 isIphoneX: this.$store.state.isIphoneX,
@@ -38,11 +48,12 @@
         methods: {
             // 跳转订单合同
             handleContract() {
-                this.$api.navigateTo('/pages/user/order/order-contract')
+                this.$api.navigateTo(`/pages/user/order/order-contract?type=1&goods=${JSON.stringify(this.goodsData)}`)
             },
-            //勾选使用余额
+            // 勾选销售合同
             handleChecked() {
                 this.ischecked = !this.ischecked
+                this.$emit('checkedContract', this.ischecked)
             },
         }
     }
@@ -57,72 +68,61 @@
         margin-top: 24rpx;
 
         .contract-title {
-            width: 702rpx;
-            padding: 0 24rpx;
-            height: 66rpx;
-            line-height: 66rpx;
-            position: relative;
-
+            width: 100%;
+            padding: 0 0 0 24rpx;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            box-sizing: border-box;
+            
             .text {
                 font-size: $font-size-28;
                 color: $text-color;
                 font-weight: bold;
+                height: 88rpx;
+                line-height: 88rpx;
             }
 
-            .contract-text {
-                font-size: $font-size-24;
-                color: #999999;
-                line-height: 66rpx;
-                display: inline-block;
-                float: right;
-                box-sizing: border-box;
-                padding-right: 40rpx;
-            }
-
-            .iconfont {
-                width: 50rpx;
-                height: 66rpx;
-                line-height: 66rpx;
-                color: #999999;
-                display: block;
-                position: absolute;
-                right: 0;
-                top: 0;
-            }
-        }
-
-        .contract-checked {
-            width: 100%;
-            height: 60rpx;
-            display: flex;
-            justify-content: flex-end;
-            box-sizing: border-box;
-            padding: 0 10rpx;
-
-            .checkbox-box {
+            .contract-checked {
+                height: 88rpx;
                 display: flex;
-                width: 60rpx;
-                float: left;
-                height: 100%;
-                font-size: $font-size-28;
-
-                .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;
+                justify-content: flex-end;
+                box-sizing: border-box;
+                padding: 0 10rpx;
+                line-height: 88rpx;
+            
+                .checkbox-box {
+                    display: flex;
+                    width: 60rpx;
+                    float: left;
+                    height: 100%;
+                    font-size: $font-size-28;
+            
+                    .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;
+                        line-height: 88rpx;
+                    }
+                }
+            
+                .checkbox-text {
+                    font-size: $font-size-24;
+                    color: #999999;
+                    line-height: 88rpx;
+                    text{
+                        color: #1890f9;
+                    }
                 }
-            }
-
-            .checkbox-text {
-                font-size: $font-size-24;
-                color: #fea785;
             }
         }
+
+        
     }
 </style>

+ 6 - 4
pages/user/order/components/cm-details-button.vue

@@ -115,8 +115,10 @@ export default {
 		btnConfirm(type, order) {
 			let data = {
 				type: type,
-				shopOrderId: order.shopOrderId,
-				order: order
+				shopOrderId: order.shopOrderId,
+				shopOrderNo: order.shopOrderNo,
+				order: order,
+                shopId: order.shopId
 			}
 			this.$emit('buttonConfirm', data)
 		}
@@ -152,7 +154,7 @@ export default {
 		.btn {
 			width: 160rpx;
 			height: 64rpx;
-			margin: 22rpx 12rpx 22rpx 0;
+			margin: 22rpx 10rpx 22rpx 0;
 			line-height: 64rpx;
 			font-size: $font-size-26;
 			color: #666666;
@@ -176,7 +178,7 @@ export default {
 			}
 		}
 		.btn-confirm {
-			background: #ff7a51;
+			background: $btn-confirm;
 			border-color: #ff7a51;
 			color: #ffffff;
 		}

+ 5 - 3
pages/user/order/components/cm-list-button.vue

@@ -112,8 +112,10 @@ export default {
 		btnConfirm(type, order) {
 			let data = {
 				type: type,
-				shopOrderId: order.shopOrderId,
-				order: order
+				shopOrderId: order.shopOrderId,
+                shopOrderNo: order.shopOrderNo,
+				order:  order,
+                shopId: order.shopId
 			}
 			this.$emit('buttonConfirm', data)
 		}
@@ -184,7 +186,7 @@ export default {
 		// 	background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
 		// }
 		.btn-confirm {
-			background: #ff7a51;
+			background: $btn-confirm;
 			border-color: #ff7a51;
 			color: #ffffff;
 		}

+ 16 - 15
pages/user/order/components/cm-return-popup.vue

@@ -1,17 +1,17 @@
 <template>
     <view class="goods-return-instructions">
         <view class="section">
-            <view class="checkbox">
-                <checkbox-group @change="onCheckBoxGroupChange">
-                    <label>
-                        <checkbox value="agreement" v-show="false" />
-                        <view class="iconfont" :class="[isActive ? 'icon-yixuanze' : 'icon-weixuanze']"></view>
-                    </label>
-                </checkbox-group>
-            </view>
             <view class="label">
                 提交订单前,请先阅读
                 <text @click="popupShow = true">《特殊商品退货须知》</text>
+            </view>
+            <view class="checkbox">
+                <checkbox-group @change="onCheckBoxGroupChange">
+                    <label>
+                        <checkbox value="agreement" v-show="false" />
+                        <view class="iconfont" :class="[isActive ? 'icon-gouxuanl' : 'icon-weigouxuan']"></view>
+                    </label>
+                </checkbox-group>
             </view>
         </view>
         <tui-modal :show="popupShow" custom>
@@ -61,13 +61,14 @@ export default {
 
 <style lang="scss" scoped>
 .goods-return-instructions {
-    background-color: #fffaf8;
+    background-color: #ffffff;
     .section {
         display: flex;
-        align-items: center;
+        align-items: center;
+        justify-content: flex-end;
         font-size: 24rpx;
-        height: 64rpx;
-        padding: 0 32rpx;
+        height: 88rpx;
+        padding: 0 10rpx;
         color: #333333;
         text {
             color: #1890f9;
@@ -75,11 +76,11 @@ export default {
         .checkbox {
             margin-right: 16rpx;
         }
-        .icon-weixuanze {
-            color: #b2b2b2;
+        .icon-weigouxuan {
+            color: #FF5B00;
         }
 
-        .icon-yixuanze {
+        .icon-gouxuanl {
             color: #FF5B00;
         }
     }

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

@@ -267,7 +267,7 @@ export default {
 					height: 28rpx;
 					border-radius: 6rpx;
 					background-color: #ffffff;
-					line-height: 28rpx;
+					line-height: 22rpx;
 					color: $color-system;
 					text-align: center;
 					display: inline-block;

+ 21 - 8
pages/user/order/create-order.vue

@@ -33,7 +33,7 @@
         <cm-invice-popup ref="invoice" v-if="isRequest" :invoiceDatas="invoiceData"
             @handleChoiceaInvoice="handleChoiceaInvoiceData" />
         <!-- 订单合同 -->
-        <!-- <cm-contract-temp ref="contract" v-if="isContract" @handleChoiceaInvoice="handleChoiceaInvoiceData" /> -->
+        <cm-contract-temp ref="contract" v-if="isContract" :invoiceData="invoiceData" :goodsData.sync="goodsData" @checkedContract="handleCheckedContract" />
         <!-- 优惠券选择弹窗 -->
         <cm-coupon-popup ref="coupon" v-if="isCouponShow" :couponList="couponList"
             @handleChoiceaCoupon="handleChoiceaCouponData" />
@@ -167,7 +167,8 @@
                     },
                     plain: false
                 }],
-                isContract: false
+                isContract: false,
+                isCheckedContract: false
             }
         },
         onLoad(option) {
@@ -276,8 +277,7 @@
                     el.handlePostageFlag = el.postageFlag
                     return el
                 })
-                this.isContract = data.list.some(item => item.shopId === 11070)
-                console.log('isContract',this.isContract) 
+                this.isContract = data.list.some(item => item.shopId === 1677)
                 this.couponList = data.couponList
                 this.userMoney = data.userMoney
                 this.reducedPrice = data.reducedPrice
@@ -339,6 +339,11 @@
                 //获取发票信息
                 this.confirmParam.orderInvoice = data
             },
+            handleCheckedContract(flag){
+                // 获取是否勾选合同
+                this.isCheckedContract = flag
+                console.log('isCheckedContract', this.isCheckedContract)
+            },
             hanldFreightBeans(data) {
                 //是否勾选采美豆抵扣
                 this.isCheckedBeans = data
@@ -428,8 +433,20 @@
             },
             orderSubmitMit() {
                 // 提交订单按钮点击事件
+                if (this.confirmParam.addressId == '') {
+                    this.$util.msg('请先添加收货地址~', 2000)
+                    return
+                }
+                // 薇旖美订单勾选销售合同处理
+                if(this.isContract){
+                    if(!this.isCheckedContract){
+                        this.$util.msg('请阅读销售合同并勾选同意', 2000)
+                         return
+                    }
+                }
                 if (this.returnGoodsStutas && !this.agreementActive) {
                     this.agreementModel = true
+                    return
                 } else {
                     this.handleClickOrderSubmitMit()
                 }
@@ -439,10 +456,6 @@
                 if (this.isSubLoading) {
                     return
                 }
-                if (this.confirmParam.addressId == '') {
-                    this.$util.msg('请先添加收货地址~', 2000)
-                    return
-                }
                 this.confirmParam.orderInfo = this.hanldeProcessing()
                 this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
                 this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)

+ 219 - 86
pages/user/order/order-contract.vue

@@ -4,66 +4,149 @@
             :loadingType="5" />
         <view class="container-content tui-skeleton" v-else>
             <!-- <view class="text-h1 center">销售合同</view> -->
-            <view class="text-h1">甲方:厦门盛德至善医疗科技有限公司</view>
-            <view class="text-h1">乙方:{{ clubInfo.name }}</view>
-            <view class="text-p">根据《中华人民共和国民法典》等相关法律、法规的规定,甲乙双方在平等自愿的基础上,就乙方购买甲方销售的产品,达成以下合作内容:</view>
-            <view class="text-h1">一、甲方向乙方供货的产品名称、规格、计价单位和单价。</view>
+            <view class="text-h1">甲方(卖方):【厦门盛德至善医疗科技有限公司】</view>
+            <view class="text-h1">乙方(买方):【{{ clubInfo.name }}】</view>
+            <view class="text-h1">丙方(平台方):【深圳市采美网络技术有限公司】</view>
+            <view class="text-h1">鉴于:</view>
+            <view class="text-p">
+                1、丙方系美容行业的电子商务平台运营商,其开发运营的交易平台(www.caimei365.com),采美CRM管理系统和商城小程序(以下简称“丙方平台”或“平台”)是提供美容产品仪器供应商、美容机构、医疗美容机构以及服务商合作和交易平台,丙方平台的运作规则包括
+                <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1023&title=用户协议')">
+                    《用户协议》
+                </text>、
+                <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1013&title=隐私权政策')">
+                    《隐私权政策》
+                </text>、
+                以及交易和结算规则、其他由丙方不时公布的平台规则(以下简称“平台规则”)。
+            </view>
+            <view class="text-p">
+                2、甲方是丙方平台的注册供应商会员,并已提供相关资质和通过电子方式确认接受丙方平台规则、
+                <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1035&title=供应商合作协议')">
+                    《供应商合作协议》
+                </text>、
+                并受该等文件的约束。
+            </view>
+            <view class="text-p">
+                3、乙方是丙方平台的注册机构会员,并已提供相关资质和通过电子方式确认接受丙方平台规则、
+                <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1016&title=医美机构合作协议')">
+                    《医美机构合作协议》
+                </text>
+                并受该等文件的约束。
+            </view>
+            <view class="text-p">根据《中华人民共和国民法典》等相关法律、法规的规定,甲乙丙三方在平等自愿的基础上,就乙方在丙方平台采购甲方销售的产品和/或服务,达成以下合作内容:</view>
+
+            <view class="text-h1">一、乙方向甲方采购订单详情:</view>
+            <!-- 订单商品信息 -->
+            <template v-if="contractType === 1">
+                <cm-contract-goods ref="goods" v-if="!skeletonShow" :goodsData.sync="goodsData" />
+            </template>
+            <template v-else>
+                <cm-contract-order ref="goods" v-if="!skeletonShow" :orderData="orderData" />
+            </template>
+
             <view class="text-h1">二、付款方式</view>
-            <view class="text-p">付款方式:乙方向甲方发送《发货通知单》,并于3个工作日内将相应的全额货款汇入甲方指定账号;甲方确认收到货款后的5个工作日内安排发货;甲方按货款金额向乙方开具发票,开票时间以乙方发票接收邮箱收到发票或税务系统收到发票为准。</view>   
-            <view class="text-p">甲方帐户信息:</view>
+            <view class="text-p">
+                乙方应通过丙方的线上交易系统将相应的全额货款汇入甲方收款账号,或经丙方同意通过线下支付方式将相应的全额货款汇入甲方指定收款账号;甲方确认收到货款后的5个工作日内安排发货;甲方按货款金额向乙方开具发票,发票地址以乙方注册邮箱地址或通信地址为准。
+            </view>
+            <view class="text-p">甲方收款帐户信息:</view>
             <view class="text-p">单位名称:厦门盛德至善医疗科技有限公司</view>
             <view class="text-p">开户银行: 招商银行股份有限公司厦门海沧支行</view>
             <view class="text-p">账号:592909949010001</view>
-            <view class="text-p">乙方开票信息:</view>
-            <view class="text-p">单位名称:</view>
-            <view class="text-p">开户行:</view>
-            <view class="text-p">账号:</view>
-            <view class="text-p">税号:电子专票</view>
-            <view class="text-p">发票接收邮箱:</view>
             <view class="text-h1">三、产品交付方式:</view>
             <view class="text-p">运输:产品经由合规冷链运输,运费由甲方承担,产品的附件及相关材料应随产品一并交付乙方。</view>
             <view class="text-h1">四、产品所有权及产品毁损、灭失风险转移</view>
-            <view class="text-p">产品所有权及产品毁损、灭失的风险自乙方签收货物之日起转移,货物签收以物流签收信息为准,除有质量问题外。产品发出后,因乙方的原因致使产品不能按期交付,产品毁损、灭失的风险责任由乙方自行负责。</view>
+            <view class="text-p">
+                产品所有权及产品毁损、灭失的风险自乙方签收货物之日起转移,货物签收以物流签收信息为准,除有质量问题外。产品发出后,因乙方的原因致使产品不能按期交付,产品毁损、灭失的风险责任由乙方自行负责。
+            </view>
             <view class="text-h1">五、验收及退换货</view>
-            <view class="text-p">1、乙方收货时应在现场验收。乙方在收货时,应检查产品有无破损或缺少,如发现异常,应在收货时当场与承运人一起出具书面证明,并书面通知甲方办理相关事宜;如收货后当日未通知则视为乙方已收到全部合格产品。收货时,以物流信息显示签收作为收货凭证,不再进行纸质签收或返回物流签收单。</view>
-            <view class="text-p">2、乙方无故拒绝接受货物的,应承担因此给甲方造成的损失,除本协议明确约定外,损失赔偿范围包括但不限于:直接或间接损失、调查费用支出、诉讼费用、仲裁费用、聘请诉讼仲裁代理人的费用以及其他因违约行为所支出的必要费用。</view>
-            <view class="text-p">3、乙方在收货后如发现产品质量问题的当日向甲方提出书面申请,经甲方审查符合退换货条件的给予退换货,退换货时间为从书面申请受理之日起30天内完成退换货。</view>         <view class="text-h1">六:广告合规要求</view>
-            <view class="text-p">1、乙方自行设计制作的广告须取得广告批文方可发布,且不得侵犯第三方合法权益。乙方如使用甲方提供材料开展宣传的,不得擅自添加、删减、篡改甲方提供的材料内容。</view>
-            <view class="text-p">2、乙方应依法开展产品宣传及产品销售,不得通过夸大产品功效、虚构事实或虚假宣传等方式宣传、销售合作产品。否则因此造成的一切责任(包括但不限于民事赔偿、刑事责任、行政处罚等)均由乙方一力承担。若因乙方的违法宣传,给甲方造成损失的,由乙方承担赔偿责任(包括但不限于甲方支出的诉讼费、律师费、保全费、交通费等)。</view>
-            <view class="text-h1">七、违约责任</view>
-            <view class="text-p">1、在本协议有效期限内,乙方不得将本协议条款中的全部或部分权利、义务转让给任何第三方;若乙方将本协议条款中的权利义务转让给第三方,甲方有权单方解除协议;若因第三方导致甲方权利受到损害的,甲方除可以要求第三方进行损害赔偿之外,仍可以要求乙方承担责任。</view>
-            <view class="text-p">2、因乙方无正当合理的理由退货或拒收货物造成的相应损失(包括甲方损失和乙方损失)由乙方承担。</view>
-            <view class="text-p">3、因乙方行为扰乱甲方市场环境的,甲方有权单方解除本协议,并要求乙方赔偿因此产生的损失。</view>
-            <view class="text-p">4、本协议所述的甲方损失包括但不限于甲方的直接损失、间接损失以及维权所支付的诉讼费、律师费、公证费、鉴定费、差旅费等费用。</view>
-            <view class="text-h1">八、不可抗力</view>
-            <view class="text-p">1、如果双方中的任何一方因为不可抗力(如:战争、火灾、台风、洪水、地震)而被迫停止或推迟协议的执行,则协议执行相应延迟,延迟的时间等于不可抗力发生作用的时间。</view>   
-            <view class="text-p">2、因不可抗力因素导致的甲乙双方未能按本协议约定履行相应的权利义务的,甲乙双方免除相应的责任,但双方应采取必要的措施以减少造成的损失。出现不可抗力情形的一方,应在不可抗力发生之日起三日内向对方发出出现不可抗力情形的书面通知,并提供相应的证明。</view>   
-            <view class="text-p">3、如不可抗力及其影响无法终止或消除而致使合同任何一方丧失继续履行协议的能力或不可抗力的影响连续二十天以上时,任何一方均有权通知对方无责解除本协议。双方根据已完成进度据实结算。</view>   
-            <view class="text-h1">九、保密条款</view>   
-            <view class="text-p">本协议有效期内,甲、乙双方对本协议内容,特别是供货价格及销售政策等信息,均负有严格保密的义务,不得以任何形式泄露给第三方,否则应承担违约责任并赔偿损失。</view>   
-            <view class="text-h1">十、其它约定事项</view>   
-            <view class="text-p">甲方向乙方出具所经营产品的《中华人民共和国医疗器械注册证》及本企业的《营业执照》、《医疗器械生产许可证》及其他授权证明等加盖甲方公章的复印件,同时乙方需向甲方提供《营业执照》、《医疗机构执业许可证》等加盖乙方公章的复印件。</view>   
-            <view class="text-p">本协议的附件与本协议具同等法律效力,是本协议不可分割的组成部分。双方对此协议有任何修改与补充,均需另行签订补充协议,经双方法定代表人或其授权人的签字并且盖章后方可生效,否则不产生任何约束力。</view>   
-            <view class="text-p">乙方同意甲方为其首次公开发行股票并上市及其他上市融资需求而将与乙方的合作涉及的相关信息披露予甲方指定的中介机构、证券交易所以及中国证券监督管理委员会。</view>   
-            <view class="text-h1">十一、争议解决</view>   
-            <view class="text-p">合同执行过程中发生争议的,双方友好协商,协商不成的,任何一方有权向甲方所在地人民法院提起诉讼。</view>   
-            <view class="text-h1">十二、其他</view>   
-            <view class="text-p">本合同自双方加盖合同章或公章之日起生效。本合同一式两份,甲乙双方各执一份,具有同等法律效力。</view>   
-            <view class="text-flex">
-                <view class="flex-p">甲方: 厦门盛德至善医疗科技有限公司</view>
-                <view class="flex-p">乙方:{{ clubInfo.name }}</view>
-            </view>
-            <view class="text-flex">
-                <view class="flex-p">日期:2025年  月  日 </view>
-                <view class="flex-p">日期:2025年  月  日  </view>
+            <view class="text-p">
+                1、乙方收货时应在现场验收。乙方在收货时,应检查产品有无破损或缺少,如发现异常,应在收货时当场与承运人一起出具书面证明,并书面通知甲方办理相关事宜;如收货后当日未通知则视为乙方已收到全部合格产品。收货时,以物流信息显示签收作为收货凭证,不再进行纸质签收或返回物流签收单。
+            </view>
+            <view class="text-p">
+                2、乙方无故拒绝接受货物的,应承担因此给甲方造成的损失,除本协议明确约定外,损失赔偿范围包括但不限于:直接或间接损失、调查费用支出、诉讼费用、仲裁费用、聘请诉讼仲裁代理人的费用以及其他因违约行为所支出的必要费用。
+            </view>
+            <view class="text-p">
+                3、乙方在收货后如发现产品质量问题的当日通过平台向甲方提出书面申请,经甲方审查符合退换货条件的给予退换货,退换货时间为从书面申请受理之日起30天内完成退换货。
+            </view>
+            <view class="text-h1">六:广告合规要求</view>
+            <view class="text-p">
+                1、乙方后续为货物自行设计制作的广告须取得广告批文方可发布,且不得侵犯第三方合法权益。乙方如使用甲方提供材料开展宣传的,不得擅自添加、删减、篡改甲方提供的材料内容。
+            </view>
+            <view class="text-p">
+                2、乙方应依法开展产品宣传及产品销售,不得通过夸大产品功效、虚构事实或虚假宣传等方式宣传、销售合作产品。否则因此造成的一切责任(包括但不限于民事赔偿、刑事责任、行政处罚等)均由乙方一力承担。若因乙方的违法宣传,给甲方造成损失的,由乙方承担赔偿责任(包括但不限于甲方支出的诉讼费、律师费、保全费、交通费等)。
+            </view>
+            <view class="text-h1">七、特别约定</view>
+            <view class="text-p">
+                1、甲乙丙三方确认,丙方仅为甲乙双方的网上交易活动提供交易平台,并非交易行为的参与方,丙方不承担甲乙双方买卖交易项下任何法律责任。如甲乙双方产生争议的,丙方可以出面协调,但丙方的协调不具有强制性。在甲乙双方争议期间,如款项存放在丙方的线上交易分账系统中,丙方有权根据实际情况决定将款项留存,待甲乙双方争议解决后予以支付,丙方不承担该等原因下未支付或迟延支付款项产生的任何责任。
+            </view>
+            <view class="text-h1">八、违约责任</view>
+            <view class="text-p">
+                1、在本协议有效期限内,乙方不得将本协议条款中的全部或部分权利、义务转让给任何第三方;若乙方将本协议条款中的权利义务转让给第三方,甲方有权单方解除协议;若因第三方导致甲方权利受到损害的,甲方除可以要求第三方进行损害赔偿之外,仍可以要求乙方承担责任。
+            </view>
+            <view class="text-p">
+                2、因乙方无正当合理的理由退货或拒收货物造成的相应损失(包括甲方损失和乙方损失)由乙方承担。
+            </view>
+            <view class="text-p">
+                3、因乙方行为扰乱甲方市场环境的,甲方有权单方解除本协议,并要求乙方赔偿因此产生的损失。
             </view>
+            <view class="text-p">
+                4、本协议所述的甲方损失包括但不限于甲方的直接损失、间接损失以及维权所支付的诉讼费、律师费、公证费、鉴定费、差旅费等费用。
+            </view>
+            <view class="text-h1">九、不可抗力</view>
+            <view class="text-p">
+                1、如果双方中的任何一方因为不可抗力(如:战争、火灾、台风、洪水、地震)而被迫停止或推迟协议的执行,则协议执行相应延迟,延迟的时间等于不可抗力发生作用的时间。
+            </view>
+            <view class="text-p">
+                2、因不可抗力因素导致的甲乙双方未能按本协议约定履行相应的权利义务的,甲乙双方免除相应的责任,但双方应采取必要的措施以减少造成的损失。出现不可抗力情形的一方,应在不可抗力发生之日起三日内向对方发出出现不可抗力情形的书面通知,并提供相应的证明。
+            </view>
+            <view class="text-p">
+                3、如不可抗力及其影响无法终止或消除而致使合同任何一方丧失继续履行协议的能力或不可抗力的影响连续二十天以上时,任何一方均有权通知对方无责解除本协议。双方根据已完成进度据实结算。
+            </view>
+            <view class="text-h1">十、保密条款</view>
+            <view class="text-p">
+                本协议有效期内,甲、乙、丙、三方对本协议内容,特别是供货价格及销售政策等信息,均负有严格保密的义务,不得以任何形式泄露给第三方,否则应承担违约责任并赔偿损失。
+            </view>
+            <view class="text-h1">十一、其它约定事项</view>
+            <view class="text-p">
+                1、乙方可以在丙方平台下载甲方所经营产品的《中华人民共和国医疗器械注册证》及本企业的《营业执照》、《医疗器械生产许可证》及其他授权证明,如需要加盖甲方公章的纸质复印件可以通过丙方平台向甲方索取,
+            </view>
+            <view class="text-p">
+                2、甲方可以在丙方平台下载乙方的《营业执照》、《医疗机构执业许可证》,如需要加盖甲方公章的纸质复印件可以通过丙方平台向乙方索取。
+            </view>
+            <view class="text-p">
+                3、本协议的附件与本协议具同等法律效力,是本协议不可分割的组成部分。
+            </view>
+            <view class="text-p">
+                4、乙方同意甲方为其首次公开发行股票并上市及其他上市融资需求而将与乙方的合作涉及的相关信息披露予甲方指定的中介机构、证券交易所以及中国证券监督管理委员会。
+            </view>
+            <view class="text-h1">十二、争议解决</view>
+            <view class="text-p">
+                合同执行过程中发生争议的,三方友好协商,协商不成的,任何一方有权向甲方所在地人民法院提起诉讼。
+            </view>
+            <view class="text-h1">十三、其他</view>
+            <view class="text-p">
+                甲乙丙三方通过丙方平台订立本合同,本合同一经三方完成电子签章程序,即具备法律效力。任何一方均可在丙方平台之上获取合同文本。
+            </view>
+            <view class="text-p">(以下无正文)</view>
+            <template v-if="contractType === 1">
+                <view class="text-h1">订单日期:{{ formattedDate }}</view>
+            </template>
+            <template v-else>
+                <view class="text-h1" v-if="contractType === 2">订单编号:{{ orderData.shopOrderNo }}</view>
+                <view class="text-h1">订单日期:{{ orderTime(orderData.orderTime) }}</view>
+            </template>
         </view>
     </view>
 </template>
 
 <script>
     import { mapState, mapMutations } from 'vuex'
+    import cmContractGoods from './components/cm-contract-goods'
+    import cmContractOrder from './components/cm-contract-order'
     export default {
+        components: {
+            cmContractGoods,
+            cmContractOrder
+        },
         data() {
             return {
                 StaticUrl: this.$Static,
@@ -71,55 +154,87 @@
                 skeletonShow: true,
                 clubInfo: {},
                 invoiceData: {
-                	type: 0, 		//发票类型 0 不开发票 1 普通发票 2 增值税发票
-                	headingType: 0, 		//抬头类型 0 个人 1 单位
-                	invoiceTitle: '', 		//发票抬头
-                	corporationTaxNum: '',  //单位税号
-                	registeredAddress: '',  //单位地址
-                	registeredPhone: '',    //注册电话
-                	openBank: '', 		    //开户银行
-                	bankAccountNo: ''       //银行账号
-                }
+                    type: 0, //发票类型 0 不开发票 1 普通发票 2 增值税发票
+                    headingType: 0, //抬头类型 0 个人 1 单位
+                    invoiceTitle: '', //发票抬头
+                    corporationTaxNum: '', //单位税号
+                    registeredAddress: '', //单位地址
+                    registeredPhone: '', //注册电话
+                    openBank: '', //开户银行
+                    bankAccountNo: '' //银行账号
+                },
+                formattedDate: '',
+                goodsData: [],
+                orderData: {},
+                contractType: ''
+
             }
         },
         onLoad(option) {
-           this.initCouponDetail()
-        },
-        filters: {
-            
-        },
-        computed: {
-            ...mapState(['hasLogin', 'userInfo', ])
+            if (option.type) { this.contractType = option.type * 1 }
+            console.log('contractType', this.contractType)
+            if (this.contractType === 1) {
+                this.goodsData = JSON.parse(option.goods)
+                this.initStorage()
+                console.log('goods', this.goods)
+                const today = new Date()
+                // 格式化为 "YYYY年M月D日"(月份和日期不补零)
+                this.formattedDate = `${today.getFullYear()}年${today.getMonth() + 1}月${today.getDate()}日`
+                console.log(this.formattedDate) // 示例输出:2025年5月27日
+            } else {
+                console.log('shopOrderId', option.shopOrderId)
+                this.initOrderDetaile(option.shopOrderId)
+            }
+         
         },
         methods: {
-            async initCouponDetail(couponId) {
-                // 初始化优惠券信息
+            // 获取订单详情
+            async initOrderDetaile(shopOrderId) {
+            	try {
+            		this.clubInfo = await this.$api.getStorage()
+            		const { data } = await this.OrderService.QueryOrderDetails({ shopOrderId: shopOrderId, userId: this.clubInfo.userId })
+            		this.orderData = data.shopOrder
+                    setTimeout(() => {
+                        this.skeletonShow = false
+                    }, 500)
+            	} catch (error) {
+            		console.log('获取订单详情异常~')
+            	}
+            },
+            async initStorage() {
+                // 初始化信息
                 try {
                     this.clubInfo = await this.$api.getStorage()
-                    this.getUseInvoice(this.clubInfo.userId)
                     setTimeout(() => {
                         this.skeletonShow = false
                     }, 500)
-
+                    // this.getUseInvoice(this.clubInfo.userId)
                 } catch (e) {
-                    console.log('初始化优惠券信息异常~')
+                    console.log('初始化信息异常~')
                 }
             },
             //获取发票信息
             async getUseInvoice(userId) {
-            	try {
-            		const res = await this.OrderService.GetFindInvoice({ userId: userId })
-            		this.invoiceData = {...this.invoiceData, ...res.data}
-            		console.log('invoiceData',this.invoiceData)
-            	} catch (error) {
-            		console.log('error',error)
-            	}
+                try {
+                    const res = await this.OrderService.GetFindInvoice({ userId: userId })
+                    this.invoiceData = { ...this.invoiceData, ...res.data }
+                    console.log('invoiceData', this.invoiceData)
+                } catch (error) {
+                    console.log('error', error)
+                }
             },
-            //保存发票信息
-            
+            orderTime(time){
+               // 按空格拆分取日期部分,再按"-"拆分
+               const [datePart] = time.split(' ')
+               const [year, month, day] = datePart.split('-')
+               // 去除月份和日的首部零,并拼接成目标格式
+               const result = `${year}年${parseInt(month)}月${parseInt(day)}日`
+               console.log(result) 
+               return result
+            }
         },
         onHide() {
-            
+
         },
         onShow() {
 
@@ -136,46 +251,64 @@
         width: 100%;
         height: auto;
     }
-    .container-content{
+
+    .container-content {
         width: 100%;
         box-sizing: border-box;
         padding: 24rpx;
         text-align: justify;
         font-size: $font-size-26;
         color: #666666;
-        line-height: 68rpx;
-        .text-h1{
+        line-height: 58rpx;
+
+        .text-h1 {
             font-size: $font-size-28;
             text-align: left;
             font-weight: 600;
             color: #333333;
-            &.center{
+
+            &.center {
                 text-align: center;
             }
         }
-        .text-p{
-            font-size: $font-size-28;
+
+        .text-p {
+            font-size: 27rpx;
             text-align: justify;
             text-indent: 24rpx;
             color: #666666;
+            line-height: 52rpx;
+
+            text {
+                color: #1890f9;
+            }
         }
-        .text-flex{
+
+        .text-flex {
             width: 100%;
             height: 168rpx;
             display: flex;
             justify-content: space-between;
-            flex-wrap: wrap;
-            .flex-p{
+
+            &.first {
+                margin-top: 120rpx;
+            }
+
+            .flex-p {
+                display: flex;
+                justify-content: flex-start;
+                flex-wrap: wrap;
                 font-size: $font-size-26;
                 color: #666666;
-                line-height: 168rpx;
+                margin: 0 20rpx;
+                line-height: 48rpx;
             }
         }
     }
+
     .empty-container-image {
         width: 260rpx;
         height: 260rpx;
         margin-top: -300rpx;
     }
-    
 </style>

+ 131 - 9
pages/user/order/order-details.vue

@@ -110,7 +110,29 @@
 			:size="32"
 			shape="circle"
 			:maskClosable="false"
-		/>
+		/>
+        <!-- 确认订单 -->
+        <tui-modal :show="modal1" custom>
+        	<view class="tui-modal-custom">
+        		<view class="tui-modal-title">确认订单</view>
+        		<view class="tui-modal-content">
+                    <view class="contract-checked" @click.stop="handleChecked">
+                        <view class="checkbox-box">
+                            <button class="checkbox iconfont" hover-class="btn-hover"
+                                :class="[ischecked ? 'icon-gouxuanl' : 'icon-weigouxuan']"></button>
+                        </view>
+                        已阅读并同意
+                        <text class="text" @click.stop="handleContract">
+                            《销售合同》
+                        </text>
+                    </view>
+                </view>
+        		<view class="tui-modalBtn-box">
+                    <view class="tui-modalBtn-btn cancel" @click.stop="modal1 = false">取消</view>
+                    <view class="tui-modalBtn-btn confim" @click.stop="handleConfirm">确定</view>
+                </view>
+        	</view>
+        </tui-modal>
 	</view>
 </template>
 
@@ -191,7 +213,8 @@ export default {
 			beanNumber: 0,
 			isActivityBean: false,
 			handleModelEven: 0,
-			modal: false,
+			modal: false,
+			modal1: false,
 			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
 			modalButton: [
 				{
@@ -209,7 +232,9 @@ export default {
 				}
 			],
 			returnGoodsStutas: false,
-			helpContent: ''
+			helpContent: '',
+            ischecked: false,
+            handleOrder: {}
 		}
 	},
 	onLoad(option) {
@@ -306,15 +331,19 @@ export default {
 					this.contentModalText = '确认收货吗?'
 					this.handleModelEven = 2
 					break
-				case 'delete': //删除订单
+				case 'delete': //删除订单
 					this.modal = true
 					this.contentModalText = '确认删除该订单吗?'
 					this.handleModelEven = 3
 					break
-				case 'confirmation': // 确认订单
-					this.modal = true
-					this.contentModalText = '确认此订单吗?'
-					this.handleModelEven = 4
+				case 'confirmation': // 确认订单
+                    if(data.shopId === 1677){
+                        this.modal1 = true
+                    }else{
+                        this.modal = true
+                        this.contentModalText = '确认此订单吗?'
+                        this.handleModelEven = 4
+                    }
 					break
 				case 'payment': //打款给供应商
 					this.modal = true
@@ -354,7 +383,24 @@ export default {
 				}
 			}
 			this.modal = false
-		},
+		},
+        // 跳转销售合同
+        handleContract(){
+            this.$api.navigateTo(`/pages/user/order/order-contract?type=2&shopOrderId=${this.shopOrderId}`)
+        },
+        // 勾选销售合同
+        handleChecked() {
+            this.ischecked = !this.ischecked
+        },
+        // 特殊确认订单
+        handleConfirm() {
+            if(!this.ischecked){
+                this.$util.msg('请阅读销售合同并勾选同意', 2000)
+                return
+            }
+            this.affirmOrder(this.shopOrderId)
+            this.modal1 = false
+        },
 		//取消订单
 		async cancelOrder(shopOrderId) {
 			try {
@@ -672,5 +718,81 @@ page {
 		float: right;
         font-size: 22rpx;
 	}
+}
+.tui-modal-title{
+   text-align: center;
+   font-size: 34rpx;
+   color: #333;
+   padding-top: 20rpx;
+   font-weight: bold;
+}
+.tui-modal-content{
+    text-align: center;
+    color: #999;
+    font-size: 28rpx;
+    padding-top: 40rpx;
+    padding-bottom: 40rpx;
+    .contract-checked {
+        width: 100%;
+        height: 60rpx;
+        display: flex;
+        justify-content: center;
+        box-sizing: border-box;
+        padding: 0 10rpx;
+        line-height: 60rpx;
+        .checkbox-box {
+            display: flex;
+            width: 60rpx;
+            float: left;
+            height: 100%;
+            font-size: $font-size-28;
+            line-height: 60rpx;
+            .checkbox {
+                width: 40rpx;
+                line-height: 60rpx;
+                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;
+                font-size: $font-size-34;
+            }
+        }
+        .text{
+             color: #1890f9;
+        }
+    }
+}
+.tui-modalBtn-box{
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .tui-modalBtn-btn{
+        width: 46%;
+        height: 68rpx;
+        line-height: 68rpx;
+        position: relative;
+        border-radius: 10rpx;
+        font-size: 26rpx;
+        overflow: visible;
+        margin-left: 0;
+        margin-right: 0;
+        text-align: center;
+        border-radius: 34rpx;
+        &.cancel{
+            box-sizing: border-box;
+            border:1px solid #e1e1e1;
+            background-color: #FFFFFF;
+            color: #999999;
+        }
+        &.confim{
+            background: $btn-confirm;
+            color: #FFFFFF;
+        }
+    }
 }
 </style>

+ 128 - 7
pages/user/order/order-list.vue

@@ -236,7 +236,29 @@
 			:size="32"
 			shape="circle"
 			:maskClosable="false"
-		/>
+		/>
+        <!-- 确认订单 -->
+        <tui-modal :show="modal1" custom>
+        	<view class="tui-modal-custom">
+        		<view class="tui-modal-title">确认订单</view>
+        		<view class="tui-modal-content">
+                    <view class="contract-checked" @click.stop="handleChecked">
+                        <view class="checkbox-box">
+                            <button class="checkbox iconfont" hover-class="btn-hover"
+                                :class="[ischecked ? 'icon-gouxuanl' : 'icon-weigouxuan']"></button>
+                        </view>
+                        已阅读并同意
+                        <text class="text" @click.stop="handleContract">
+                            《销售合同》
+                        </text>
+                    </view>
+                </view>
+        		<view class="tui-modalBtn-box">
+                    <view class="tui-modalBtn-btn cancel" @click.stop="modal1 = false">取消</view>
+                    <view class="tui-modalBtn-btn confim" @click.stop="handleConfirm">确定</view>
+                </view>
+        	</view>
+        </tui-modal>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModalLayer" />
 	</view>
@@ -310,9 +332,10 @@ export default {
 			beansType: 1,
 			beanNumber: 0,
 			isActivityBean: false,
-			handleShopOrderId: 0, //点击按钮传入的的子订单ID
+			handleShopOrderId: 0, //点击按钮传入的的子订单ID
 			handleModelEven: 0,
-			modal: false,
+			modal: false,
+            modal1: false,
 			contentModalText: '订单查询失败,请稍候重试~', //操作文字提示语句
 			modalButton: [
 				{
@@ -328,7 +351,8 @@ export default {
 					},
 					plain: false
 				}
-			]
+			],
+            ischecked: false
 		}
 	},
 	onLoad(e) {
@@ -526,9 +550,13 @@ export default {
 					this.handleModelEven = 3
 					break
 				case 'confirmation': // 确认订单
-					this.modal = true
-					this.contentModalText = '确认此订单吗?'
-					this.handleModelEven = 4
+                    if(data.shopId === 1677){
+                        this.modal1 = true
+                    }else{
+                        this.modal = true
+                        this.contentModalText = '确认此订单吗?'
+                        this.handleModelEven = 4
+                    }
 					break
 				case 'payment': //打款给供应商
 					this.modal = true
@@ -579,6 +607,23 @@ export default {
             }
 			this.modal = false
 		},
+        // 跳转销售合同
+        handleContract(){
+            this.$api.navigateTo(`/pages/user/order/order-contract?type=2&shopOrderId=${this.handleShopOrderId}`)
+        },
+        //勾选销售合同
+        handleChecked() {
+            this.ischecked = !this.ischecked
+        },
+        // 特殊确认订单
+        handleConfirm() {
+            if(!this.ischecked){
+                this.$util.msg('请阅读销售合同并勾选同意', 2000)
+                return
+            }
+            this.affirmOrder(this.handleShopOrderId)
+            this.modal1 = false
+        },
 		//取消订单
 		async cancelOrder(shopOrderId) {
 			try {
@@ -1081,5 +1126,81 @@ page {
 			text-align: right;
 		}
 	}
+}
+.tui-modal-title{
+   text-align: center;
+   font-size: 34rpx;
+   color: #333;
+   padding-top: 20rpx;
+   font-weight: bold;
+}
+.tui-modal-content{
+    text-align: center;
+    color: #999;
+    font-size: 28rpx;
+    padding-top: 40rpx;
+    padding-bottom: 40rpx;
+    .contract-checked {
+        width: 100%;
+        height: 60rpx;
+        display: flex;
+        justify-content: center;
+        box-sizing: border-box;
+        padding: 0 10rpx;
+        line-height: 60rpx;
+        .checkbox-box {
+            display: flex;
+            width: 60rpx;
+            float: left;
+            height: 100%;
+            font-size: $font-size-28;
+            line-height: 60rpx;
+            .checkbox {
+                width: 40rpx;
+                line-height: 60rpx;
+                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;
+                font-size: $font-size-34;
+            }
+        }
+        .text{
+             color: #1890f9;
+        }
+    }
+}
+.tui-modalBtn-box{
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    .tui-modalBtn-btn{
+        width: 46%;
+        height: 68rpx;
+        line-height: 68rpx;
+        position: relative;
+        border-radius: 10rpx;
+        font-size: 26rpx;
+        overflow: visible;
+        margin-left: 0;
+        margin-right: 0;
+        text-align: center;
+        border-radius: 34rpx;
+        &.cancel{
+            box-sizing: border-box;
+            border:1px solid #e1e1e1;
+            background-color: #FFFFFF;
+            color: #999999;
+        }
+        &.confim{
+            background: $btn-confirm;
+            color: #FFFFFF;
+        }
+    }
 }
 </style>