| 
					
				 | 
			
			
				@@ -0,0 +1,567 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div title="确认订单"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 头部地址选择【配送地址】【自提地址】 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <AddressSelection v-model="addressState" class="mb-3" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 商品信息 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <s-goods-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        v-for="item in state.orderInfo.items" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :key="item.skuId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :img="item.picUrl" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :title="item.spuName" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :skuText="item.properties.map((property) => property.valueName).join(' ')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :price="item.price" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :num="item.count" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        marginBottom="10" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 价格信息 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="order-item d-flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title mr-3">商品金额:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ¥{{ fen2yuan(state.orderInfo.price.totalPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="state.orderPayload.pointActivityId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">兑换积分</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :src="sheep.$url.static('/static/img/shop/goods/score1.svg')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="score-img" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value ss-m-r-24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ state.orderInfo.usePoint }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="state.orderInfo.type === 0 || state.orderPayload.pointActivityId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">积分抵扣</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ state.pointStatus || state.orderPayload.pointActivityId ? '剩余积分' : '当前积分' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :src="sheep.$url.static('/static/img/shop/goods/score1.svg')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="score-img" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value ss-m-r-24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                state.pointStatus || state.orderPayload.pointActivityId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? state.orderInfo.totalPoint - state.orderInfo.usePoint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : state.orderInfo.totalPoint || 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <checkbox-group @change="changeIntegral" v-if="!state.orderPayload.pointActivityId"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <checkbox 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :checked="state.pointStatus" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :disabled="!state.orderInfo.totalPoint || state.orderInfo.totalPoint <= 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </checkbox-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 快递配置时,信息的展示 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item d-flex" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="addressState.deliveryType === 1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title mr-3">运费:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value ss-m-r-24" v-if="state.orderInfo.price.deliveryPrice > 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              +¥{{ fen2yuan(state.orderInfo.price.deliveryPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="item-value ss-m-r-24" v-else>免运费</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 门店自提时,需要填写姓名和手机号 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="addressState.deliveryType === 2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">联系人</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            请填写您的联系姓名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- <uni-easyinput 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              maxlength="20" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="请填写您的联系姓名" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="addressState.receiverName" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :inputBorder="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :clearable="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="addressState.deliveryType === 2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">联系电话</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            请填写您的联系电话 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <!-- <uni-easyinput 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              maxlength="20" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              placeholder="请填写您的联系电话" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-model="addressState.receiverMobile" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :inputBorder="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :clearable="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- 优惠劵:只有 type = 0 普通订单(非拼团、秒杀、砍价),才可以使用优惠劵 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="state.orderInfo.type === 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">优惠券</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center" @tap="state.showCoupon = true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value text-red" v-if="state.orderPayload.couponId > 0"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              -¥{{ fen2yuan(state.orderInfo.price.couponPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="item-value" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :class=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                state.couponInfo.filter((coupon) => coupon.match).length > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? 'text-red' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : 'text-disabled' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                state.couponInfo.filter((coupon) => coupon.match).length > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? state.couponInfo.filter((coupon) => coupon.match).length + ' 张可用' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : '暂无可用优惠券' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="_icon-forward item-icon" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="state.orderInfo.price.discountPrice > 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">活动优惠</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center" @tap="state.showDiscount = true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value text-red"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              -¥{{ fen2yuan(state.orderInfo.price.discountPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="_icon-forward item-icon" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="order-item ss-flex ss-col-center ss-row-between" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="state.orderInfo.price.vipPrice > 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="item-title">会员优惠</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="item-value text-red"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              -¥{{ fen2yuan(state.orderInfo.price.vipPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="total-num ss-m-r-20"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        共{{ state.orderInfo.items.reduce((acc, item) => acc + item.count, 0) }}件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="mt-5"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <v-text-field 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="state.orderPayload.remark" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          label="订单备注"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="建议留言前先与商家沟通" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          variant="outlined"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          density="compact" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          color="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ></v-text-field> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="total-box-footer d-flex flex-column align-end"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="d-flex"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div>合计:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="total-num text-red"> ¥{{ fen2yuan(state.orderInfo.price.payPrice) }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 选择优惠券弹框 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <s-coupon-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-model="state.couponInfo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :show="state.showCoupon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @confirm="onSelectCoupon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @close="state.showCoupon = false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 满额折扣弹框 TODO @puhui999:【折扣】后续要把优惠信息打进去 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <s-discount-list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-model="state.orderInfo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :show="state.showDiscount" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @close="state.showDiscount = false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 底部 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <su-fixed bottom :opacity="false" bg="bg-white" placeholder :noFixed="false" :index="200"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="footer-box border-top ss-flex ss-row-between ss-p-x-20 ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="total-box-footer ss-flex ss-col-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="total-num ss-font-30 text-red"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ¥{{ fen2yuan(state.orderInfo.price.payPrice) }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class="ss-reset-button ui-BG-Main-Gradient ss-r-40 submit-btn ui-Shadow-Main" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @tap="onConfirm" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          提交订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </su-fixed> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { reactive, ref, watch } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import AddressSelection from './addressSelection.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { fen2yuan } from '@/hooks/web/useGoods' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { getTradeConfig, createOrder, settlementOrder } from '@/api/mall/trade' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import Snackbar from '@/plugins/snackbar' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { getOrderPayStatus, payOrderSubmit } from '@/api/common' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import Confirm from '@/plugins/confirm' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { useRouter } from 'vue-router'; const router = useRouter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { useUserStore } from '@/store/user'; const userStore = useUserStore() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const emit = defineEmits(['paySuccess']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const props = defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: String, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const state = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    orderPayload: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    orderInfo: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      items: [], // 商品项列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      price: {}, // 价格信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showCoupon: false, // 是否展示优惠劵 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    couponInfo: [], // 优惠劵列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showDiscount: false, // 是否展示营销活动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // ========== 积分 ========== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pointStatus: false, //是否使用积分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 检测支付环境 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const payState = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    orderType: 'goods', // 订单类型; goods - 商品订单, recharge - 充值订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    orderInfo: {}, // 支付单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    payStatus: 0, // 0=检测支付环境, -2=未查询到支付单信息, -1=支付已过期, 1=待支付,2=订单已支付 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    payMethods: [], // 可选的支付方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    payment: '', // 选中的支付方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const addressState = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addressInfo: {}, // 选择的收货地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    deliveryType: undefined, // 收货方式:1-快递配送,2-门店自提 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isPickUp: true, // 门店自提是否开启 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pickUpInfo: {}, // 选择的自提门店信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    receiverName: '', // 收件人名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    receiverMobile: '', // 收件人手机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    () => props.data,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (newVal) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (newVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.orderPayload = JSON.parse(newVal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tradeConfig() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { immediate: true }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // { deep: true } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function tradeConfig () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取交易配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const data = await getTradeConfig(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addressState.value.isPickUp = data.deliveryPickUpEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 价格计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 情况一:先自动选择“快递物流” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addressState.value.deliveryType = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let orderCode = await getOrderInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (orderCode === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 情况二:失败,再自动选择“门店自提” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (addressState.value.isPickUp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      addressState.value.deliveryType = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let orderCode = await getOrderInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (orderCode === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 情况三:都失败,则不选择 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addressState.value.deliveryType = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await getOrderInfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // ========== 积分 ========== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 使用积分抵扣 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const changeIntegral = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    state.pointStatus = !state.pointStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await getOrderInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 选择优惠券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function onSelectCoupon(couponId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    state.orderPayload.couponId = couponId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await getOrderInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    state.showCoupon = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 提交订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function onConfirm() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (addressState.value.deliveryType === 1 && !addressState.value.addressInfo.id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Snackbar.warning('请选择收货地址') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // if (addressState.value.deliveryType === 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (!addressState.value.pickUpInfo.id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     Snackbar.warning('请选择自提门店地址') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (addressState.value.receiverName === '' || addressState.value.receiverMobile === '') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     Snackbar.warning('请填写联系人或联系人电话') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (!/^[\u4e00-\u9fa5\w]{2,16}$/.test(addressState.value.receiverName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     Snackbar.warning('请填写您的真实姓名') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (!/^1(3|4|5|7|8|9|6)\d{9}$/.test(addressState.value.receiverMobile)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     Snackbar.warning('请填写正确的手机号') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    submitOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const userAccount = ref(JSON.parse(localStorage.getItem('userAccount')) || {}) // 账户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  userStore.$subscribe((mutation, state) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (Object.keys(state.userAccount).length) userAccount.value = state.userAccount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 设置支付订单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const payImmediately = async (id) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获得支付订单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const orderRes = await getOrderPayStatus({ id, sync: true }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!orderRes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      payState.payStatus = -2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    payState.orderInfo = orderRes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获得支付方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 暂时只对接余额支付(wallet)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const channel = 'wallet' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 对比余额是否不足 订单金额:orderInfo?.price-0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const balance = userAccount.value?.balance ? userAccount.value.balance-0 : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const balanceShow = userAccount.value?.balance && userAccount.value?.balance > 0 ? (userAccount.value?.balance / 100.0).toFixed(2) : 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (balance < payState?.orderInfo?.price-0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 余额不足 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Confirm(t('common.confirmTitle'), '余额不足,是否前往充值?', {sureText: '立即前往'}).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        router.push({ path: '/personalRecharge' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 提交支付订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let obj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: payState.orderInfo.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        channelCode: channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        channelExtras: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const res = await payOrderSubmit(obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('提交支付订单payOrderSubmit:', res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Snackbar.warning('支付成功!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      emit('paySuccess') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      userStore.getUserInfos() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 创建订单&跳转 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function submitOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const data = await createOrder({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      items: state.orderPayload.items, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      couponId: state.orderPayload.couponId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      remark: state.orderPayload.remark, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      deliveryType: addressState.value.deliveryType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      addressId: addressState.value.addressInfo.id, // 收件地址编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pickUpStoreId: addressState.value.pickUpInfo.id, //自提门店编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiverName: addressState.value.receiverName, // 选择门店自提时,该字段为联系人名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiverMobile: addressState.value.receiverMobile, // 选择门店自提时,该字段为联系人手机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointStatus: state.pointStatus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      combinationActivityId: state.orderPayload.combinationActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      combinationHeadId: state.orderPayload.combinationHeadId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      seckillActivityId: state.orderPayload.seckillActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointActivityId: state.orderPayload.pointActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (data.payOrderId && data.payOrderId > 0) payImmediately(data.payOrderId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 更新购物车列表,如果来自购物车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // if (state.orderPayload.items[0].cartId > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   sheep.$store('cart').getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // // 跳转到支付页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // if (data.payOrderId && data.payOrderId > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   sheep.$router.redirect('/pages/pay/index', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     id: data.payOrderId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   sheep.$router.redirect('/pages/order/detail', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     id: data.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 检查库存 & 计算订单价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function getOrderInfo() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 计算价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const data = await settlementOrder({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      items: state.orderPayload.items, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      couponId: state.orderPayload.couponId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      deliveryType: addressState.value.deliveryType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      addressId: addressState.value.addressInfo.id, // 收件地址编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pickUpStoreId: addressState.value.pickUpInfo.id, //自提门店编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiverName: addressState.value.receiverName, // 选择门店自提时,该字段为联系人名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiverMobile: addressState.value.receiverMobile, // 选择门店自提时,该字段为联系人手机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointStatus: state.pointStatus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      combinationActivityId: state.orderPayload.combinationActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      combinationHeadId: state.orderPayload.combinationHeadId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      seckillActivityId: state.orderPayload.seckillActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointActivityId: state.orderPayload.pointActivityId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    state.orderInfo = data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    state.couponInfo = data.coupons || []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 设置收货地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (state.orderInfo.address) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      addressState.value.addressInfo = state.orderInfo.address; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 使用 watch 监听地址和配送方式的变化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch(addressState, async (newAddress, oldAddress) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 如果收货地址或配送方式有变化,则重新计算价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newAddress.addressInfo.id !== oldAddress.addressInfo.id || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newAddress.deliveryType !== oldAddress.deliveryType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      await getOrderInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  defineExpose({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onConfirm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .score-img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin: 0 4rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .order-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 80rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .item-title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-size: 28rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-weight: 400; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .item-value { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-size: 28rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-weight: 500; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .text-disabled { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #bbbbbb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .item-icon { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .remark-input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .item-placeholder { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-size: 26rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .total-box-footer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 90rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .total-num { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #333333; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .footer-box { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 100rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .submit-btn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      width: 240rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      height: 70rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-size: 28rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-weight: 500; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .goto-pay-text { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        line-height: 28rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .cancel-btn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      width: 240rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      height: 80rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      font-size: 26rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background-color: #e5e5e5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-weight: bold; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #333333; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .subtitle { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 28rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #999999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .cicon-checkbox { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: var(--v-primary-base); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .cicon-box { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 36rpx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #999999; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |