Ver Fonte

feat(refund): 优化售后退款详情和优惠券展示

- 退款金额显示实退款或应退款状态区分
- 退款详情页增加优惠券处理说明及查看优惠券按钮
- 支持显示优惠券折扣金额及积分抵扣合计
- 优惠券页支持高亮当前活动优惠券
- 订单详情页新增优惠券退还信息展示
- 调整退款页总计、实付款及优惠券金额计算显示
- 修改开发环境接口地址配置注释状态
zhangtao há 1 semana atrás
pai
commit
e81f38adb2

+ 2 - 2
src/config/index.ts

@@ -9,9 +9,9 @@ const mapEnvVersion = {
   // develop: 'http://192.168.0.19:8080', // 邓
   // develop: 'http://192.168.0.217:8080', // 黄
   // develop: 'http://192.168.0.11:8080', // 王
-  develop: 'http://192.168.1.89:8080', // 田
+  // develop: 'http://192.168.1.89:8080', // 田
   // develop: 'http://74949mkfh190.vicp.fun', // 付
-  // develop: 'http://47.109.84.152:8081',
+  develop: 'http://47.109.84.152:8081',
   // develop: 'https://5ed0f7cc.r9.vip.cpolar.cn',
   // develop: 'https://smqjh.api.zswlgz.com',
   /**

+ 94 - 10
src/subPack-common/afterSalesDetail/index.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { handleCommonRefundOrderCancel, refundStatus } from '../afterSalesList/index'
+import router from '@/router'
 import { StaticUrl } from '@/config'
 
 definePage({
@@ -122,21 +123,78 @@ function copyToClipboard(text: string) {
       </view>
       <view class="mt24rpx flex items-center justify-between text-28rpx">
         <view class="text-#222 font-semibold">
-          退款金额
+          {{ refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts ? '实' : '应' }}退款金额
         </view>
         <view class="text-#FF4D3A font-semibold">
           ¥{{ refundOrderInfo.refundAmount }}
         </view>
       </view>
-      <view class="mt20rpx text-24rpx text-#AAAAAA">
-        申请通过后,将退回至原账户
+      <view v-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts" class="mt20rpx flex flex-wrap items-center gap-20rpx text-28rpx">
+        <view class="flex items-center">
+          <view class="text-#222 font-semibold">
+            退款金额
+          </view>
+          <view class="text-#FF4D3A font-semibold">
+            ¥{{ refundOrderInfo.refundAmount }}
+          </view>
+        </view>
+        <view class="ml20rpx flex items-center">
+          <view class="text-#222 font-semibold">
+            退还积分:
+          </view>
+          <view class="text-#FF4D3A font-semibold">
+            ¥{{ refundOrderInfo.omsOrderVo.offsetPoints }}
+          </view>
+        </view>
+        <view class="flex items-center">
+          <view class="text-#222 font-semibold">
+            退还优惠券:
+          </view>
+          <view class="text-#FF4D3A font-semibold">
+            ¥{{ refundOrderInfo.isAll ? refundOrderInfo.couponBaseInfoDTO.discountMoney : '0' }}
+          </view>
+        </view>
       </view>
-      <view v-if="refundOrderInfo.returnMoneySts == refundStatus.ReturnCompleted" class="mt20rpx flex items-center text-24rpx text-#AAAAAA">
+      <!-- <view class="mt20rpx text-24rpx text-#AAAAAA">
+        申请通过后,将退回至原账户
+      </view> -->
+      <!-- <view v-if="refundOrderInfo.returnMoneySts == refundStatus.ReturnCompleted" class="mt20rpx flex items-center text-24rpx text-#AAAAAA">
         <view>退还金额:{{ refundOrderInfo.userRefundMoney }}</view>
         <view class="ml20rpx">
           退还积分:{{ refundOrderInfo.refundScore }}(已过期{{ refundOrderInfo.refundExpiredScore }})
         </view>
+      </view> -->
+    </view>
+    <view class="mt20rpx rounded-16rpx bg-white p24rpx">
+      <view class="text-28rpx font-semibold">
+        优惠券处理
+      </view>
+      <view class="mt10rpx text-24rpx">
+        使用的优惠券:{{ refundOrderInfo.couponBaseInfoDTO.activityName }}
+      </view>
+      <view class="mb24rpx mt10rpx text-24rpx">
+        <view> 处理说明:</view>
+
+        <template v-if="refundStatus.PendingAudit == refundOrderInfo.returnMoneySts">
+          <view> 当前售后单为全额退款。审核通过后,优惠券退还,有效期不变;</view>
+
+          <view>审核不通过,则优惠券保持原状。</view>
+        </template>
+        <template v-else-if="[refundStatus.Rejected, refundStatus.Cancel].includes(refundOrderInfo.returnMoneySts as number)">
+          <view> 优惠券保持已使用状态,不退还。</view>
+        </template>
+        <template v-else-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts">
+          <view v-if="refundOrderInfo.isAll">
+            <view> 有效期不变至: {{ refundOrderInfo.couponBaseInfoDTO.expirationTime }}</view>
+          </view>
+          <view v-else>
+            <view> 优惠券已使用,不退回</view>
+          </view>
+        </template>
       </view>
+      <wd-button v-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts" @click="router.push({ name: 'xsb-coupon', params: { couponId: refundOrderInfo.couponBaseInfoDTO.allowanceId, activeTab: refundOrderInfo.isAll ? '2' : '1' } })">
+        查看优惠卷
+      </wd-button>
     </view>
     <view class="mt20rpx rounded-16rpx bg-white p24rpx">
       <view class="grid grid-cols-5 py24rpx text-28rpx text-#222">
@@ -252,21 +310,47 @@ function copyToClipboard(text: string) {
           ¥{{ refundOrderInfo.freightAmount }}
         </view>
       </view>
+      <view v-if="refundOrderInfo.couponBaseInfoDTO.discountMoney" class="mt24rpx flex items-center justify-between">
+        <view class="text-28rpx">
+          优惠券
+        </view>
+        <view class="text-#FF4A39 font-semibold">
+          -¥{{ refundOrderInfo.couponBaseInfoDTO.discountMoney }}
+        </view>
+      </view>
       <view class="mt24rpx flex items-center justify-between">
         <view class="text-28rpx">
           积分({{ refundOrderInfo.omsOrderVo.offsetPoints }})
         </view>
         <view class="text-#FF4A39 font-semibold">
-          ¥{{ refundOrderInfo.omsOrderVo.offsetPointsMoney }}
+          -¥{{ refundOrderInfo.omsOrderVo.offsetPointsMoney }}
         </view>
       </view>
       <view class="my24rpx h2rpx w-full bg-#F0F0F0" />
-      <view class="flex items-center justify-between">
-        <view class="text-28rpx font-semibold">
-          合计:
+      <view class="flex items-center">
+        <view class="flex items-center justify-end">
+          <view class="text-28rpx font-semibold">
+            总计:
+          </view>
+          <view class="ml8rpx text-28rpx text-#FF4D3A font-semibold">
+            ¥{{ refundOrderInfo.omsOrderVo.orderMoney }}
+          </view>
+        </view>
+        <view class="ml10rpx flex items-center">
+          <view clas="text-28rpx">
+            共减
+          </view>
+          <view class="ml5rpx text-28rpx text-#FF4D3A font-semibold">
+            {{ refundOrderInfo.omsOrderVo.offsetPointsMoney + refundOrderInfo.couponBaseInfoDTO.discountMoney }}
+          </view>
         </view>
-        <view class="ml8rpx text-28rpx text-#FF4D3A font-semibold">
-          ¥{{ refundOrderInfo.omsOrderVo.orderMoney }}
+        <view class="ml10rpx flex items-center">
+          <view clas="text-28rpx">
+            实付款
+          </view>
+          <view class="ml5rpx text-28rpx text-#FF4D3A font-semibold">
+            {{ refundOrderInfo.userRefundMoney }}
+          </view>
         </view>
       </view>
     </view>

+ 14 - 4
src/subPack-xsb/coupon/index.vue

@@ -11,6 +11,7 @@ const tabList = [
 ]
 
 const activeTab = ref(0)
+const activeCoupon = ref(null)
 
 const { data: couponList, isLastPage, page, reload } = usePagination(
   (pageNum, pageSize) => Apis.xsb.memberCouponPage({
@@ -29,6 +30,13 @@ const { data: couponList, isLastPage, page, reload } = usePagination(
     append: true,
   },
 )
+onLoad((options: any) => {
+  console.log(options)
+  if (options.couponId) {
+    activeCoupon.value = options.couponId
+    switchTab(Number(options.activeTab))
+  }
+})
 
 function switchTab(index: number) {
   if (activeTab.value === index)
@@ -57,10 +65,12 @@ onReachBottom(() => {
     <!-- 列表 -->
     <view class="p-24rpx">
       <view v-for="item in couponList" :key="item.id" class="mb-20rpx">
-        <CouponItem
-          :itemcoupon="item"
-          :show-use-btn="item.useStatus === 2"
-        />
+        <view :class="[item.allowanceId == activeCoupon ? 'border-2rpx border-red-4 rounded-16rpx border-solid' : '']">
+          <CouponItem
+            :itemcoupon="item"
+            :show-use-btn="item.useStatus === 2"
+          />
+        </view>
       </view>
 
       <!-- 空状态 -->

+ 18 - 1
src/subPack-xsb/orderDetaile/index.vue

@@ -468,6 +468,23 @@ function handleRefundDetail(item: any) {
             ¥{{ orderInfo?.freightAmount }}
           </view>
         </view>
+        <view class="mt-24rpx flex items-center justify-between">
+          <view class="text-28rpx">
+            优惠券
+          </view>
+          <view class="text-[#FF4A39] font-semibold">
+            -¥{{ Number(orderInfo?.couponBaseInfoDTO?.discountMoney) }}
+          </view>
+        </view>
+        <view v-if="orderInfo.refundOrderList" class="mt10rpx rounded-16rpx bg-#ccc p24rpx text-24rpx">
+          <view v-if="orderInfo.couponBaseInfoDTO.isAll">
+            已退还优惠券:{{ orderInfo.couponBaseInfoDTO.activityName }}
+            <view>优惠券已退回您的账户,可在“我的-优惠券”中查看</view>
+          </view>
+          <view v-else>
+            注:部分退款不退还优惠券
+          </view>
+        </view>
         <view class="mt-24rpx flex items-center justify-between">
           <view class="text-28rpx">
             积分
@@ -479,7 +496,7 @@ function handleRefundDetail(item: any) {
         <view class="my-24rpx h-2rpx w-full bg-[#F0F0F0]" />
         <view class="flex items-center justify-end">
           <view class="text-28rpx">
-            总计{{ orderInfo.orderMoney }} 共减 {{ Number(orderInfo.offsetPoints) / 100 }}
+            总计{{ orderInfo.orderMoney }} 共减 {{ Number(orderInfo.offsetPoints) / 100 + Number(orderInfo.couponBaseInfoDTO.discountMoney) }}
           </view>
           <view class="ml-20rpx text-28rpx text-[#FF4D3A] font-semibold">
             {{ [OrderStatus.PaddingPay, OrderStatus.OrderCancel].includes(Number(orderInfo.hbOrderStatus)) ? '需' : '实'