index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <view class="grades-terms-page">
  3. <view class="grades-body">
  4. <view class="grades-change-title"></view>
  5. <text class="grades-title-desc">我们会根据您选择,为您匹配对应的学习内容</text>
  6. <view class="grades-terms-title terms-title-img"></view>
  7. <view class="grade-item-box">
  8. <view v-for="item in nianji_list" :key="item.id" @click="handleSelectGrade(item)"
  9. :class="['grade-item', {active: item.id == activeNianji}]">{{item.label}}</view>
  10. </view>
  11. <view class="grades-terms-title grades-title-img"></view>
  12. <view class="grade-item-box">
  13. <view v-for="item in xueqi_list" :key="item.id" @click="handleSelectTerm(item)"
  14. :class="['grade-item',{active: item.id == activeXueqi}]">{{item.label}}</view>
  15. </view>
  16. <view class="grade-line"></view>
  17. <button class="grade-confirm-btn" @click="handleConfirm"></button>
  18. </view>
  19. </view>
  20. </template>
  21. <script setup>
  22. import {
  23. reactive,
  24. toRefs
  25. } from "vue";
  26. import {
  27. nianji_list,
  28. xueqi_list
  29. } from "@/utils/constant.js";
  30. import {
  31. onLoad
  32. } from "@dcloudio/uni-app";
  33. function useSelectGrade() {
  34. const data = reactive({
  35. activeNianji: null, // 当前年级
  36. activeXueqi: null, // 当前学期
  37. });
  38. onLoad((options) => {
  39. const {
  40. nianji,
  41. xueqi
  42. } = options;
  43. data.activeNianji = nianji;
  44. data.activeXueqi = xueqi;
  45. });
  46. // 选择 年级+学期
  47. function handleConfirm() {
  48. if (!data.activeNianji) {
  49. uni.showToast({
  50. title: "请选择年级",
  51. duration: 2000,
  52. });
  53. return;
  54. }
  55. if (!data.activeXueqi) {
  56. uni.showToast({
  57. title: "请选择学期",
  58. duration: 2000,
  59. });
  60. return;
  61. }
  62. const options = {
  63. nianji: data.activeNianji,
  64. xueqi: data.activeXueqi,
  65. };
  66. goDAOToStudy(options);
  67. }
  68. // 跳转 岛 学习
  69. function goDAOToStudy({
  70. nianji,
  71. xueqi,
  72. text
  73. }) {
  74. uni.redirectTo({
  75. url: `/pages/study/index?xueqi=${data.activeXueqi}&nianji=${data.activeNianji}&flag=selectGrades`
  76. })
  77. }
  78. return {
  79. ...toRefs(data),
  80. // 方法
  81. handleConfirm, // 选择年级+学期
  82. };
  83. }
  84. const {
  85. activeNianji,
  86. activeXueqi,
  87. handleConfirm
  88. } = useSelectGrade()
  89. function handleSelectGrade(item) {
  90. activeNianji.value = item.id;
  91. }
  92. function handleSelectTerm(item) {
  93. activeXueqi.value = item.id;
  94. }
  95. </script>