textbooks-practice.vue 2.6 KB

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