BaseDevLayout.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <script setup lang="ts">
  2. defineProps<{
  3. subTitle: string,
  4. descList: {val: string, langKey: string}[],
  5. cardTitle: string,
  6. subTitleLangKey: string,
  7. cardTitleLangKey: string
  8. }>()
  9. const serverTopData = [
  10. {
  11. iconName: 'carbon/dmvr/icon-service-01',
  12. content: '负责完成项目设计文件<br class="hidden sm:block" />(PDD)的编写',
  13. langKey: 'ccer.serviceItemOne'
  14. },
  15. {
  16. iconName: 'carbon/dmvr/icon-service-02',
  17. content: '协助项目业主完成项目<br class="hidden sm:block" />公示和审定',
  18. langKey: 'ccer.serviceItemTwo'
  19. },
  20. {
  21. iconName: 'carbon/dmvr/icon-service-03',
  22. content: '协助项目业主完成<br class="hidden sm:block" />项目登记',
  23. langKey: 'ccer.serviceItemThree'
  24. },
  25. {
  26. iconName: 'carbon/dmvr/icon-service-04',
  27. content: '负责完成减排量的核算<br class="hidden sm:block" />并出具减排量核算报告',
  28. langKey: 'ccer.serviceItemFour'
  29. },
  30. ]
  31. const serverBottomData = [
  32. {
  33. iconName: 'carbon/dmvr/icon-service-05',
  34. content: '协助项目业主完成减排量<br class="hidden sm:block" />公示和核查',
  35. langKey: 'ccer.serviceItemFive'
  36. },
  37. {
  38. iconName: 'carbon/dmvr/icon-service-06',
  39. content: '协助项目业主完成<br class="hidden sm:block" />减排量登记',
  40. langKey: 'ccer.serviceItemSix'
  41. },
  42. {
  43. iconName: 'carbon/dmvr/icon-service-07',
  44. content: '将签发项目上线至伏羲碳惠平台<br class="hidden sm:block"/>帮助项目业主顺利完成交易',
  45. langKey: 'ccer.serviceItemSeven'
  46. }
  47. ]
  48. </script>
  49. <template>
  50. <BaseCard title="我们的服务" :subTitle="subTitle" isText :lang-key="subTitleLangKey" sub-lang-key="ccer.serviceSubTitle" class="server-container" :card-wrapper-style="{
  51. padding: '88px 0 70px 0'
  52. }">
  53. <ul class="service-list grid grid-cols-1 gap-[20px] sm:grid-cols-2 md:grid-cols-4 ">
  54. <li
  55. class="service-item pt-[36px]"
  56. v-for="item, index in serverTopData"
  57. :key="index"
  58. >
  59. <div class="content">
  60. <BaseIcon class="icon" :name="item.iconName" width="74" height="74" />
  61. <span v-html="$t(item.langKey)"></span>
  62. </div>
  63. </li>
  64. </ul>
  65. <ul class="service-list grid grid-cols-1 gap-[20px] sm:grid-cols-3 md:mt-[36px]">
  66. <li class="service-item pt-[36px] sm:pt-[56px]" v-for="(item, index) in serverBottomData" :key="index">
  67. <div class="content">
  68. <BaseIcon class="icon" :name="item.iconName" width="74" height="74" />
  69. <span v-html="$t(item.langKey)"></span>
  70. </div>
  71. </li>
  72. </ul>
  73. </BaseCard>
  74. <BaseCard :title="cardTitle" :lang-key="cardTitleLangKey" is-text class="introduce-container" :card-wrapper-style="{
  75. padding: '103px 0'
  76. }">
  77. <ul class="desc-container text-center">
  78. <li v-for="item,index in descList" :key="index">{{ $t(item.langKey) }}</li>
  79. </ul>
  80. </BaseCard>
  81. <slot />
  82. </template>
  83. <style scoped lang="scss">
  84. .service-list {
  85. text-align: center;
  86. line-height: 22px;
  87. color: #161616;
  88. .service-item {
  89. position: relative;
  90. // padding-top: 36px;
  91. .content {
  92. display: flex;
  93. justify-content: center;
  94. position: relative;
  95. min-height: 114px;
  96. height: 100%;
  97. border-radius: 8px;
  98. background: #F8FAFF;
  99. }
  100. .icon {
  101. position: absolute;
  102. top: -0;
  103. left: 50%;
  104. transform: translate(-50%, -50%);
  105. }
  106. span {
  107. padding-top: 53px;
  108. }
  109. }
  110. &:last-child {
  111. margin-bottom: 0;
  112. }
  113. }
  114. .introduce-container {
  115. background: url('@/assets/image/carbo/bg-server.png') left top no-repeat,
  116. url('@/assets/image/carbo/dmrv/bg-ccer-bubble.png') right 100% no-repeat,
  117. linear-gradient(180deg, #F7F9FF 57.64%, #F1F5F8 100%);
  118. line-height: 26px;
  119. color: #565E66;
  120. }
  121. </style>