about.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <!--
  2. * @Author: LiZhiWei
  3. * @Date: 2026-01-21 08:51:46
  4. * @LastEditors: LiZhiWei
  5. * @LastEditTime: 2026-01-21 14:31:29
  6. * @Description:
  7. -->
  8. <template>
  9. <section
  10. ref="aboutRef"
  11. class="about-section transition-all duration-1000 ease-out"
  12. :class="[isAboutVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-100px']"
  13. >
  14. <div class="inner-container">
  15. <!-- Top Section -->
  16. <div>
  17. <div class="top-header">
  18. <div class="title-wrapper pf-sc-semibold">
  19. <span class="brand-text">绘家科技</span>
  20. <span class="who-is-text">是谁</span>
  21. <span class="separator"></span>
  22. </div>
  23. <div>
  24. <span class="desc-text pf-sc-regular">
  25. 海南绘家科技有限公司矢志成为优秀的智慧社区组整体解决方案供应商和完整居住社区整体解决方案供应商。公司以技术研发为核心,深耕物业行业,致力于借助智能硬件、互联网、物联网、云计算、大数据分析、人工智能等技术推动物业服务企业发展线上线下社区服务业,实现数字化、智能化、精细化的管理与服务提升物业服务品质,提高企业管理效率,助力智慧社区建设。
  26. </span>
  27. </div>
  28. </div>
  29. <div class="company-desc-wrapper">
  30. <span class="desc-text pf-sc-regular">
  31. 目前,公司拥有绘管家物业综合管理云平台、绘服务居民在线服务平台、绘享云大数据分析平台、无人值守停车场、人脸识别门禁、智能监控、智能充电桩、远程抄表、机械环保作业设备、地勤指挥中心、物业综合配套等全方位的智慧物业和智慧社区解决方案及服务体系。截止2025年12月绘管家已在住宅小区、商业广场、写字楼、政企办公楼、医院、工业园区、菜篮子农贸市场7个业态的项目落地,绘管家平台管理面积超1800万平方米,覆盖近800多个小区、50万+套房屋。
  32. </span>
  33. </div>
  34. </div>
  35. <!-- Bottom Section -->
  36. <div class="bottom-section">
  37. <!-- Left Content -->
  38. <div class="left-content">
  39. <div class="stats-title pf-sc-semibold">
  40. <span class="stats-highlight">800+家</span>
  41. <span>小区已经选择绘家</span>
  42. </div>
  43. <div class="stats-grid">
  44. <div v-for="(item, index) in stats" :key="index">
  45. <div class="stat-label pf-sc-regular">
  46. {{ item.label }}
  47. </div>
  48. <div class="stat-value d-din-pro-600-semibold">
  49. {{ item.value }}
  50. </div>
  51. </div>
  52. </div>
  53. <button class="consult-btn">
  54. <span class="btn-text pf-sc-regular">立即咨询</span>
  55. <div class="btn-icon"></div>
  56. </button>
  57. </div>
  58. <!-- Right Video Card -->
  59. <div class="video-card play-box">
  60. <!-- 极致毛玻璃圆盘 -->
  61. <div class="play-circle">
  62. <i class="play-icon"></i>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </section>
  68. </template>
  69. <script setup lang="ts">
  70. const stats = [
  71. { label: '遍布城市', value: '30+' },
  72. { label: '服务客户', value: '300+' },
  73. { label: '管理小区', value: '800+' },
  74. { label: '城市合伙人', value: '3+' },
  75. { label: '房屋', value: '500000+' },
  76. { label: '账单资金', value: '15亿/年' },
  77. ]
  78. const isAboutVisible = ref(false)
  79. const aboutRef = ref(null)
  80. onMounted(() => {
  81. const observer = new IntersectionObserver(
  82. (entries) => {
  83. entries.forEach((entry) => {
  84. if (!entry.isIntersecting) return
  85. isAboutVisible.value = true
  86. observer.unobserve(entry.target)
  87. })
  88. },
  89. { threshold: 0.1 }
  90. )
  91. if (aboutRef.value) {
  92. observer.observe(aboutRef.value)
  93. }
  94. })
  95. </script>
  96. <style scoped lang="scss">
  97. .about-section {
  98. @apply bg-white py-100px;
  99. @apply lt-sm:py-120px;
  100. }
  101. .inner-container {
  102. @apply lt-sm:px-32px;
  103. @extend %landing-container;
  104. }
  105. .top-header {
  106. @apply flex items-center justify-between gap-68px;
  107. @apply lt-sm:flex-col lt-sm:gap-36px;
  108. }
  109. .title-wrapper {
  110. @apply flex items-center w-264px whitespace-nowrap;
  111. @apply lt-sm:w-full lt-sm:justify-center;
  112. }
  113. .brand-text {
  114. @apply font-s-36px text-#0F67F8;
  115. @apply lt-sm:font-s-48px;
  116. }
  117. .who-is-text {
  118. @apply font-s-36px text-#000000;
  119. @apply lt-sm:font-s-48px;
  120. }
  121. .separator {
  122. @apply inline-block w-32px h-6px bg-#1E293B align-middle ml-16px;
  123. @apply lt-sm:hidden;
  124. }
  125. .desc-text {
  126. @apply font-s-16px text-#000000 lh-26px;
  127. @apply lt-sm:font-s-26px lt-sm:lh-42px;
  128. }
  129. .company-desc-wrapper {
  130. @apply mt-32px;
  131. }
  132. .bottom-section {
  133. @apply mt-80px flex items-stretch justify-between gap-32px;
  134. @apply lt-sm:flex-col lt-sm:mt-120px lt-sm:gap-56px;
  135. }
  136. .left-content {
  137. @apply flex-1 flex flex-col gap-72px;
  138. @apply lt-sm:items-center lt-sm:gap-56px;
  139. }
  140. .stats-title {
  141. @apply font-s-36px lh-normal;
  142. @apply lt-sm:font-s-48px lt-sm:text-center;
  143. }
  144. .stats-highlight {
  145. @apply text-#0F67F8;
  146. }
  147. .stats-grid {
  148. @apply grid grid-cols-3 gap-y-48px;
  149. @apply lt-sm:gap-x-144px lt-sm:gap-y-36px lt-sm:grid-cols-2;
  150. }
  151. .stat-label {
  152. @apply font-s-14px text-#384146 mb-8px;
  153. @apply lt-sm:font-s-24px;
  154. }
  155. .stat-value {
  156. @apply font-s-38px text-#091221 d-din-pro-600-semibold lh-38px;
  157. @apply lt-sm:font-s-56px lt-sm:lh-56px;
  158. }
  159. .consult-btn {
  160. @apply bg-#1A73E8 text-white px-15px py-16px w-268px rounded-8px flex items-center justify-between hover:opacity-80 transition-colors cursor-pointer border-none;
  161. @apply lt-sm:hidden;
  162. }
  163. .btn-text {
  164. @apply font-s-16px;
  165. }
  166. .btn-icon {
  167. @apply i-custom-arrow-right wh-18px;
  168. }
  169. .video-card {
  170. @apply flex-1 flex-center rounded-16px shadow-sm relative overflow-hidden;
  171. @apply lt-sm:min-h-420px lt-sm:flex-shrink-0;
  172. }
  173. .play-box {
  174. background-image: url('~/assets/images/play-bg.png');
  175. background-size: 100% 100%;
  176. background-repeat: no-repeat;
  177. background-position: center;
  178. }
  179. .play-circle {
  180. @apply wh-84px rounded-full flex items-center justify-center cursor-pointer hover:scale-110 transition-transform duration-300;
  181. @apply lt-sm:wh-96px hover:lt-sm:scale-100;
  182. background: linear-gradient(135deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.1) 100%);
  183. backdrop-filter: blur(4px);
  184. -webkit-backdrop-filter: blur(4px);
  185. border: 1.5px solid rgba(255, 255, 255, 1);
  186. box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
  187. }
  188. .play-icon {
  189. @apply i-custom-play wh-84px;
  190. }
  191. </style>