index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <view>
  3. <view>请选择年级和学期</view>
  4. <text>我们会根据您选择,为您匹配对应的学习内容</text>
  5. <view class="grade-label">
  6. 年级
  7. </view>
  8. <view class="grade-container">
  9. <view v-for="item in data.nianji_list" :key="item.id" @click="handleSelectGrade(item)" :class="['grade-item', {active: item.id === data.activeGrade}]">{{item.label}}</view>
  10. </view>
  11. <view class="term-label">
  12. 学期
  13. </view>
  14. <view class="term-container">
  15. <view v-for="item in data.xueqi_list" :key="item.id" @click="handleSelectTerm(item)" :class="['term-item',{active: item.id === data.activeTerm}]">{{item.label}}</view>
  16. </view>
  17. <button @click="handleSelect">确定</button>
  18. </view>
  19. </template>
  20. <script setup>
  21. import {
  22. ref,
  23. reactive
  24. } from "vue"
  25. const data = reactive({
  26. nianji_list: [{
  27. label: '一年级',
  28. id: 1
  29. },
  30. {
  31. label: '二年级',
  32. id: 2
  33. },
  34. {
  35. label: '三年级',
  36. id: 3
  37. },
  38. {
  39. label: '四年级',
  40. id: 4
  41. },
  42. {
  43. label: '五年级',
  44. id: 5
  45. },
  46. {
  47. label: '六年级',
  48. id: 6
  49. },
  50. ],
  51. xueqi_list: [{
  52. label: '上册',
  53. id: 1
  54. },
  55. {
  56. label: '下册',
  57. id: 2
  58. }
  59. ],
  60. activeGrade: null,
  61. activeTerm: null
  62. })
  63. function handleSelectGrade(item) {
  64. data.activeGrade = item.id;
  65. }
  66. function handleSelectTerm(item) {
  67. data.activeTerm= item.id;
  68. }
  69. function handleSelect() {
  70. if (!data.activeGrade) {
  71. uni.showToast({
  72. title: '请选择年级',
  73. duration: 2000
  74. })
  75. return;
  76. }
  77. if (!data.activeTerm) {
  78. uni.showToast({
  79. title: '请选择学期',
  80. duration: 2000
  81. })
  82. return;
  83. }
  84. const text1 = data.nianji_list.find(item => item.id == data.activeGrade).label;
  85. const text2 = data.xueqi_list.find(item => item.id == data.activeTerm).label;
  86. const options = {
  87. grade: data.activeGrade,
  88. term: data.activeTerm,
  89. }
  90. uni.navigateTo({
  91. url: `/pages/study/index?gradeId=${options.grade}&termId=${options.term}&text=${text1}${text2}`
  92. })
  93. }
  94. </script>
  95. <style lang="scss">
  96. .active {
  97. color: red
  98. }
  99. .grade-container {
  100. display: flex;
  101. flex-wrap: wrap;
  102. }
  103. .grade-item {
  104. flex:1;
  105. min-width: 50%;
  106. text-align: center;
  107. padding: 10px;
  108. }
  109. .grade-label {
  110. text-align: center;
  111. padding: 10px;
  112. }
  113. .term-container {
  114. display: flex;
  115. flex-wrap: wrap;
  116. }
  117. .term-item {
  118. flex:1;
  119. min-width: 50%;
  120. text-align: center;
  121. padding: 10px;
  122. }
  123. .term-label {
  124. text-align: center;
  125. padding: 10px;
  126. }
  127. </style>