selectRefundChannel.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <view class="container">
  3. <view class="content">
  4. <userInfo :currentUser="memberInfo" />
  5. <view class="white-panel no-padding">
  6. <view class="amount text-center">
  7. <view class="text-color__danger amount-info__value font-bold">¥{{ amountFormatter(refundDetail.CanRefundSum) / 100 || 0 }}</view>
  8. <view class="amount-info__text">可退金额</view>
  9. </view>
  10. <!-- 分割线 -->
  11. <cardDiv colorLine="#eee" colorGap="#f0f1f6"></cardDiv>
  12. <view class="panel-main">
  13. <!-- 卡列表 -->
  14. <view class="card-list">
  15. <view
  16. class="card-list__item display-flex__ac displayFlexBetween"
  17. v-for="(cardItem, index) in refundDetail.CardInfoList"
  18. :key="index"
  19. >
  20. <view>就诊卡:{{ cardFormatter(cardItem.CardNo) }}</view>
  21. <view>余额:{{ amountFormatter(cardItem.RefundMoney) / 100 || 0 }}元</view>
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. <!-- 原路退 -->
  27. <view class="white-panel" @click="toOrigRefund">
  28. <view class="header display-flex__ac">
  29. <text class="refund-type__mainTit font-bold text-color__dominant">原路退(自助退)</text>
  30. <text class="refund-type__subTit text-color__secondary">可退金额:</text>
  31. <text class="refund-type__amount text-color__danger">¥{{ amountFormatter(refundDetail.OnlineReturnMoneySum) / 100 || 0 }}</text>
  32. </view>
  33. <view class="desc text-color__info">
  34. 支持12个月内您使用微信支付和3个月内您使用的支付宝支付或充值的订单原路退回,即退回原充值渠道。
  35. </view>
  36. <view class="btn_arrow"></view>
  37. </view>
  38. <!-- 转账退 -->
  39. <view class="white-panel" @click="toRefundForm">
  40. <view class="header display-flex__ac">
  41. <text class="refund-type__mainTit font-bold text-color__dominant">转账退</text>
  42. <text class="refund-type__subTit text-color__secondary">可退金额:</text>
  43. <text class="refund-type__amount text-color__danger">¥{{ amountFormatter(refundDetail.YhkReturnMoneySum) / 100 || 0 }}</text>
  44. </view>
  45. <view class="desc text-color__info text-justify">
  46. 无法原路退回的门诊预缴金,支持银行卡转账退费。
  47. </view>
  48. <view class="btn_arrow"></view>
  49. </view>
  50. </view>
  51. </view>
  52. </template>
  53. <script setup lang="ts">
  54. import { ref, reactive } from "vue";
  55. import { onLoad, onShow } from "@dcloudio/uni-app";
  56. import common from "@/utils/common";
  57. import { queryCanOriginalReturnedMoney } from "@/pagesPatient/service/refund/index";
  58. // Components
  59. import userInfo from "../components/userInfo/userInfo.vue";
  60. import cardDiv from "../components/cardDiv/cardDiv.vue";
  61. const app = getApp();
  62. // Data
  63. const memberInfo = ref<any>({});
  64. const refundDetail = ref<any>({});
  65. // Helper functions (formerly WXS)
  66. const amountFormatter = (val: any) => {
  67. if (!val) return 0;
  68. return Number(val);
  69. };
  70. const cardFormatter = (val: string) => {
  71. if (!val || val.length !== 36) { // 非现金卡
  72. return val;
  73. }
  74. // 现金卡
  75. return val.substring(5, 13);
  76. };
  77. // Lifecycle
  78. onLoad((options) => {
  79. initPageParam(options);
  80. });
  81. onShow(() => {
  82. QueryCanOriginalReturnedMoney();
  83. });
  84. // Methods
  85. const initPageParam = (options: any) => {
  86. const { queryBean } = app.globalData;
  87. if (queryBean) {
  88. memberInfo.value = queryBean;
  89. app.globalData.queryBean = null;
  90. }
  91. };
  92. const QueryCanOriginalReturnedMoney = async () => {
  93. const reqData = {
  94. BaseMemberEncryptionStore: memberInfo.value.baseMemberEncryptionStore,
  95. IsQueryHis: 1, // 就诊卡列表是否实时查HIS(0——本地(旧版),1——查HIS(新版))
  96. };
  97. const { resData, resp: listResp } = await queryCanOriginalReturnedMoney(reqData);
  98. if (resData.RespCode != "10000") {
  99. return;
  100. }
  101. const cardInfoList = (listResp && listResp[0]?.CardInfoList) || [];
  102. let canRefundSum = 0; // 可退总金额(单位:分)
  103. let onlineReturnMoneySum = 0;
  104. if (cardInfoList) {
  105. cardInfoList.forEach((card: any) => {
  106. canRefundSum += Number(card.Balance || 0);
  107. onlineReturnMoneySum += Number(card.RefundableBalance || 0);
  108. });
  109. }
  110. refundDetail.value = {
  111. CanRefundSum: canRefundSum,
  112. OnlineReturnMoneySum: onlineReturnMoneySum,
  113. YhkReturnMoneySum: canRefundSum - onlineReturnMoneySum,
  114. PatientId: (cardInfoList && cardInfoList[0]?.HisMemberId) || null,
  115. CardInfoList: cardInfoList.map((cardInfo: any) => {
  116. return {
  117. CardNo: cardInfo.CardNo,
  118. CardType: cardInfo.CardType,
  119. Mobile: cardInfo.Mobile,
  120. RefundMoney: cardInfo.Balance - cardInfo.RefundableBalance,
  121. PatientId: cardInfo.HisMemberId
  122. };
  123. }).filter((cardInfo: any) => cardInfo.RefundMoney > 0)
  124. };
  125. };
  126. const toOrigRefund = () => {
  127. common.goToUrl(`/pagesPatient/st1/business/outpatient/outpatientRefund/outpatientRefund`);
  128. };
  129. const toRefundForm = () => {
  130. app.globalData.queryBean = {
  131. memberInfo: memberInfo.value,
  132. refundDetail: refundDetail.value,
  133. };
  134. common.goToUrl(`/pagesPatient/st1/business/outpatient/outpatientRefundNew/refundForm/refundForm`);
  135. };
  136. </script>
  137. <style scoped>
  138. @import "../static/css/refund.wxss";
  139. .content {
  140. padding: 30upx 30upx 200upx;
  141. }
  142. .amount {
  143. padding: 50upx 50upx 20upx;
  144. }
  145. .amount .amount-info__value {
  146. font-size: 48upx;
  147. }
  148. .amount .amount-info__text {
  149. font-size: 32upx;
  150. margin-top: 40upx;
  151. }
  152. .panel-main {
  153. padding: 0 30upx 30upx;
  154. }
  155. /* 卡列表 */
  156. .card-list{}
  157. .card-list .card-list__item {
  158. width: 100%;
  159. height: 90upx;
  160. border-radius: 14upx;
  161. background-color: #F7F7F9;
  162. padding: 20upx;
  163. }
  164. .card-list .card-list__item + .card-list__item {
  165. margin-top: 30upx;
  166. }
  167. /* 退款渠道选择 */
  168. .header {
  169. height: 60upx;
  170. padding-right: 40upx;
  171. }
  172. .header .refund-type__mainTit {
  173. font-size: 34upx;
  174. line-height: 40upx;
  175. }
  176. .header .refund-type__subTit {
  177. font-size: 28upx;
  178. margin-left: 20upx;
  179. }
  180. .header .refund-type__amount {
  181. font-size: 28upx;
  182. }
  183. .desc {
  184. font-size: 24upx;
  185. line-height: 40upx;
  186. padding-right: 40upx;
  187. }
  188. </style>