index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <!-- 购买套餐 -->
  2. <template>
  3. <div class="default-width white-bgc py-8">
  4. <!-- 套餐列表 -->
  5. <div class="d-flex align-center justify-center">
  6. <div
  7. v-for="(item, index) in packages"
  8. :key="index"
  9. :elevation="tab === (index+1) ? 3 : 2"
  10. class="packagesItem cursor-pointer mx-3"
  11. :class="{'active': tab === (index+1)}"
  12. style="width: 220px;"
  13. @click="handleChange(item, index)"
  14. >
  15. <div class="d-flex flex-column align-center pb-5">
  16. <div class="mt-4 font16 fontBold titleColor">{{ item.标题 }}</div>
  17. <div class="mt-2 fontBold priceBox">
  18. <span>¥</span>
  19. <span class="font28">{{ item.价格 }}</span>
  20. </div>
  21. <div class="dailyPrice font13 mt-2">每天低至{{ item.dailyPrice }}元</div>
  22. </div>
  23. </div>
  24. </div>
  25. <!-- 套餐详情 -->
  26. <packagesDetail v-if="detailItem" :info="detailItem"></packagesDetail>
  27. </div>
  28. </template>
  29. <script setup>
  30. import packagesDetail from './components/packagesDetail.vue'
  31. import { ref } from 'vue'
  32. defineOptions({name: 'personal-purchasePackage'})
  33. const tab = ref(1)
  34. const packages = [
  35. { id: '60', 标题: '60天双月卡', 价格: '108', dailyPrice: '1.8', index: {} },
  36. { id: '30', 标题: '30天月卡', 价格: '58', dailyPrice: '2' },
  37. { id: '14', 标题: '14天双周卡', 价格: '38', dailyPrice: '2.8' },
  38. ]
  39. const handleChange = (item, index) => {
  40. detailItem.value = deal()
  41. tab.value = index + 1
  42. }
  43. const deal = () => {
  44. const headers = [{ key: '权益', label: '权益' }, { key: '普通用户', label: '普通用户' }, { key: 'VIP套餐', label: 'VIP套餐' }]
  45. const contrastList = [
  46. { key: '简历刷新', label: '简历刷新' },
  47. { key: '竞争力分析', label: '竞争力分析' },
  48. { key: '谁对我有兴趣', label: '谁对我有兴趣' },
  49. { key: '投递优先查看', label: '投递优先查看' },
  50. { key: '聊天优先沟通', label: '聊天优先沟通' },
  51. { key: 'VIP会员标识', label: 'VIP会员标识' },
  52. { key: 'VIP尊享皮肤', label: 'VIP尊享皮肤' },
  53. { key: 'VIP专属折扣', label: 'VIP专属折扣' },
  54. ]
  55. const returnData = {
  56. ordinary: { 简历刷新: '10元5次', 竞争力分析: '15元5次', 谁对我有兴趣: '5元/当日3次', 投递优先查看: false, 聊天优先沟通: false, VIP会员标识: false, VIP尊享皮肤: false, VIP专属折扣: false },
  57. vip: { 简历刷新: '3次/天', 竞争力分析: '20次/天', 谁对我有兴趣: '无限查看', 投递优先查看: true, 聊天优先沟通: true, VIP会员标识: true, VIP尊享皮肤: true, VIP专属折扣: true },
  58. }
  59. return { headers, contrastList, returnData }
  60. }
  61. const detailItem = ref(packages?.length ? deal(packages[0]) : null)
  62. </script>
  63. <style lang="scss" scoped>
  64. .font13 { font-size: 13px; }
  65. .font16 { font-size: 16px; }
  66. .font28 { font-size: 28px; }
  67. .fontBold { font-weight: bold; }
  68. .titleColor { color: #883a19; }
  69. .packagesItem {
  70. border: 1px solid #f3f3f3;
  71. border-radius: 8px;
  72. background-color: #f2f4f742;
  73. }
  74. .dailyPrice {
  75. border-radius: 14px;
  76. background-color: #dde3e94f;
  77. padding: 2px 18px;
  78. color: #666;
  79. }
  80. .active {
  81. padding: 4px 8px;
  82. border: 1px solid #cf990c;
  83. background-color: #fff;
  84. .titleColor {
  85. color: #cf990c;
  86. }
  87. .priceBox {
  88. color: #ff4747;
  89. }
  90. .dailyPrice {
  91. color: #ff4747;
  92. background-color: #fff4e7;
  93. }
  94. }
  95. </style>