scroll-list-card.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <view class="scroll-list-card mobile-card-box">
  3. <!-- title -->
  4. <text class="mobile-card-title">{{data.ksName === null ? '':data.ksName}}</text>
  5. <!-- content -->
  6. <view class="mobile-card-row" style="font-size: 28rpx;">
  7. 时间:{{data.ksStartTime === null ? '':data.ksStartTime}}-{{data.ksEndTime === null ? '':data.ksEndTime}}
  8. </view>
  9. <view class="mobile-card-row">
  10. <text>总分:{{data.ksScore === null ? '':data.ksScore}}</text>
  11. <text class="card-score-box">学分:{{data.credit === null ? '':data.credit}}</text>
  12. </view>
  13. <view class="mobile-card-row">
  14. <text>及格分:{{data.okScore === null ? '':data.okScore}}</text>
  15. <text class="card-score-box">考试时长:{{data.totalTm === null ? '':data.totalTm}}分钟</text>
  16. </view>
  17. <!-- button -->
  18. <template v-for="item in btns" :key="item.status">
  19. <button class="lli-btn" @click="btnClick(item)" v-if="item.show" :key="item.status"
  20. :disabled="data.disabled">{{item.text}}</button>
  21. </template>
  22. </view>
  23. </template>
  24. <script setup>
  25. import {
  26. toRefs,
  27. ref,
  28. computed
  29. } from "vue";
  30. const props = defineProps({
  31. data: {
  32. type: Object
  33. }
  34. })
  35. const {
  36. data
  37. } = toRefs(props)
  38. const btns = computed(() => [{
  39. status: 0,
  40. btnType: 'kaoshi',
  41. text: '未开始',
  42. show: data.value.status === 0,
  43. },
  44. {
  45. status: 1,
  46. btnType: 'kaoshi',
  47. text: '开始考试',
  48. show: data.value.status === 1,
  49. },
  50. {
  51. status: 3,
  52. btnType: 'kaoshi',
  53. text: '考试中',
  54. show: data.value.status === 3,
  55. },
  56. {
  57. status: 2,
  58. btnType: 'kaoshi',
  59. text: '再次考试',
  60. show: data.value.status === 2,
  61. },
  62. {
  63. status: 4,
  64. btnType: 'kaoshi',
  65. text: '已结束',
  66. show: data.value.status === 4,
  67. },
  68. {
  69. status: 5,
  70. btnType: 'kaoshi',
  71. text: '报名',
  72. show: data.value.status === 5,
  73. },
  74. {
  75. status: 6,
  76. btnType: 'kaoshi',
  77. text: '报名审核中',
  78. show: data.value.status === 6,
  79. },
  80. {
  81. status: 7,
  82. btnType: 'kaoshi',
  83. text: '审核未通过',
  84. show: data.value.status === 7,
  85. },
  86. {
  87. status: 8,
  88. btnType: 'kaoshi',
  89. text: '等待人工评分',
  90. show: data.value.status === 8,
  91. },
  92. ])
  93. </script>
  94. <style lang="scss" scoped>
  95. .mobile-card-box {
  96. box-sizing: border-box;
  97. margin: 0 30rpx 10rpx;
  98. border-bottom: 2rpx solid #f2f1f2;
  99. padding-bottom: 30rpx;
  100. }
  101. .mobile-card-title {
  102. color: #333;
  103. font-size: 32rpx;
  104. font-weight: 500;
  105. margin: 24rpx 0 24rpx 0;
  106. text-overflow: ellipsis;
  107. -o-text-overflow: ellipsis;
  108. overflow: hidden;
  109. word-wrap: break-word;
  110. display: -webkit-box;
  111. white-space: normal;
  112. -webkit-box-orient: vertical;
  113. text-align: justify;
  114. -webkit-line-clamp: 2;
  115. line-clamp: 2;
  116. line-height: 48rpx;
  117. }
  118. // 行
  119. .mobile-card-row {
  120. margin-bottom: 32rpx;
  121. display: flex;
  122. justify-content: space-between;
  123. align-items: flex-end;
  124. text {
  125. font-size: 28rpx;
  126. line-height: 40rpx
  127. }
  128. // 得分
  129. .mobile-card-score {
  130. font-size: 40rpx;
  131. color: #F10A0A;
  132. }
  133. // 分数(有最小宽度)
  134. .card-score-box {
  135. min-width: 240rpx;
  136. text-align: left;
  137. }
  138. }
  139. // 按钮
  140. .mobile-card-btn {
  141. width: 60%;
  142. height: 80rpx;
  143. line-height: 80rpx;
  144. margin: 50rpx auto;
  145. background: linear-gradient(0deg, #436aff 0%, #234ff7 100%);
  146. border-radius: 80rpx;
  147. display: block;
  148. }
  149. </style>