OtherCourse.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div>
  3. <div class="gap10">
  4. <div class="line_vertical"></div>
  5. <div class="font_size20 bold">{{$t('common.qitakechengtuijian')}}</div>
  6. </div>
  7. <div v-for="item in list" :key="item.courseId" class="flex-between mt20 cursor-pointer"
  8. @click="goDetail(item)"
  9. >
  10. <img :src="item.coverImageUrl" alt="" style="width: 160px; height: 90px;" class="border_radius_8">
  11. <div class="ml10 flex_1">
  12. <div class="font_size16 bold line1">{{ item.courseTitle }}</div>
  13. <el-button type="primary" size="mini" plain class="mt5" v-if="item.skillTagName">{{item.skillTagName}}</el-button>
  14. <div class="font_size12 gray mt5">{{ item.viewCount }} {{ $t('common.renkanguo') }}</div>
  15. </div>
  16. </div>
  17. <div v-if="list.length === 0" >
  18. <el-empty :image-size="200" />
  19. </div>
  20. </div>
  21. </template>
  22. <script setup>
  23. import { getCourseList } from '@/api/course.js'
  24. import { ref, onMounted, watch, reactive, onActivated } from 'vue'
  25. import { useRouter } from 'vue-router'
  26. const router = useRouter();
  27. const props =defineProps({
  28. info: {
  29. type: Object,
  30. default: () => ({})
  31. }
  32. })
  33. const list = ref([]);
  34. const searchFom = reactive({
  35. skillTag: '',
  36. pageNum: 1,
  37. pageSize: 5,
  38. })
  39. watch(() => props.info.skillTag, (newVal, oldVal) => {
  40. if(newVal !== oldVal){
  41. // 课程ID变化时,重置分页参数
  42. searchFom.skillTag = newVal
  43. getList('init');
  44. }
  45. })
  46. onActivated(() => {
  47. searchFom.skillTag = props.info.skillTag;
  48. getList('init');
  49. })
  50. // onMounted(() => {
  51. // getList();
  52. // });
  53. const getList = async (type) => {
  54. const res = await getCourseList(searchFom)
  55. if(res.code === 200){
  56. list.value = res.rows || [];
  57. }
  58. };
  59. const goDetail = (item) => {
  60. //增加参数名称
  61. router.push({
  62. path: `/learning-system/detail/${item.courseId}`,
  63. query: {
  64. courseId: item.courseId,
  65. metaTitle: item.courseTitle || '课程详情'
  66. }
  67. })
  68. };
  69. </script>
  70. <style scoped>
  71. </style>