steps.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import { Grid, GridItem, Icon } from 'vant'
  2. import { defineComponent } from 'vue'
  3. import { createState } from './createState'
  4. import styles from './steps.module.less'
  5. export const getAssetsHomeFile = (fileName: string) => {
  6. const path = `../images/${fileName}`
  7. const modules = import.meta.globEager('../images/*')
  8. return modules[path].default
  9. }
  10. export default defineComponent({
  11. name: 'steps',
  12. render() {
  13. return (
  14. <Grid class={styles.steps} border={false} columnNum="4">
  15. <GridItem
  16. v-slots={{
  17. default: () => (
  18. <>
  19. <Icon
  20. name={getAssetsHomeFile('icon_course_active.png')}
  21. size={24}
  22. />
  23. <span
  24. class={[
  25. styles.gridName,
  26. createState.active >= 1 ? styles.active : null
  27. ]}
  28. >
  29. 课程信息
  30. </span>
  31. </>
  32. )
  33. }}
  34. />
  35. <GridItem
  36. v-slots={{
  37. default: () => (
  38. <>
  39. <Icon
  40. name={
  41. createState.active >= 2
  42. ? getAssetsHomeFile('icon_plan_active.png')
  43. : getAssetsHomeFile('icon_plan_default.png')
  44. }
  45. size={24}
  46. />
  47. <span
  48. class={[
  49. styles.gridName,
  50. createState.active >= 2 ? styles.active : null
  51. ]}
  52. >
  53. 教学计划
  54. </span>
  55. </>
  56. )
  57. }}
  58. />
  59. <GridItem
  60. v-slots={{
  61. default: () => (
  62. <>
  63. <Icon
  64. name={
  65. createState.active >= 3
  66. ? getAssetsHomeFile('icon_arrange_active.png')
  67. : getAssetsHomeFile('icon_arrange_default.png')
  68. }
  69. size={24}
  70. />
  71. <span
  72. class={[
  73. styles.gridName,
  74. createState.active >= 3 ? styles.active : null
  75. ]}
  76. >
  77. 课程安排
  78. </span>
  79. </>
  80. )
  81. }}
  82. />
  83. <GridItem
  84. v-slots={{
  85. default: () => (
  86. <>
  87. <Icon
  88. name={
  89. createState.active >= 4
  90. ? getAssetsHomeFile('icon_start_active.png')
  91. : getAssetsHomeFile('icon_start_default.png')
  92. }
  93. size={24}
  94. />
  95. <span
  96. class={[
  97. styles.gridName,
  98. createState.active >= 4 ? styles.active : null
  99. ]}
  100. >
  101. 开课条件
  102. </span>
  103. </>
  104. )
  105. }}
  106. />
  107. </Grid>
  108. )
  109. }
  110. })