index.vue 2.8 KB

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