recharge_detail.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div class="box">
  3. <div class="null-page" v-show="yes"></div>
  4. <el-card class="box-card recharge-detail-wrap">
  5. <div slot="header" class="clearfix">
  6. <el-breadcrumb separator="/">
  7. <el-breadcrumb-item :to="{ path: '/member/account' }">账户余额</el-breadcrumb-item>
  8. <el-breadcrumb-item :to="{ path: '/member/recharge_list' }">充值套餐列表</el-breadcrumb-item>
  9. <el-breadcrumb-item>充值套餐详情</el-breadcrumb-item>
  10. </el-breadcrumb>
  11. </div>
  12. <div class="recharge-detail" v-loading="loading">
  13. <el-image :src="$img(rechargeInfo.cover_img)" fit="contain"></el-image>
  14. <p class="recharge-money"><span class="buy-price">¥{{ rechargeInfo.buy_price }}</span><span class="face-price">¥{{ rechargeInfo.face_value }}</span></p>
  15. <p class="recharge-name">{{ rechargeInfo.recharge_name }}</p>
  16. <p class="recharge-point">额外赠送:{{ rechargeInfo.point }}积分</p>
  17. <p class="recharge-growth">额外赠送:{{ rechargeInfo.growth }}成长值</p>
  18. <div class="recharge-btn">
  19. <el-button @click="recharge">立即充值</el-button>
  20. </div>
  21. </div>
  22. </el-card>
  23. </div>
  24. </template>
  25. <script>
  26. import { rechargeDetail, recharge } from "@/api/member/account"
  27. import { mapGetters } from 'vuex';
  28. export default {
  29. name: "recharge-detail",
  30. layout: "member",
  31. components: {},
  32. data: () => {
  33. return {
  34. id: '',
  35. rechargeInfo: {},
  36. loading: true,
  37. isSub: false,
  38. yes: true
  39. }
  40. },
  41. created() {
  42. this.id = this.$route.query.id;
  43. this.getRechargeInfo();
  44. },
  45. computed: {
  46. ...mapGetters(['defaultGoodsImage'])
  47. },
  48. mounted() {
  49. let self = this;
  50. setTimeout(function() {
  51. self.yes = false
  52. }, 300)
  53. },
  54. methods: {
  55. //获取详情
  56. getRechargeInfo() {
  57. rechargeDetail({
  58. recharge_id: this.id
  59. }).then(res => {
  60. if (res.code == 0 && res.data) {
  61. this.rechargeInfo = res.data;
  62. if(res.data.cover_img==''){
  63. this.rechargeInfo.cover_img = this.defaultGoodsImage;
  64. }
  65. } else {
  66. this.$message.warning(res.message)
  67. }
  68. this.loading = false
  69. }).catch(err => {
  70. this.loading = false
  71. })
  72. },
  73. recharge() {
  74. if (this.isSub) return
  75. this.isSub = true
  76. recharge({
  77. recharge_id: this.id
  78. }).then(res => {
  79. if (res.data && res.code == 0) {
  80. this.$router.push({path: '/pay', query: {code: res.data}});
  81. } else {
  82. this.$message.warning(res.message)
  83. }
  84. this.isSub = false
  85. }).catch(err => {
  86. this.isSub = false
  87. this.$message.error(err.message)
  88. })
  89. }
  90. }
  91. }
  92. </script>
  93. <style lang="scss" scoped>
  94. .box {
  95. width: 100%;
  96. position: relative;
  97. }
  98. .null-page {
  99. width: 100%;
  100. height: 730px;
  101. background-color: #FFFFFF;
  102. position: absolute;
  103. top: 0;
  104. left: 0;
  105. z-index: 9;
  106. }
  107. .el-card.is-always-shadow,
  108. .el-card.is-hover-shadow:focus,
  109. .el-card.is-hover-shadow:hover {
  110. box-shadow: unset;
  111. }
  112. .el-card {
  113. border: 0;
  114. }
  115. .recharge-detail-wrap {
  116. }
  117. .recharge-detail {
  118. width: 300px;
  119. .recharge-money {
  120. .buy-price {
  121. font-size: 25px;
  122. color: $base-color;
  123. font-weight: 600;
  124. margin-right: 10px;
  125. }
  126. .face-price {
  127. text-decoration: line-through;
  128. color: #898989;
  129. }
  130. }
  131. .recharge-name {
  132. margin: 10px 0;
  133. font-size: 16px;
  134. }
  135. .recharge-btn {
  136. margin-top: 30px;
  137. text-align: center;
  138. .el-button {
  139. width: 300px;
  140. background-color: $base-color;
  141. color: #FFFFFF;
  142. }
  143. }
  144. }
  145. </style>