shish 1 өдөр өмнө
parent
commit
6e2a992019

+ 99 - 16
ghsApp/src/admin/billing/forwardResult.vue

@@ -2,9 +2,9 @@
   退款结果页 / 资金落地 / 返充凭证海报
   用途:
     1) 无原单退款、线下原单售后成功后:选手选「已线下转账」或「返充到客户余额」
-    2) 已返充余额:绘制退款凭证海报
-    3) 已原路退回:简单成功提示
-  谁用:freeRefundConfirm、refund.vue 线下售后、售后详情/列表补发。
+    2) 已返充余额、挂账原路:绘制带小程序码的退款凭证海报
+    3) 其它原路退回:说明退到哪里、怎么退
+  谁用:freeRefundConfirm、refund.vue 售后、售后详情/列表补发。
 -->
 <template>
   <view class="forward-result-page">
@@ -26,8 +26,9 @@
       <button class="admin-button-com big action-btn" @click="goBack">返回首页</button>
     </appResult>
 
-    <!-- 已返充余额:凭证海报 -->
-    <appResult v-else-if="showPoster" title="退款成功">
+    <!-- 已返充 / 挂账原路:凭证海报(含小程序码) -->
+    <appResult v-else-if="showPoster" :title="posterPageTitle">
+      <text v-if="posterUrl && originReturnDesc" class="origin-desc">{{ originReturnDesc }}</text>
       <view v-if="posterLoading" class="status-text">凭证生成中...</view>
       <view v-else-if="posterFail" class="fail-box">
         <text class="status-text fail-text">凭证生成失败,请重试</text>
@@ -57,9 +58,10 @@
       </button>
     </appResult>
 
-    <!-- 已原路 / 其它终态 -->
+    <!-- 已原路 / 其它终态(非挂账海报场景) -->
     <appResult v-else :title="pageTitle">
       <text class="simple-success">{{ simpleSuccessText }}</text>
+      <text v-if="originReturnDesc" class="origin-desc">{{ originReturnDesc }}</text>
       <button class="admin-button-com big action-btn" @click="goBack">
         {{ mode === 'repost' ? '返回' : '返回首页' }}
       </button>
@@ -110,7 +112,9 @@ export default {
       posterLoading: false,
       posterFail: false,
       canvasW: 360,
-      canvasH: 640
+      canvasH: 640,
+      // 当天=1 / 跨天=0,挂账海报文案区分减欠款 vs 加余额
+      sameDay: 1
     }
   },
   computed: {
@@ -120,20 +124,83 @@ export default {
         && Number(this.returnBalance) === 0
         && (Number(this.needFundAction) === 1 || Number(this.orderId) === 0)
     },
-    /** 已返充:展示海报 */
+    /** 挂账原路已完成(需出凭证海报) */
+    isDebtOriginReturn() {
+      return Number(this.hasReturn) === 1
+        && Number(this.returnBalance) === 0
+        && Number(this.payWay) === 3
+    },
+    /** 已返充或挂账原路:展示带小程序码的凭证海报 */
     showPoster() {
-      return Number(this.returnBalance) === 1
+      return Number(this.returnBalance) === 1 || this.isDebtOriginReturn
+    },
+    posterPageTitle() {
+      if (this.isDebtOriginReturn) return '原路退回成功'
+      return '退款成功'
     },
     pageTitle() {
       if (Number(this.hasReturn) === 1) return '原路退回成功'
       return '退款成功'
     },
+    /** 海报导语:返充 / 挂账减欠 / 挂账退余额 */
+    posterStatusText() {
+      if (Number(this.returnBalance) === 1) return '已返充到余额'
+      if (this.isDebtOriginReturn) {
+        return Number(this.sameDay) === 0 ? '挂账原路已退回余额' : '已按挂账原路减少欠款'
+      }
+      return '退款成功'
+    },
+    /**
+     * 成功主文案:原路时写清退到哪里
+     */
     simpleSuccessText() {
       const amt = this.formatMoney(this.amount)
-      if (Number(this.hasReturn) === 1) {
-        return `已原路退回 ¥${amt}`
+      if (Number(this.hasReturn) !== 1) {
+        return `退款成功,金额 ¥${amt}`
+      }
+      const payWay = Number(this.payWay)
+      const online = Number(this.onlinePay) === 2
+      if (payWay === 0) {
+        return online ? `已原路退回到客户微信 ¥${amt}` : `已原路退回(线下微信)¥${amt}`
+      }
+      if (payWay === 1) {
+        return online ? `已原路退回到客户支付宝 ¥${amt}` : `已原路退回(线下支付宝)¥${amt}`
+      }
+      if (payWay === 2) return `已原路退回到客户余额 ¥${amt}`
+      if (payWay === 3) {
+        return Number(this.sameDay) === 0
+          ? `挂账原路已退回客户余额 ¥${amt}`
+          : `已按挂账原路减少欠款 ¥${amt}`
       }
-      return `退款成功,金额 ¥${amt}`
+      if (payWay === 4) return `已原路退回(现金)¥${amt}`
+      if (payWay === 5) return `已原路退回(银行卡)¥${amt}`
+      return `已原路退回 ¥${amt}`
+    },
+    /** 原路补充说明:怎么退的 */
+    originReturnDesc() {
+      if (Number(this.returnBalance) === 1) {
+        return '金额已返充到客户余额,可长按下方凭证转发给客户。'
+      }
+      if (Number(this.hasReturn) !== 1) return ''
+      const payWay = Number(this.payWay)
+      const online = Number(this.onlinePay) === 2
+      if (payWay === 0 && online) {
+        return '退款已按原支付通道退回客户微信。'
+      }
+      if (payWay === 1 && online) {
+        return '退款已按原支付通道退回客户支付宝。'
+      }
+      if (payWay === 2) return '金额已自动加回该客户账户余额。'
+      if (payWay === 3) {
+        if (Number(this.sameDay) === 0) {
+          return '退款金额已加回客户余额。可长按下方凭证转发给客户核对。'
+        }
+        return '该笔售后已自动冲减客户挂账欠款。可长按下方凭证转发给客户核对。'
+      }
+      if (payWay === 0 || payWay === 1) {
+        return '已按原单线下支付方式标记原路退回,请确认客户已收到退款。'
+      }
+      return '退款已按原单方式完成原路退回。'
     },
     payWayLabel() {
       const payWay = Number(this.payWay)
@@ -189,7 +256,9 @@ export default {
       if (!this.needFundAction && Number(this.hasReturn) === 0 && Number(this.returnBalance) === 0 && Number(this.orderId) === 0) {
         this.needFundAction = 1
       }
+      this.sameDay = payload.sameDay != null ? Number(payload.sameDay) : 1
 
+      // 返充或挂账原路:生成带小程序码的凭证海报
       if (this.showPoster && this.customId > 0) {
         this.generatePoster()
       }
@@ -211,7 +280,8 @@ export default {
         hasReturn: this.hasReturn,
         couldReturn: this.couldReturn,
         returnBalance: this.returnBalance,
-        needFundAction: this.needFundAction
+        needFundAction: this.needFundAction,
+        sameDay: this.sameDay
       })
     },
 
@@ -258,6 +328,10 @@ export default {
           that.needFundAction = 0
           that.persistPayload()
           that.$msg && that.$msg('已标记原路退回')
+          // 挂账原路标记后生成凭证海报
+          if (that.showPoster && that.customId > 0) {
+            that.generatePoster()
+          }
         }).catch(() => {
           uni.hideLoading()
           that.fundActing = false
@@ -386,7 +460,7 @@ export default {
 
       ctx.setFillStyle('#333333')
       ctx.setFontSize(22)
-      ctx.fillText('已返充到余额', w / 2, 208)
+      ctx.fillText(that.posterStatusText, w / 2, 208)
 
       let rowY = 252
       const labelX = padX
@@ -541,7 +615,7 @@ export default {
 }
 
 .poster-img {
-  width: 640upx;
+  width: 480upx;
   max-width: 100%;
   border-radius: 12upx;
   box-shadow: 0 8upx 24upx rgba(0, 0, 0, 0.12);
@@ -555,13 +629,22 @@ export default {
 }
 
 .simple-success {
-  margin-bottom: 24upx;
+  margin-bottom: 16upx;
   font-size: 30upx;
   color: #333333;
   text-align: center;
   line-height: 1.6;
 }
 
+.origin-desc {
+  margin-bottom: 28upx;
+  padding: 0 20upx;
+  font-size: 26upx;
+  color: #666666;
+  text-align: center;
+  line-height: 1.5;
+}
+
 .fund-tip {
   margin-bottom: 40upx;
   font-size: 34upx;

+ 7 - 9
ghsApp/src/pagesOrder/refund.vue

@@ -358,12 +358,6 @@ export default {
 			}
 			let topTitle = '提示'
 			let title = '确认退款?'
-			if(this.orderInfo.payWay == 2){
-				title = '此单余额付款,提交后会原路退回客户余额,确认退款?'
-			}else if(this.orderInfo.onlinePay == 1 && Number(this.orderInfo.debtPrice)<=0){
-				title = '确认退款?'
-				topTitle = '确认退款'
-			}
 			that.$util.confirmModal({title:topTitle,content:title},() => {
 				that.submitRefund(that._pendingRefundParams)
 			})
@@ -423,8 +417,10 @@ export default {
 						|| (Number(data.hasReturn) === 0
 							&& Number(data.returnBalance) === 0
 							&& Number(data.couldReturn) === 1)
+					const payWay = data.payWay != null ? Number(data.payWay) : Number(that.orderInfo.payWay)
+					// 返充余额,或挂账原路:进结果页出凭证海报
 					const showPoster = Number(data.returnBalance) === 1
-					// 待资金落地或已返充:进结果页
+						|| (Number(data.hasReturn) === 1 && payWay === 3)
 					if (needFund || showPoster) {
 						const payload = {
 							amount: data.refundPrice || refundParams.price,
@@ -434,12 +430,13 @@ export default {
 							forwardSn: data.orderSn || '',
 							forwardId: data.id || 0,
 							orderId: data.orderId || that.option.id,
-							payWay: data.payWay != null ? data.payWay : that.orderInfo.payWay,
+							payWay: payWay,
 							onlinePay: data.onlinePay != null ? data.onlinePay : that.orderInfo.onlinePay,
 							hasReturn: data.hasReturn || 0,
 							couldReturn: data.couldReturn != null ? data.couldReturn : 1,
 							returnBalance: data.returnBalance || 0,
-							needFundAction: needFund ? 1 : 0
+							needFundAction: needFund ? 1 : 0,
+							sameDay: data.sameDay != null ? data.sameDay : (refundParams.sameDay != null ? refundParams.sameDay : 1)
 						}
 						uni.setStorageSync('forwardResultPayload', payload)
 						that.$util.pageTo({
@@ -451,6 +448,7 @@ export default {
 						})
 						return
 					}
+					// 其它原路已退回(线上/余额等):进成功页,展示退回去向
 					that.$util.pageTo({url: '/pagesOrder/refundSuccess?id='+(data.id||''),type:2})
 				}
 			})

+ 6 - 1
ghsApp/src/pagesOrder/refundDetail.vue

@@ -250,7 +250,11 @@ export default {
 		},
 		/** 已通过且返充余额时可查看凭证 */
 		canShowPoster() {
-			return Number(this.info.status) === 1 && Number(this.info.returnBalance) === 1
+			// 返充余额,或挂账原路:均可查看凭证海报
+			const info = this.info || {}
+			if (Number(info.status) !== 1) return false
+			if (Number(info.returnBalance) === 1) return true
+			return Number(info.hasReturn) === 1 && Number(info.payWay) === 3
 		},
 		/** 申请原因文案 */
 		causeText() {
@@ -416,6 +420,7 @@ export default {
 				couldReturn: info.couldReturn != null ? info.couldReturn : 1,
 				returnBalance: info.returnBalance || 0,
 				needFundAction: this.canFundAction ? 1 : 0,
+				sameDay: info.sameDay != null ? info.sameDay : 1,
 				mode: mode || ''
 			}
 		},

+ 117 - 3
ghsApp/src/pagesOrder/refundSuccess.vue

@@ -1,5 +1,18 @@
+<!--
+  售后成功页
+  用途:退款通过后展示结果;原路退回时说明退到哪里、怎么退。
+  挂账原路凭证海报改走 forwardResult,本页保留报损/减库存等后续操作。
+  谁用:pagesOrder/refund.vue(非挂账原路)、refundDetail 去报损入口。
+-->
 <template>
   <appResult :title="title">
+    <!-- 原路退回:告知资金去向与退回方式 -->
+    <view v-if="showOriginReturnTip" class="origin-return-box">
+      <text class="origin-return-amount">¥{{ formatMoney(info.refundPrice) }}</text>
+      <text class="origin-return-title">{{ originReturnTitle }}</text>
+      <text class="origin-return-desc">{{ originReturnDesc }}</text>
+    </view>
+
     <button class="admin-button-com big blue" style="width:80%;" @click="goBack">返回</button>
     <view v-if="!$util.isEmpty(itemList)" style="margin-top:20upx;">
       <block v-for="(item, index) in itemList" :key="index">
@@ -94,7 +107,7 @@ export default {
 	data() {
 		return {
 			title:'操作成功',
-      info:[],
+      info:{},
       itemList:[],
 			wastageShow:false,
 			wastageNum:0,
@@ -107,11 +120,71 @@ export default {
       currentEnv:'production'
 		};
 	},
+  computed: {
+    /** 已原路退回:展示资金去向说明 */
+    showOriginReturnTip() {
+      return Number(this.info.hasReturn) === 1
+    },
+    /**
+     * 原路退回标题:按支付方式说明退到哪里
+     */
+    originReturnTitle() {
+      const payWay = Number(this.info.payWay)
+      const online = Number(this.info.onlinePay) === 2
+      const nextDay = Number(this.info.sameDay) === 0
+      if (payWay === 0) {
+        return online ? '已原路退回到客户微信' : '已原路退回(线下微信)'
+      }
+      if (payWay === 1) {
+        return online ? '已原路退回到客户支付宝' : '已原路退回(线下支付宝)'
+      }
+      if (payWay === 2) {
+        return '已原路退回到客户余额'
+      }
+      if (payWay === 3) {
+        return nextDay ? '挂账原路已退回客户余额' : '已按挂账原路减少欠款'
+      }
+      if (payWay === 4) return '已原路退回(现金)'
+      if (payWay === 5) return '已原路退回(银行卡)'
+      return '已原路退回'
+    },
+    /** 原路退回说明:怎么退的、客户侧会看到什么 */
+    originReturnDesc() {
+      const payWay = Number(this.info.payWay)
+      const online = Number(this.info.onlinePay) === 2
+      const nextDay = Number(this.info.sameDay) === 0
+      if (payWay === 0 && online) {
+        return '退款已按原支付通道退回客户微信,一般 1~3 个工作日到账,请告知客户注意查收。'
+      }
+      if (payWay === 1 && online) {
+        return '退款已按原支付通道退回客户支付宝,一般 1~3 个工作日到账,请告知客户注意查收。'
+      }
+      if (payWay === 2) {
+        return '金额已自动加回该客户账户余额,客户可在小程序查看最新余额。'
+      }
+      if (payWay === 3) {
+        if (nextDay) {
+          return '历史挂账单按原路处理:金额已加回客户余额。'
+        }
+        return '该笔售后已自动冲减客户挂账欠款,无需再线下转账。'
+      }
+      if (payWay === 0 || payWay === 1) {
+        return '已按原单线下支付方式标记原路退回,请确认客户已收到退款。'
+      }
+      return '退款已按原单方式完成原路退回。'
+    }
+  },
   onLoad() {
     //当前环境
     this.currentEnv = CURRENT_ENV
   },
 	methods: {
+    /** 金额展示:最多两位小数 */
+    formatMoney(val) {
+      const n = parseFloat(val)
+      if (isNaN(n)) return '0'
+      return String(parseFloat(n.toFixed(2)))
+    },
     beginReduce(item){
       this.reduceShow = true
       this.reduceNum = item.xhNum
@@ -159,9 +232,13 @@ export default {
     init(){
       let that = this
 			refundDetail({ id: this.option.id }).then(res=>{
-        that.info = res.data.info ? res.data.info : []
+        that.info = res.data.info ? res.data.info : {}
         that.itemList = res.data.itemList ? res.data.itemList : []
         that.refundOption = res.data.itemRefundOption?res.data.itemRefundOption:[]
+        // 原路退回成功时标题改为「退款成功」
+        if (Number(that.info.hasReturn) === 1) {
+          that.title = '退款成功'
+        }
 			})
     },
     goBack() {
@@ -217,4 +294,41 @@ export default {
   color: #333;
   border-color: #e0e0e0;
 }
-</style>
+
+.origin-return-box {
+  width: 100%;
+  margin-bottom: 28upx;
+  padding: 24upx 20upx;
+  background: rgba(51, 133, 255, 0.08);
+  border-radius: 12upx;
+  border-left: 6upx solid #3385ff;
+  box-sizing: border-box;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.origin-return-amount {
+  font-size: 48upx;
+  font-weight: 700;
+  color: #e02020;
+  line-height: 1.2;
+}
+
+.origin-return-title {
+  margin-top: 12upx;
+  font-size: 30upx;
+  font-weight: 600;
+  color: #3385ff;
+  text-align: center;
+  line-height: 1.4;
+}
+
+.origin-return-desc {
+  margin-top: 12upx;
+  font-size: 26upx;
+  color: #666;
+  text-align: center;
+  line-height: 1.5;
+}
+</style>

+ 101 - 15
hdApp/src/admin/billing/forwardResult.vue

@@ -2,9 +2,9 @@
   退款结果页 / 资金落地 / 返充凭证海报
   用途:
     1) 无原单退款、线下原单售后成功后:选手选「已线下转账」或「返充到客户余额」
-    2) 已返充余额:绘制退款凭证海报
-    3) 已原路退回:简单成功提示
-  谁用:freeRefundConfirm、refund.vue 线下售后、售后详情/列表补发。
+    2) 已返充余额、挂账原路:绘制带小程序码的退款凭证海报
+    3) 其它原路退回:说明退到哪里、怎么退
+  谁用:freeRefundConfirm、admin/order/refund.vue 售后、售后详情/列表补发。
 -->
 <template>
   <view class="forward-result-page">
@@ -26,8 +26,9 @@
       <button class="admin-button-com big action-btn" @click="goBack">返回首页</button>
     </appResult>
 
-    <!-- 已返充余额:凭证海报 -->
-    <appResult v-else-if="showPoster" title="退款成功">
+    <!-- 已返充 / 挂账原路:凭证海报(含小程序码) -->
+    <appResult v-else-if="showPoster" :title="posterPageTitle">
+      <text v-if="posterUrl && originReturnDesc" class="origin-desc">{{ originReturnDesc }}</text>
       <view v-if="posterLoading" class="status-text">凭证生成中...</view>
       <view v-else-if="posterFail" class="fail-box">
         <text class="status-text fail-text">凭证生成失败,请重试</text>
@@ -57,9 +58,10 @@
       </button>
     </appResult>
 
-    <!-- 已原路 / 其它终态 -->
+    <!-- 已原路 / 其它终态(非挂账海报场景) -->
     <appResult v-else :title="pageTitle">
       <text class="simple-success">{{ simpleSuccessText }}</text>
+      <text v-if="originReturnDesc" class="origin-desc">{{ originReturnDesc }}</text>
       <button class="admin-button-com big action-btn" @click="goBack">
         {{ mode === 'repost' ? '返回' : '返回首页' }}
       </button>
@@ -110,7 +112,9 @@ export default {
       posterLoading: false,
       posterFail: false,
       canvasW: 360,
-      canvasH: 640
+      canvasH: 640,
+      // 当天=1 / 跨天=0,挂账海报文案区分减欠款 vs 加余额
+      sameDay: 1
     }
   },
   computed: {
@@ -120,20 +124,85 @@ export default {
         && Number(this.returnBalance) === 0
         && (Number(this.needFundAction) === 1 || Number(this.orderId) === 0)
     },
-    /** 已返充:展示海报 */
+    /** 挂账原路已完成(需出凭证海报) */
+    isDebtOriginReturn() {
+      return Number(this.hasReturn) === 1
+        && Number(this.returnBalance) === 0
+        && Number(this.payWay) === 3
+    },
+    /** 已返充或挂账原路:展示带小程序码的凭证海报 */
     showPoster() {
-      return Number(this.returnBalance) === 1
+      return Number(this.returnBalance) === 1 || this.isDebtOriginReturn
+    },
+    posterPageTitle() {
+      if (this.isDebtOriginReturn) return '原路退回成功'
+      return '退款成功'
     },
     pageTitle() {
       if (Number(this.hasReturn) === 1) return '原路退回成功'
       return '退款成功'
     },
+    /** 海报导语:返充 / 挂账减欠 / 挂账退余额 */
+    posterStatusText() {
+      if (Number(this.returnBalance) === 1) return '已返充到余额'
+      if (this.isDebtOriginReturn) {
+        return Number(this.sameDay) === 0 ? '挂账原路已退回余额' : '已按挂账原路减少欠款'
+      }
+      return '退款成功'
+    },
+    /**
+     * 成功主文案:原路时写清退到哪里
+     */
     simpleSuccessText() {
       const amt = this.formatMoney(this.amount)
-      if (Number(this.hasReturn) === 1) {
-        return `已原路退回 ¥${amt}`
+      if (Number(this.hasReturn) !== 1) {
+        return `退款成功,金额 ¥${amt}`
+      }
+      const payWay = Number(this.payWay)
+      const online = Number(this.onlinePay) === 2
+      if (payWay === 0) {
+        return online ? `已原路退回到客户微信 ¥${amt}` : `已原路退回(线下微信)¥${amt}`
       }
-      return `退款成功,金额 ¥${amt}`
+      if (payWay === 1) {
+        return online ? `已原路退回到客户支付宝 ¥${amt}` : `已原路退回(线下支付宝)¥${amt}`
+      }
+      if (payWay === 2) return `已原路退回到客户余额 ¥${amt}`
+      if (payWay === 3) {
+        return Number(this.sameDay) === 0
+          ? `挂账原路已退回客户余额 ¥${amt}`
+          : `已按挂账原路减少欠款 ¥${amt}`
+      }
+      if (payWay === 4) return `已原路退回(现金)¥${amt}`
+      if (payWay === 5) return `已原路退回(银行卡)¥${amt}`
+      return `已原路退回 ¥${amt}`
+    },
+    /** 原路补充说明:怎么退的 */
+    originReturnDesc() {
+      if (Number(this.returnBalance) === 1) {
+        return '金额已返充到客户余额,可长按下方凭证转发给客户。'
+      }
+      if (Number(this.hasReturn) !== 1) return ''
+      const payWay = Number(this.payWay)
+      const online = Number(this.onlinePay) === 2
+      if (payWay === 0 && online) {
+        return '退款已按原支付通道退回客户微信,一般 1~3 个工作日到账,请告知客户注意查收。'
+      }
+      if (payWay === 1 && online) {
+        return '退款已按原支付通道退回客户支付宝,一般 1~3 个工作日到账,请告知客户注意查收。'
+      }
+      if (payWay === 2) {
+        return '金额已自动加回该客户账户余额,客户可在小程序查看最新余额。'
+      }
+      if (payWay === 3) {
+        if (Number(this.sameDay) === 0) {
+          return '历史挂账单按原路处理:金额已加回客户余额。可长按下方凭证转发给客户核对。'
+        }
+        return '该笔售后已自动冲减客户挂账欠款。可长按下方凭证转发给客户核对。'
+      }
+      if (payWay === 0 || payWay === 1) {
+        return '已按原单线下支付方式标记原路退回,请确认客户已收到退款。'
+      }
+      return '退款已按原单方式完成原路退回。'
     },
     payWayLabel() {
       const payWay = Number(this.payWay)
@@ -189,7 +258,10 @@ export default {
       if (!this.needFundAction && Number(this.hasReturn) === 0 && Number(this.returnBalance) === 0 && Number(this.orderId) === 0) {
         this.needFundAction = 1
       }
+      // sameDay:接口有则用;缺省按当天,避免误用跨天文案
+      this.sameDay = payload.sameDay != null ? Number(payload.sameDay) : 1
 
+      // 返充或挂账原路:生成带小程序码的凭证海报
       if (this.showPoster && this.customId > 0) {
         this.generatePoster()
       }
@@ -211,7 +283,8 @@ export default {
         hasReturn: this.hasReturn,
         couldReturn: this.couldReturn,
         returnBalance: this.returnBalance,
-        needFundAction: this.needFundAction
+        needFundAction: this.needFundAction,
+        sameDay: this.sameDay
       })
     },
 
@@ -258,6 +331,10 @@ export default {
           that.needFundAction = 0
           that.persistPayload()
           that.$msg && that.$msg('已标记原路退回')
+          // 挂账原路标记后生成凭证海报
+          if (that.showPoster && that.customId > 0) {
+            that.generatePoster()
+          }
         }).catch(() => {
           uni.hideLoading()
           that.fundActing = false
@@ -386,7 +463,7 @@ export default {
 
       ctx.setFillStyle('#333333')
       ctx.setFontSize(22)
-      ctx.fillText('已返充到余额', w / 2, 208)
+      ctx.fillText(that.posterStatusText, w / 2, 208)
 
       let rowY = 252
       const labelX = padX
@@ -555,13 +632,22 @@ export default {
 }
 
 .simple-success {
-  margin-bottom: 24upx;
+  margin-bottom: 16upx;
   font-size: 30upx;
   color: #333333;
   text-align: center;
   line-height: 1.6;
 }
 
+.origin-desc {
+  margin-bottom: 28upx;
+  padding: 0 20upx;
+  font-size: 26upx;
+  color: #666666;
+  text-align: center;
+  line-height: 1.5;
+}
+
 .fund-tip {
   margin-bottom: 40upx;
   font-size: 34upx;

+ 4 - 1
hdApp/src/admin/order/refund.vue

@@ -474,6 +474,7 @@ export default {
 		/**
 		 * 提交售后退款;成功后统一进 forwardResult(对齐 ghs 端)
 		 * - 待选手选落地 / 已返充海报 / 已原路成功:均由 forwardResult 展示
+		 * - 原路成功会说明退到哪里、怎么退;挂账原路另带小程序码便于转发
 		 * - 不再按 payWay 跳转 onlineResult / balanceCp / offlineRemind / debtResult
 		 * - hd 无 ghs 的 refundSuccess(报损减库),原路终态也走 forwardResult 简版成功态
 		 */
@@ -501,7 +502,9 @@ export default {
 						hasReturn: data.hasReturn != null ? data.hasReturn : 0,
 						couldReturn: data.couldReturn != null ? data.couldReturn : 1,
 						returnBalance: data.returnBalance != null ? data.returnBalance : 0,
-						needFundAction: needFund ? 1 : 0
+						needFundAction: needFund ? 1 : 0,
+						// 区分当天减挂账 vs 跨天退余额文案
+						sameDay: data.sameDay != null ? data.sameDay : (refundParams.sameDay != null ? refundParams.sameDay : 1)
 					}
 					uni.setStorageSync('forwardResultPayload', payload)
 					this.$util.pageTo({

+ 6 - 2
hdApp/src/admin/order/refundDetail.vue

@@ -231,9 +231,12 @@ export default {
 				&& Number(this.info.hasReturn || 0) === 0
 				&& Number(this.info.returnBalance || 0) === 0
 		},
-		/** 已通过且返充余额时可查看凭证 */
+		/** 已通过且返充余额/挂账原路时可查看凭证海报 */
 		canShowPoster() {
-			return Number(this.info.status) === 1 && Number(this.info.returnBalance || 0) === 1
+			const info = this.info || {}
+			if (Number(info.status) !== 1) return false
+			if (Number(info.returnBalance || 0) === 1) return true
+			return Number(info.hasReturn || 0) === 1 && Number(info.payWay) === 3
 		},
 		/** 待审核:商城顾客申请,超管可在本页通过/驳回 */
 		canAudit() {
@@ -414,6 +417,7 @@ export default {
 				couldReturn: info.couldReturn != null ? info.couldReturn : 1,
 				returnBalance: info.returnBalance || 0,
 				needFundAction: this.canFundAction ? 1 : 0,
+				sameDay: info.sameDay != null ? info.sameDay : 1,
 				mode: mode || ''
 			}
 		},