SpecCard.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <div class='analysis-report-production-spec-card flex flex-(row items-center)' :class='{ "is-pack": spec.pack }' @click='$emit("select", spec.id)'>
  3. <div class='buy-tip--price flex flex-(col items-center)'>
  4. <span class="spec-i-text active-price"><span class='active-price-unit'>¥</span>{{ (spec.now) }}</span>
  5. <span class="spec-i-text del" v-if='spec.origin > spec.now'>¥{{ (spec.origin) }}</span>
  6. </div>
  7. <div class='flex flex-(1 row items-center justify-between)'>
  8. <div>
  9. <div class='spec-c-label flex flex-(row items-center)'>
  10. <span class='spec-name'>{{spec.label}}</span>
  11. <span class='vip-label' :class='{ [spec.packLevel]: true }' v-if='spec.pack'>
  12. <i class='iconfont icon-vip'></i>
  13. </span>
  14. <div class="activity-badge" :class='{"is-huo": spec.badge !== "权益特价"}' v-if="spec.badge">
  15. <span v-if='spec?.badge === "权益特价"' class="j-icon icon-crown"></span>
  16. <span v-else class="j-icon icon-huo-badge"></span>
  17. &nbsp;{{spec.badge}}
  18. </div>
  19. </div>
  20. <div>
  21. <div class='spec-card-tip flex flex-(row items-center)' v-if='spec.pack'>
  22. <span class='spec-card-tip--day flex-shrink-0'>{{spec._extend.day}}天</span>
  23. <span class='spec-line'></span>
  24. <div class='flex-shrink-0'>免费下载:<span>{{spec._extend.number}}{{spec._extend.specsUnit}}</span> /月</div>
  25. </div>
  26. <div v-else>
  27. <span class='spec-i-text'>{{spec.desc}}</span>
  28. </div>
  29. </div>
  30. </div>
  31. <div>
  32. <div class="check--actions">
  33. <span class="check-icon iconfont icon-choose1" v-if='active === spec.id'></span>
  34. <span class="check-icon iconfont icon-unchoose1" v-else></span>
  35. </div>
  36. </div>
  37. </div>
  38. <div class='spec-card-tip--fixed' v-if='spec.pack'>
  39. <div class='spec-card-tip--desc' :class='{ [spec.packLevel]: true }'>若本月报告下载超出额度,时效内享特价:<span>{{spec._extend.first}}元/{{spec._extend.specsUnit}}</span></div>
  40. </div>
  41. </div>
  42. </template>
  43. <script>
  44. export default {
  45. name: 'AnalysisReportProductionSpecCard',
  46. props: {
  47. spec: {
  48. type: Object,
  49. default: () => {}
  50. },
  51. active: {
  52. type: Number,
  53. default: -1
  54. }
  55. }
  56. }
  57. </script>
  58. <style scoped lang='scss'>
  59. .analysis-report-production-spec-card {
  60. position: relative;
  61. border: 1px solid rgba(0, 0, 0, 0.05);
  62. box-shadow: 0px 4px 16px 0px rgba(8, 31, 38, 0.08);
  63. background: #fff;
  64. width: 100%;
  65. border-radius: 8px;
  66. margin-bottom: 12px;
  67. padding: 12px;
  68. padding-left: 23px;
  69. &.is-pack {
  70. padding-bottom: 29px;
  71. }
  72. .spec-i-text {
  73. font-size: 11px;
  74. color: #5f5e64;
  75. line-height: 16px;
  76. &.del {
  77. font-size: 10px;
  78. line-height: 14px;
  79. color: #9B9CA3;
  80. text-decoration: line-through;
  81. }
  82. }
  83. .buy-tip--price {
  84. margin-right: 23px;
  85. .active-price-unit {
  86. font-size: 14px;
  87. }
  88. .active-price {
  89. font-size: 22px;
  90. line-height: 32px;
  91. color: #FB483D;
  92. }
  93. }
  94. .activity-badge {
  95. display: flex;
  96. align-items: center;
  97. margin-left: 8px;
  98. padding: 2px 8px;
  99. font-size: 11px;
  100. line-height: 14px;
  101. background: linear-gradient(98deg, #ff7c32 0%, #f33838 100%);
  102. border-radius: 9px 0px;
  103. text-align: center;
  104. color: #fff;
  105. &.is-huo {
  106. padding: 2px 4px;
  107. background: rgba(255, 243, 239, 1);
  108. border: 1px solid rgba(255, 98, 107, 1);
  109. border-radius: 4px;
  110. color: #FB483D;
  111. }
  112. }
  113. .vip-label {
  114. display: inline-flex;
  115. align-items: center;
  116. justify-content: center;
  117. margin-left: 4px;
  118. height: 18px;
  119. background: #2abed1;
  120. border-radius: 8px 2px 8px 2px;
  121. color: #fff;
  122. &.monthly-theme {}
  123. &.seasonal-theme {
  124. background: #F1D090;
  125. color: #1D1D1D;
  126. }
  127. &.year-theme {
  128. background: #171826;
  129. color: #FAE7CA;
  130. }
  131. .icon-vip {
  132. display: inline-block;
  133. color: inherit;
  134. font-size: 18px;
  135. transform: scale(0.5);
  136. }
  137. }
  138. .spec-card-tip {
  139. margin-top: 10px;
  140. .spec-line {
  141. width: 1px;
  142. height: 12px;
  143. background: #E0E0E0;
  144. margin: 0 6px;
  145. display: inline-block;
  146. vertical-align: middle;
  147. }
  148. &--day {
  149. color: #1d1d1d;
  150. }
  151. &--fixed {
  152. position: absolute;
  153. bottom: 0;
  154. left: 0;
  155. width: 100%;
  156. }
  157. &--desc {
  158. color: #2ABED1;
  159. font-size: 10px;
  160. line-height: 21px;
  161. text-align: center;
  162. width: 299px;
  163. height: 21px;
  164. margin: 0 auto;
  165. background: url(@/assets/image/order/report/bg-monthly.png) no-repeat center;
  166. background-size: contain;
  167. &.seasonal-theme {
  168. background-image: url(@/assets/image/order/report/bg-seasonal.png);
  169. color: rgba(194, 111, 51, 1);
  170. }
  171. &.year-theme {
  172. background-image: url(@/assets/image/order/report/bg-year.png);
  173. color: #5F5E64;
  174. }
  175. }
  176. }
  177. .spec-c-label {
  178. .spec-name {
  179. font-size: 16px;
  180. line-height: 24px;
  181. color: #171826;
  182. }
  183. }
  184. .check--actions {
  185. display: flex;
  186. flex-direction: row;
  187. align-items: center;
  188. color: #2abed1;
  189. .check-icon {
  190. font-size: 24px;
  191. &.icon-choose1 {
  192. color: #2abed1;
  193. }
  194. &.icon-unchoose1 {
  195. color: #c0c4cc;
  196. }
  197. }
  198. }
  199. }
  200. </style>