index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <!-- 购买套餐 -->
  2. <template>
  3. <div class="default-width white-bgc pa-10 my-n3">
  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: 'enterprise-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: 'OPS职位置顶', label: 'OPS职位置顶' },
  50. { key: '背景调查', label: '背景调查' },
  51. { key: '职位极速推广', label: '职位极速推广' },
  52. { key: '全域广告', label: '全域广告' },
  53. { key: 'SDMS短信直投', label: 'SDMS短信直投' },
  54. ]
  55. const returnData = {
  56. ordinary: { 职位发布数量: '0', 职位刷新次数: '0', 人才在线开聊: '每日3次', OPS职位置顶: false, 背景调查: false, 职位极速推广: false, 全域广告: false, SDMS短信直投: false },
  57. vip: { 职位发布数量: '10个', 职位刷新次数: '20次', 人才在线开聊: '无限开聊', OPS职位置顶: true, 背景调查: true, 职位极速推广: true, 全域广告: true, SDMS短信直投: 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>