index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div class="p-pay-result">
  3. <div
  4. v-if="$route.params.status === 'success' && info"
  5. class="pay-success ptc-inner"
  6. >
  7. <div class="alert">
  8. <i class="alert-icon icon-success"></i>
  9. <p class="alert-message">
  10. Your membership service is successfully purchased
  11. </p>
  12. </div>
  13. <div class="info">
  14. <p class="info-item">
  15. <span class="info-label">Version: </span>
  16. <span class="info-value">{{ info.product_name }}</span>
  17. </p>
  18. <p class="info-item">
  19. <span class="info-label">Duration: </span>
  20. <span class="info-value"
  21. >1 year ({{ info.start_time }}-{{ info.end_time }})</span
  22. >
  23. </p>
  24. <p class="info-item">
  25. <span class="info-label">Phone brand: </span>
  26. <span class="info-value">{{ info.phone_info.split(' ')[0] }}</span>
  27. </p>
  28. <p class="info-item">
  29. <span class="info-label">Phone model: </span>
  30. <span class="info-value">{{ phoneModel }}</span>
  31. </p>
  32. </div>
  33. <div class="button-group">
  34. <button
  35. v-if="info.subscribe_type != 3 && !info.renewal"
  36. class="ptc-button"
  37. @click="$router.push(`/imei/bind?id=${$route.query.id}`)"
  38. >
  39. BIND IMEI
  40. </button>
  41. <button
  42. class="ptc-button ptc-button--stroke"
  43. @click="$router.push(`/order/${$route.query.id}`)"
  44. >
  45. CHECK ORDER
  46. </button>
  47. <button class="ptc-button ptc-button--stroke" @click="toHomePage">
  48. HOMEPAGE
  49. </button>
  50. </div>
  51. </div>
  52. <div v-else class="pay-fail ptc-inner">
  53. <div class="alert">
  54. <i class="alert-icon icon-warn"></i>
  55. <p class="alert-message">Your membership service purchase failed</p>
  56. </div>
  57. <!-- <p class="reason">Insufficient bank card balance</p> -->
  58. <div class="button-group">
  59. <button class="ptc-button">CUSTOMER SERVICE</button>
  60. <button class="ptc-button ptc-button--stroke" @click="toHomePage">
  61. HOMEPAGE
  62. </button>
  63. </div>
  64. </div>
  65. </div>
  66. </template>
  67. <script>
  68. import { defineComponent } from 'vue'
  69. import { state, getCurrentOrder } from '@/store'
  70. export default defineComponent({
  71. name: 'PayResult',
  72. async beforeRouteEnter(to) {
  73. if (to.params.status === 'success') {
  74. await getCurrentOrder(to.query.id)
  75. }
  76. },
  77. computed: {
  78. info() {
  79. return state.currentOrder
  80. },
  81. phoneModel() {
  82. return (this.info.phone_info || '').split(' ').slice(1).join(' ')
  83. },
  84. },
  85. created() {
  86. state.bgWhite = true
  87. },
  88. methods: {
  89. toHomePage() {
  90. location.href = '/'
  91. },
  92. },
  93. })
  94. </script>
  95. <style lang="scss">
  96. .p-pay-result {
  97. padding-left: 48px;
  98. padding-right: 48px;
  99. .icon-success {
  100. background-image: url(@img/success.png);
  101. }
  102. .icon-warn {
  103. background-image: url(@img/warn.png);
  104. }
  105. .alert {
  106. margin: 64px 0;
  107. &-icon {
  108. display: block;
  109. margin: auto;
  110. width: 96px;
  111. height: 96px;
  112. background-size: 100% 100%;
  113. }
  114. &-message {
  115. margin-top: 32px;
  116. text-align: center;
  117. line-height: 56px;
  118. font-size: 40px;
  119. font-weight: bold;
  120. color: #333;
  121. }
  122. }
  123. .info {
  124. margin: 64px 0;
  125. &-item {
  126. display: flex;
  127. line-height: 64px;
  128. font-size: 32px;
  129. color: #333;
  130. }
  131. &-label {
  132. margin-right: 12px;
  133. color: #999;
  134. }
  135. }
  136. .reason {
  137. margin: 64px 0;
  138. text-align: center;
  139. line-height: 64px;
  140. font-size: 32px;
  141. color: #333;
  142. }
  143. .ptc-button--stroke {
  144. margin: 36px 0 64px;
  145. }
  146. }
  147. </style>