index.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { defineComponent, onMounted, reactive, ref } from 'vue'
  2. import { Image, Sticky, Tab, Tabs } from 'vant'
  3. import styles from './index.module.less'
  4. import { useRect } from '@vant/use'
  5. import Apply from './component/apply'
  6. import Payment from './component/payment'
  7. import Order from './component/order'
  8. import { useRoute } from 'vue-router'
  9. import request from '../request-music'
  10. // import banner from './images/banner.png'
  11. export default defineComponent({
  12. name: 'pre-apply',
  13. setup() {
  14. const route = useRoute()
  15. const bannerRef = ref()
  16. const state = reactive({
  17. tabValue: 'apply',
  18. heightV: 235,
  19. registerInfo: {} as any,
  20. purchase: false // 购买状态
  21. })
  22. const onNext = (name: string) => {
  23. state.tabValue = name
  24. }
  25. const getRegisterStatus = async () => {
  26. try {
  27. const { data } = await request.get(
  28. '/api-student/orchestraRegister/registerStatus/' + route.query.id
  29. )
  30. state.registerInfo = data || {}
  31. if (state.registerInfo.register) {
  32. state.tabValue = 'payment'
  33. }
  34. if (state.registerInfo.purchase) {
  35. state.tabValue = 'order'
  36. state.purchase = state.registerInfo.purchase
  37. }
  38. } catch {
  39. //
  40. }
  41. }
  42. // 先请求接口
  43. getRegisterStatus()
  44. onMounted(() => {
  45. const { height } = useRect(bannerRef.value)
  46. state.heightV = height
  47. })
  48. return () => (
  49. <div class={styles.preApply}>
  50. <div class={styles.banner} ref={bannerRef}>
  51. <span>
  52. {state.registerInfo.orchestraName} <br />
  53. 乐团报名
  54. </span>
  55. </div>
  56. <Sticky position="top">
  57. <Tabs lineWidth={20} lineHeight={4} v-model:active={state.tabValue}>
  58. <Tab title="报名信息" name="apply" disabled={state.purchase}></Tab>
  59. <Tab title="缴费信息" name="payment" disabled={state.purchase}></Tab>
  60. <Tab title="我的订单" name="order"></Tab>
  61. </Tabs>
  62. </Sticky>
  63. {state.tabValue === 'apply' && (
  64. <Apply onNext={onNext} schoolSystem={state.registerInfo.schoolSystem} />
  65. )}
  66. {state.tabValue === 'payment' && <Payment onNext={onNext} />}
  67. {state.tabValue === 'order' && <Order onNext={onNext} />}
  68. </div>
  69. )
  70. }
  71. })