course-item.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div class="course-item-container" @click='linkTo'>
  3. <div class="course-main">
  4. <div class="course-title">{{info.title}}</div>
  5. <div class="course-content">
  6. {{info.desc}}
  7. </div>
  8. <div class="course-author">
  9. <img class="course-author-avatar" :src="courseUserInfo.icon_url" alt="" />
  10. <div class="course-author-name">{{courseUserInfo.nickname}}</div>
  11. <div class="course-author-title">{{courseUserInfo.direction_op_name}}@{{courseUserInfo.company}}</div>
  12. </div>
  13. <div class="course-bug-info">
  14. <div class="course-price">¥{{info.price}}</div>
  15. <div class="course-lesson-count">共{{info.zj_num}}小节 · {{info.buy_num}}人已购买</div>
  16. </div>
  17. </div>
  18. <div class="course-cover" v-if="info.img_icon">
  19. <el-image style="width:100%;height:100%" fit="cover" :src="info.img_icon"></el-image>
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. export default {
  25. props: ["info"],
  26. computed: {
  27. courseUserInfo() {
  28. return this.info.user_info || {};
  29. },
  30. },
  31. methods:{
  32. linkTo(){
  33. window.open(this.info.link,'view_window');
  34. }
  35. }
  36. };
  37. </script>
  38. <style lang="scss" scoped>
  39. .course-item-container {
  40. margin-left: 34px;
  41. margin-right: 34px;
  42. padding-top: 30px;
  43. padding-bottom: 32px;
  44. border-bottom: 1px solid #ebeced;
  45. display: flex;
  46. align-items: center;
  47. cursor: pointer;
  48. // &:nth-last-child(1) {
  49. // border-bottom: none;
  50. // }
  51. }
  52. .course-main {
  53. flex: 1;
  54. }
  55. .course-cover {
  56. width: 200px;
  57. height: 116px;
  58. margin-left: 38px;
  59. img {
  60. width: 100%;
  61. height: 100%;
  62. }
  63. }
  64. .course-title {
  65. font-size: 16px;
  66. font-family: PingFangSC-Medium, PingFang SC;
  67. font-weight: 500;
  68. color: #0b111a;
  69. line-height: 21px;
  70. }
  71. .course-content {
  72. margin-top: 8px;
  73. font-size: 13px;
  74. font-family: PingFangSC-Regular, PingFang SC;
  75. font-weight: 400;
  76. color: #828c99;
  77. line-height: 18px;
  78. }
  79. .course-author {
  80. display: flex;
  81. margin-top: 16px;
  82. align-items: center;
  83. }
  84. .course-author-avatar {
  85. width: 20px;
  86. height: 20px;
  87. border-radius: 100%;
  88. overflow: hidden;
  89. margin-right: 8px;
  90. }
  91. .course-author-name {
  92. font-size: 14px;
  93. font-family: PingFangSC-Medium, PingFang SC;
  94. font-weight: 500;
  95. color: #0b121a;
  96. margin-right: 16px;
  97. }
  98. .course-author-title {
  99. font-size: 12px;
  100. font-family: PingFangSC-Regular, PingFang SC;
  101. font-weight: 400;
  102. color: #828c99;
  103. }
  104. .course-bug-info {
  105. margin-top: 30px;
  106. display: flex;
  107. align-items: center;
  108. }
  109. .course-price {
  110. font-size: 14px;
  111. font-family: PingFangSC-Medium, PingFang SC;
  112. font-weight: 500;
  113. color: #ff7640;
  114. margin-right: 16px;
  115. }
  116. .course-lesson-count {
  117. font-size: 12px;
  118. font-family: PingFangSC-Regular, PingFang SC;
  119. font-weight: 400;
  120. color: #828C99;
  121. margin-right: 14px;
  122. }
  123. </style>