textbooks-practice.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <ie-page ref="iePageRef">
  3. <ie-navbar :title="pageTitle" />
  4. <view class="px-30 py-16 bg-back">
  5. <view class="flex items-center justify-end gap-x-4" @click="handleViewHistory">
  6. <uv-icon name="clock" size="16" color="#31A0FC"></uv-icon>
  7. <text class="text-28 text-primary">查看记录</text>
  8. <uv-icon name="arrow-right" size="16" color="#31A0FC"></uv-icon>
  9. </view>
  10. </view>
  11. <view class="px-40">
  12. <knowledgeTree :tree-data="treeData" @start-practice="handleStartPractice" />
  13. </view>
  14. </ie-page>
  15. </template>
  16. <script lang="ts" setup>
  17. import IePage from '@/components/ie-page/ie-page.vue';
  18. import { useTransferPage } from '@/hooks/useTransferPage';
  19. import { getTextbooksKnowledgeList } from '@/api/modules/study';
  20. import knowledgeTree from '@/pagesStudy/components/knowledge-tree.vue';
  21. import * as Study from '@/types/study';
  22. import { EnumPaperType } from '@/common/enum';
  23. import { useUserStore } from '@/store/userStore';
  24. const { prevData, transferTo } = useTransferPage();
  25. const userStore = useUserStore();
  26. const iePageRef = ref<InstanceType<typeof IePage>>();
  27. const pageTitle = computed(() => {
  28. return '教材同步练习';
  29. });
  30. const treeData = ref<Study.KnowledgeNode[]>([]);
  31. const handleViewHistory = () => {
  32. transferTo('/pagesStudy/pages/textbooks-practice-history/textbooks-practice-history', {
  33. data: {}
  34. });
  35. }
  36. const loadKnowledgeList = async () => {
  37. try {
  38. uni.$ie.showLoading();
  39. const { data } = await getTextbooksKnowledgeList();
  40. treeData.value = data as Study.KnowledgeNode[];
  41. } catch (error) {
  42. console.log(error);
  43. } finally {
  44. uni.$ie.hideLoading();
  45. }
  46. }
  47. const handleStartPractice = async (node: Study.KnowledgeNode) => {
  48. const isVip = await userStore.checkVip();
  49. if (isVip) {
  50. transferTo('/pagesStudy/pages/exam-start/exam-start', {
  51. data: {
  52. name: '教材同步练习-' + node.name,
  53. paperType: EnumPaperType.COURSE,
  54. practiceInfo: {
  55. name: node.name,
  56. relateId: node.id
  57. },
  58. }
  59. });
  60. } else {
  61. iePageRef.value?.showVipPopup();
  62. }
  63. }
  64. onShow(() => {
  65. loadKnowledgeList();
  66. });
  67. </script>
  68. <style></style>