index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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((options) => {
  41. const {
  42. nianji,
  43. xueke
  44. } = getXueke();
  45. data.activeNianji = nianji;
  46. data.activeXueke = xueke;
  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. const options = {
  65. nianji: data.activeNianji,
  66. xueke: data.activeXueke,
  67. };
  68. goDAOToStudy(options);
  69. }
  70. // 跳转 岛 学习
  71. function goDAOToStudy({
  72. nianji,
  73. xueke,
  74. }) {
  75. updateXueke(data.activeNianji, data.activeXueke)
  76. // 数序
  77. data.activeXueke == 1 && uni.redirectTo({
  78. url: `/pages/study/index?xueke=${data.activeXueke}&nianji=${data.activeNianji}&flag=selectGrades`
  79. })
  80. // 英语
  81. data.activeXueke == 2 && uni.redirectTo({
  82. url: `/pages/study/index?xueke=${data.activeXueke}&nianji=${data.activeNianji}&flag=selectGrades`
  83. })
  84. }
  85. return {
  86. ...toRefs(data),
  87. // 方法
  88. handleConfirm, // 选择年级+学科
  89. };
  90. }
  91. const {
  92. activeNianji,
  93. activeXueke,
  94. handleConfirm
  95. } = useSelectGrade()
  96. function handleSelectGrade(item) {
  97. activeNianji.value = item.id;
  98. }
  99. function handleSelectXueke(item) {
  100. activeXueke.value = item.id;
  101. }
  102. </script>