refund-processing.wxml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <t-navbar title="{{pageTitle}}" left-arrow />
  2. <scroll-view class="page-container" scroll-y>
  3. <!-- 头部倒计时区域 -->
  4. <!-- 头部状态区域 -->
  5. <view class="header-section header-{{refundState}}">
  6. <!-- 处理中状态 -->
  7. <block wx:if="{{refundState === 'processing'}}">
  8. <view class="status-title">商家处理中</view>
  9. <view class="status-sub">已提交</view>
  10. <view class="countdown-container">
  11. <view class="time-block">{{hours}}</view>
  12. <view class="time-colon">:</view>
  13. <view class="time-block">{{minutes}}</view>
  14. <view class="time-colon">:</view>
  15. <view class="time-block">{{seconds}}</view>
  16. </view>
  17. </block>
  18. <!-- 已同意状态 -->
  19. <block wx:elif="{{refundState === 'approved'}}">
  20. <view class="approved-title">同意退款</view>
  21. <view class="approved-time">{{refundDetail.applyTime}}</view>
  22. <view class="approved-content" wx:if="{{negotiateTitle || negotiateContent}}">
  23. <view class="content-row" wx:if="{{negotiateTitle}}">{{negotiateTitle}}</view>
  24. <view class="content-row" wx:if="{{negotiateContent}}">{{negotiateContent}}</view>
  25. </view>
  26. </block>
  27. <!-- 撤销状态 -->
  28. <block wx:elif="{{refundState === 'revoked'}}">
  29. <view class="status-title" style="margin-bottom: 0;">撤销退款申请成功</view>
  30. </block>
  31. <!-- 拒绝状态 -->
  32. <block wx:elif="{{refundState === 'rejected'}}">
  33. <view class="approved-title">拒绝退款({{handleEndTime ? '请在' + days + '天' + hours + '小时' + minutes + '分钟内处理' : '超过处理时间'}})</view>
  34. <view class="approved-time">{{refundDetail.applyTime}}</view>
  35. <view class="approved-content" wx:if="{{negotiateTitle || negotiateContent}}">
  36. <view class="content-row" wx:if="{{negotiateTitle}}">{{negotiateTitle}}</view>
  37. <view class="content-row" wx:if="{{negotiateContent}}">{{negotiateContent}}</view>
  38. </view>
  39. </block>
  40. <!-- 退款成功状态 -->
  41. <block wx:elif="{{refundState === 'completed'}}">
  42. <view class="status-title completed-title">退款成功</view>
  43. <view class="refund-card">
  44. <view class="refund-card__left">
  45. <view class="refund-dest-name">{{refundDestination.type}}</view>
  46. <view class="refund-dest-account">{{refundDestination.account}}</view>
  47. </view>
  48. <view class="refund-card__right">
  49. <view class="refund-amount-text">¥{{refundDetail.amount}}</view>
  50. </view>
  51. </view>
  52. </block>
  53. </view>
  54. <!-- 详情区域 -->
  55. <view class="detail-section">
  56. <!-- 商品简要信息 -->
  57. <view class="goods-info">
  58. <image class="goods-img" src="{{goods.image}}" mode="aspectFill" wx:if="{{goods.image}}"></image>
  59. <view class="service-package-placeholder" wx:else>
  60. <text class="placeholder-icon">📦</text>
  61. </view>
  62. <view class="goods-desc">
  63. <view class="goods-title">{{goods.name}}</view>
  64. <view class="goods-meta">{{goods.meta1}}</view>
  65. </view>
  66. </view>
  67. <!-- 分割线 -->
  68. <view class="divider"></view>
  69. <!-- 退款详情列表 -->
  70. <view class="info-list">
  71. <view class="info-item">
  72. <text class="info-label">协商历史</text>
  73. <view class="info-value clickable-text" bindtap="onViewHistory">查看</view>
  74. </view>
  75. <view class="info-item">
  76. <text class="info-label">退款原因</text>
  77. <text class="info-value">{{refundDetail.reason}}</text>
  78. </view>
  79. <view class="info-item">
  80. <text class="info-label">申请金额</text>
  81. <text class="info-value">共{{refundDetail.amount}}元</text>
  82. </view>
  83. <!-- 根据状态不同展示不同的时间标签 -->
  84. <view class="info-item" wx:if="{{refundState === 'approved' || refundState === 'completed'}}">
  85. <text class="info-label">退款完结</text>
  86. <text class="info-value">{{refundDetail.updateTime}}</text>
  87. </view>
  88. <view class="info-item" wx:elif="{{refundState === 'revoked'}}">
  89. <text class="info-label">撤销时间</text>
  90. <text class="info-value">{{refundDetail.updateTime}}</text>
  91. </view>
  92. <view class="info-item">
  93. <text class="info-label">申请时间</text>
  94. <text class="info-value">{{refundDetail.applyTime}}</text>
  95. </view>
  96. <view class="info-item">
  97. <text class="info-label">退款编号</text>
  98. <view class="info-value-group">
  99. <text class="info-value">{{refundDetail.refundNo}}</text>
  100. <text class="copy-btn" bindtap="onCopyRefundNo">复制</text>
  101. </view>
  102. </view>
  103. </view>
  104. <!-- 客服按钮(暂时注释) -->
  105. <!-- <view class="service-action" bindtap="onCallService">
  106. <t-icon name="service" size="44rpx" color="#333" />
  107. <text class="service-text">客服</text>
  108. </view> -->
  109. </view>
  110. </scroll-view>
  111. <!-- 底部操作按钮 -->
  112. <view class="bottom-bar {{refundState === 'rejected' ? 'bottom-bar-rejected' : ''}}" wx:if="{{refundState === 'processing' || refundState === 'rejected' || refundState === 'revoked'}}">
  113. <!-- 处理中:单个撤销按钮 -->
  114. <button class="revoke-btn" bindtap="onRevoke" wx:if="{{refundState === 'processing'}}">撤销申请</button>
  115. <!-- 撤销状态:再次申请按钮 -->
  116. <button class="revoke-btn" bindtap="onReApply" wx:if="{{refundState === 'revoked'}}">再次申请</button>
  117. <!-- 拒绝退款且有截止时间:修改申请 & 撤销申请 组合按钮 -->
  118. <view class="dual-btn-group" wx:if="{{refundState === 'rejected' && handleEndTime}}">
  119. <button class="dual-btn left-btn" bindtap="onModify">修改申请</button>
  120. <view class="btn-divider"></view>
  121. <button class="dual-btn right-btn" bindtap="onRevoke">撤销申请</button>
  122. </view>
  123. <!-- 拒绝退款且超过处理时间:再次申请按钮 -->
  124. <button class="revoke-btn" bindtap="onReApply" wx:if="{{refundState === 'rejected' && !handleEndTime}}">再次申请</button>
  125. </view>
  126. <!-- 退款修改相关弹窗 -->
  127. <refund-reason-popup
  128. visible="{{refundReasonPopupVisible}}"
  129. initial-reason="{{refundDetail.reason}}"
  130. bind:close="onRefundReasonPopupClose"
  131. bind:next="onRefundReasonNext"
  132. />
  133. <refund-confirm-popup
  134. visible="{{refundConfirmPopupVisible}}"
  135. goods-name="{{goods.name}}"
  136. goods-image="{{goods.image}}"
  137. goods-price="{{goods.price}}"
  138. goods-meta1="{{goods.meta1}}"
  139. goods-meta2="{{goods.meta2}}"
  140. refund-reason="{{refundDetail.reason}}"
  141. refund-status="{{refundStatus || '仅退款'}}"
  142. refund-amount="{{refundDetail.amount}}"
  143. max-amount="{{refundMaxAmount}}"
  144. proof-images="{{refundProofImages || []}}"
  145. bind:close="onRefundConfirmClose"
  146. bind:changeStatus="onChangeRefundStatus"
  147. bind:editReason="onOpenRefundReasonAgain"
  148. bind:editProof="onOpenRefundProofEditor"
  149. bind:amountConfirm="onRefundAmountConfirm"
  150. bind:submit="onSubmitRefundApply"
  151. />
  152. <refund-proof-popup
  153. visible="{{refundProofPopupVisible}}"
  154. images="{{refundProofImages}}"
  155. desc="{{refundDesc}}"
  156. bind:close="onRefundProofPopupClose"
  157. bind:confirm="onRefundProofSubmit"
  158. />