about.vue 7.1 KB

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