index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 xueke_list" :key="item.id" @click="handleSelectXueke(item)"
  9. :class="['grade-item',{active: item.id == activeXueke}]">{{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 nianji_list" :key="item.id" @click="handleSelectGrade(item)"
  14. :class="['grade-item', {active: item.id == activeNianji}]">{{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. xueke_list,
  29. } from "@/utils/constant.js";
  30. import {
  31. onLoad
  32. } from "@dcloudio/uni-app";
  33. import {useXuekeNianji} from "@/utils/cacheManager.js"
  34. const { updateXueke, getXueke} = useXuekeNianji();
  35. function useSelectGrade() {
  36. const data = reactive({
  37. activeNianji: null, // 当前年级
  38. activeXueke: null, // 当前学期
  39. });
  40. onLoad(() => {
  41. const {
  42. nianji,
  43. cardId
  44. } = getXueke();
  45. data.activeNianji = nianji;
  46. data.activeXueke = cardId;
  47. });
  48. // 选择 年级+学期
  49. function handleConfirm() {
  50. if (!data.activeNianji) {
  51. uni.showToast({
  52. title: "请选择年级",
  53. duration: 2000,
  54. });
  55. return;
  56. }
  57. if (!data.activeXueke) {
  58. uni.showToast({
  59. title: "请选择学科",
  60. duration: 2000,
  61. });
  62. return;
  63. }
  64. goDAOToStudy();
  65. }
  66. // 跳转 岛 学习
  67. function goDAOToStudy() {
  68. updateXueke(data.activeNianji, data.activeXueke)
  69. // 数序
  70. uni.redirectTo({
  71. url: `/pages/study/index?flag=selectGrades`
  72. })
  73. }
  74. return {
  75. ...toRefs(data),
  76. // 方法
  77. handleConfirm, // 选择年级+学科
  78. };
  79. }
  80. const {
  81. activeNianji,
  82. activeXueke,
  83. handleConfirm
  84. } = useSelectGrade()
  85. function handleSelectGrade(item) {
  86. activeNianji.value = item.id;
  87. }
  88. function handleSelectXueke(item) {
  89. activeXueke.value = item.id;
  90. }
  91. </script>