index.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import ColHeader from '@/components/col-header'
  2. import request from '@/helpers/request'
  3. import { orderStatus } from '@/views/order-detail/orderStatus'
  4. import { Button } from 'vant'
  5. import { defineComponent } from 'vue'
  6. import styles from './index.module.less'
  7. export const getAssetsHomeFile = (fileName: string) => {
  8. const path = `../images/${fileName}`
  9. const modules = import.meta.globEager('../images/*')
  10. return modules[path].default
  11. }
  12. export default defineComponent({
  13. name: 'accountRechargeTimer',
  14. data() {
  15. const query = this.$route.query
  16. return {
  17. remainTime: query.remainTime || 0,
  18. list: [],
  19. selectItem: {} as any
  20. }
  21. },
  22. async mounted() {
  23. try {
  24. const res = await request.post('/api-teacher/pianoRoomSettings/list', {
  25. data: {}
  26. })
  27. this.list = res.data || []
  28. if (this.list.length > 0) {
  29. const item: any = this.list[0]
  30. this.selectItem = item
  31. }
  32. console.log(this.selectItem)
  33. } catch {}
  34. },
  35. methods: {
  36. async onSubmit() {
  37. const selectItem = this.selectItem
  38. orderStatus.orderObject.orderType = 'PINAO_ROOM'
  39. orderStatus.orderObject.orderName = '琴房时长充值'
  40. orderStatus.orderObject.orderDesc = '琴房时长充值'
  41. orderStatus.orderObject.actualPrice = selectItem.salePrice
  42. orderStatus.orderObject.orderNo = ''
  43. orderStatus.orderObject.orderList = [
  44. {
  45. orderType: 'PINAO_ROOM',
  46. goodsName: '琴房时长充值',
  47. ...selectItem
  48. }
  49. ]
  50. this.$router.push({
  51. path: '/orderDetail',
  52. query: {
  53. orderType: 'PINAO_ROOM',
  54. pinaoId: selectItem.id
  55. }
  56. })
  57. }
  58. },
  59. render() {
  60. return (
  61. <div style={{ overflow: 'hidden' }}>
  62. <ColHeader />
  63. <div class={styles.lastMin}>
  64. <img src={getAssetsHomeFile('icon_music_account.png')} />
  65. <p>
  66. 琴房剩余时长<span>{this.remainTime}</span>分钟
  67. </p>
  68. </div>
  69. <div class={styles.memberItem}>
  70. <div class={styles.rTitle}>
  71. <span>选择时长</span>
  72. </div>
  73. <div class={styles['system-list']}>
  74. {this.list.map((item: any) => (
  75. <div
  76. class={[
  77. styles['system-item'],
  78. item.id === this.selectItem.id && styles.active
  79. ]}
  80. onClick={() => {
  81. this.selectItem = item
  82. }}
  83. >
  84. <p class={styles.title}>{item.times}分钟琴房时长</p>
  85. <p class={styles.tips}>{item.description}</p>
  86. <p class={styles.price}>
  87. <span>¥</span>
  88. {item.salePrice}
  89. </p>
  90. <del class={styles.originalPrice}>¥{item.originalPrice}</del>
  91. </div>
  92. ))}
  93. </div>
  94. </div>
  95. <div class={styles.reminder}>
  96. <div class={styles.h2}>
  97. <img src={getAssetsHomeFile('icon_tips.png')} />
  98. <span>温馨提醒</span>
  99. </div>
  100. <p>
  101. 1、云酷琴房时长按课程人数扣减(含老师),以45分钟1对1课程师生2人为例,课程结束后将消耗长:2人*45分钟=90分钟;
  102. </p>
  103. <p>
  104. 2、每节线上课平台赠送10分钟免费时长,分别为课前5分钟及课后5分钟,赠送时长不计算费用;
  105. </p>
  106. <p>
  107. 3、课程消耗时长按排课人数计算,无论实际到课人数是否为排课人数,都会按照排课人数扣费;
  108. 4、课程结束后费用立即结算;
  109. </p>
  110. <p>5、琴房时长不足时,您将无法排课,请确保琴房剩 余时长充足;</p>
  111. <p>6、琴房时长一经购买不予退费。</p>
  112. </div>
  113. <div class={styles.btnGroup}>
  114. <div class={styles.priceSection}>
  115. 支付金额:
  116. <div class={styles.price}>
  117. <span class={styles.priceUnit}>¥</span>
  118. <span class={styles.priceNum}>{this.selectItem.salePrice}</span>
  119. </div>
  120. </div>
  121. <Button
  122. color="linear-gradient(360deg, #FF0909 0%, #FF4D4D 69%, #FF7B7B 100%)"
  123. round
  124. class={styles.btn}
  125. onClick={this.onSubmit}
  126. >
  127. 立即支付
  128. </Button>
  129. </div>
  130. </div>
  131. )
  132. }
  133. })