Index.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228
  1. <template>
  2. <DefaultLayout>
  3. <!-- banner -->
  4. <section class="banner-section">
  5. <img src="@assets/banner.png" alt="" srcset="">
  6. <div class="info-row">
  7. <div class="info-item">
  8. <span class="text">覆盖</span>
  9. <span class="number">10+</span>
  10. <span class="text">垂直行业</span>
  11. </div>
  12. <div class="info-item">
  13. <span class="number">72</span>
  14. <span class="text">小时原型交付</span>
  15. </div>
  16. <div class="info-item">
  17. <span class="text">定制成本降低</span>
  18. <span class="number">30%</span>
  19. </div>
  20. </div>
  21. </section>
  22. <!-- 产品中心 -->
  23. <section class="products-section">
  24. <div class="container">
  25. <div class="section-header">
  26. <h2 class="section-title">产品中心</h2>
  27. <p class="section-subtitle">SMART SOLUTION</p>
  28. <p class="section-description">智慧管理系统采用先进开发技术,为智慧产业提供一站式解决方案</p>
  29. </div>
  30. <div class="products-content">
  31. <div class="products-nav">
  32. <div v-for="product in productList" :key="product.id" class="nav-item"
  33. :class="{ active: activeProductId === product.id }" @click="setActiveProduct(product.id)">
  34. {{ product.title }}
  35. </div>
  36. </div>
  37. <div class="product-detail">
  38. <div class="detail-content">
  39. <h3 class="product-title">{{ activeProduct.title }}</h3>
  40. <p class="product-description">{{ activeProduct.description }}</p>
  41. </div>
  42. <div class="detail-image">
  43. <img :src="activeProduct.image" :alt="activeProduct.title" />
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </section>
  49. <!-- 行业案例 -->
  50. <section class="cases-section">
  51. <div class="container">
  52. <div class="section-header">
  53. <h2 class="section-title">行业案例</h2>
  54. <p class="section-subtitle">SMART SOLUTION</p>
  55. <p class="section-description">智慧管理系统采用先进开发技术,为智慧产业提供一站式解决方案</p>
  56. </div>
  57. <div class="cases-carousel">
  58. <div class="nav-arrow nav-arrow-left" :class="{ disabled: currentCaseIndex === 0 }" @click="prevCase">
  59. <div class="arrow-icon">
  60. <img src="@assets/arrow-right.png" alt="Previous" />
  61. </div>
  62. </div>
  63. <div class="cases-container">
  64. <div class="cases-wrapper"
  65. :style="{ transform: `translateX(-${currentCaseIndex * (100 / visibleCases)}%)` }">
  66. <div v-for="caseItem in casesList" :key="caseItem.id" class="case-item">
  67. <div class="case-image">
  68. <img :src="caseItem.image" :alt="caseItem.title" />
  69. </div>
  70. <div class="case-content">
  71. <h3 class="case-title">{{ caseItem.title }}</h3>
  72. <p class="case-description">{{ caseItem.description }}</p>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="nav-arrow nav-arrow-right" :class="{ disabled: currentCaseIndex >= maxCaseIndex }"
  78. @click="nextCase">
  79. <div class="arrow-icon">
  80. <img src="@assets/arrow-right.png" alt="Next" />
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. </section>
  86. <!-- 企业简介 -->
  87. <section class="about-section">
  88. <div class="container">
  89. <div class="section-header">
  90. <h2 class="section-title">企业简介</h2>
  91. <p class="section-subtitle">ENTERPRISE QUALIFICATION</p>
  92. </div>
  93. <div class="about-content">
  94. <div class="about-tabs">
  95. <div v-for="tab in aboutTabs" :key="tab.id" class="tab-item" :class="{ active: activeAboutTab === tab.id }"
  96. @click="setActiveAboutTab(tab.id)">
  97. {{ tab.title }}
  98. </div>
  99. </div>
  100. <div class="about-detail">
  101. <transition name="fade-slide" mode="out-in">
  102. <div :key="activeAboutTab" class="detail-content">
  103. <div class="content-left">
  104. <img :src="activeAboutContent.image" :alt="activeAboutContent.title" />
  105. </div>
  106. <div class="content-right">
  107. <h3 class="content-title">{{ activeAboutContent.title }}</h3>
  108. <div class="content-description" v-html="activeAboutContent.description"></div>
  109. <div class="content-action">
  110. <button class="learn-more-btn">查看更多 →</button>
  111. </div>
  112. </div>
  113. </div>
  114. </transition>
  115. </div>
  116. </div>
  117. </div>
  118. </section>
  119. <!-- 合作伙伴 -->
  120. <section class="cooperation-section">
  121. <div class="container">
  122. <div class="section-header">
  123. <h2 class="section-title">合作伙伴</h2>
  124. <p class="section-subtitle">BUSINESS PARTNER</p>
  125. </div>
  126. <div class="partners-grid">
  127. <a v-for="partner in partnersList" :key="partner.id" :href="partner.url" target="_blank" class="partner-item">
  128. <img :src="partner.logo" :alt="partner.name" />
  129. </a>
  130. </div>
  131. </div>
  132. </section>
  133. </DefaultLayout>
  134. </template>
  135. <script>
  136. import { ref, computed, onMounted, onUnmounted } from 'vue'
  137. import DefaultLayout from '@/layouts/DefaultLayout.vue'
  138. import { getHomeData } from '@/api/modules/home'
  139. export default {
  140. name: 'HomePage',
  141. components: {
  142. DefaultLayout
  143. },
  144. setup() {
  145. const activeProductId = ref(1)
  146. const productList = ref([
  147. {
  148. id: 1,
  149. title: '低代码平台',
  150. description: '图形化界面和拖拽式组件,简化应用开发和部署,快速构建和迭代企业级应用。',
  151. image: 'src/assets/index-products-01.png'
  152. },
  153. {
  154. id: 2,
  155. title: '物联网平台',
  156. description: '连接和管理各种智能设备,实现设备数据采集、监控和远程控制。',
  157. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=物联网平台'
  158. },
  159. {
  160. id: 3,
  161. title: '统一权限系统',
  162. description: '集中管理用户权限和访问控制,确保系统安全和数据保护。',
  163. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=统一权限系统'
  164. },
  165. {
  166. id: 4,
  167. title: '地图适配应用',
  168. description: '提供地理信息服务和位置定位功能,支持多种地图数据源。',
  169. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=地图适配应用'
  170. },
  171. {
  172. id: 5,
  173. title: '数字学生',
  174. description: '学生信息管理和学习行为分析,提供个性化教育服务。',
  175. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=数字学生'
  176. },
  177. {
  178. id: 6,
  179. title: '数据中台',
  180. description: '统一数据管理和分析平台,提供数据治理和业务洞察。',
  181. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=数据中台'
  182. },
  183. {
  184. id: 7,
  185. title: 'AI大模型',
  186. description: '集成人工智能技术,提供智能分析和决策支持服务。',
  187. image: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=AI大模型'
  188. }
  189. ])
  190. const activeProduct = computed(() => {
  191. return productList.value.find(product => product.id === activeProductId.value) || productList.value[0]
  192. })
  193. const setActiveProduct = (id) => {
  194. activeProductId.value = id
  195. }
  196. // 行业案例数据和逻辑
  197. const currentCaseIndex = ref(0)
  198. const visibleCases = ref(3) // 同时显示的案例数量
  199. // 企业简介数据和逻辑
  200. const activeAboutTab = ref('about')
  201. const aboutTabs = ref([
  202. { id: 'about', title: '关于达泽' },
  203. { id: 'history', title: '发展历程' },
  204. { id: 'qualification', title: '荣誉资质' }
  205. ])
  206. const aboutContents = ref({
  207. about: {
  208. title: '关于达泽',
  209. description: `
  210. <p>达泽科技是贵州省今日前沿信息技术有限责任公司旗下品牌,专业为软件开发及数字化商务的综合性企业。为政府、金融、保险、通讯、电力、教育、制造、零售、交通、教育、通信、水利、农业等领域的企业及机构提供了专业的信息化解决方案。</p>
  211. <p>公司一直致力为客户内部管理,为用户至上的服务理念,为客户提供,合作共赢,服务至上的服务理念,为社会创造更高的价值。</p>
  212. `,
  213. image: 'src/assets/index-about-bg.png'
  214. },
  215. history: {
  216. title: '发展历程',
  217. description: `
  218. <p><strong>2018年</strong> - 公司成立,专注于智慧校园解决方案</p>
  219. <p><strong>2019年</strong> - 推出低代码开发平台,服务客户超过50家</p>
  220. <p><strong>2020年</strong> - 获得高新技术企业认证,团队规模扩展至100人</p>
  221. <p><strong>2021年</strong> - 业务拓展至智慧农业、智慧停车等多个领域</p>
  222. <p><strong>2022年</strong> - 服务学校超过500所,用户突破100万</p>
  223. <p><strong>2023年</strong> - 推出AI大模型解决方案,引领行业创新</p>
  224. `,
  225. image: 'src/assets/index-about-bg.png'
  226. },
  227. qualification: {
  228. title: '荣誉资质',
  229. description: `
  230. <p><strong>国家高新技术企业</strong> - 2020年获得认证</p>
  231. <p><strong>软件企业认证</strong> - 贵州省软件行业协会会员单位</p>
  232. <p><strong>ISO9001质量管理体系认证</strong> - 2021年通过认证</p>
  233. <p><strong>信息安全等级保护三级</strong> - 系统安全等级认证</p>
  234. <p><strong>优秀合作伙伴奖</strong> - 多家知名企业颁发</p>
  235. <p><strong>创新技术奖</strong> - 贵州省科技厅颁发</p>
  236. `,
  237. image: 'src/assets/index-about-bg.png'
  238. }
  239. })
  240. const activeAboutContent = computed(() => {
  241. return aboutContents.value[activeAboutTab.value]
  242. })
  243. const setActiveAboutTab = (tabId) => {
  244. activeAboutTab.value = tabId
  245. }
  246. // 合作伙伴数据
  247. const partnersList = ref([
  248. {
  249. id: 1,
  250. name: '浪潮',
  251. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=浪潮',
  252. url: 'https://unsplash.it/214/84'
  253. },
  254. {
  255. id: 2,
  256. name: '新信息',
  257. logo: 'https://unsplash.it/214/84',
  258. url: '#'
  259. },
  260. {
  261. id: 3,
  262. name: 'DELL',
  263. logo: 'https://unsplash.it/214/84',
  264. url: 'https://unsplash.it/214/84'
  265. },
  266. {
  267. id: 4,
  268. name: '锐捷',
  269. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=锐捷',
  270. url: 'https://unsplash.it/214/84'
  271. },
  272. {
  273. id: 5,
  274. name: '河姆渡',
  275. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=河姆渡',
  276. url: 'https://unsplash.it/214/84'
  277. },
  278. {
  279. id: 6,
  280. name: 'SIEMENS',
  281. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=SIEMENS',
  282. url: 'https://unsplash.it/214/84'
  283. },
  284. {
  285. id: 7,
  286. name: 'HP',
  287. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=HP',
  288. url: 'https://unsplash.it/214/84'
  289. },
  290. {
  291. id: 8,
  292. name: 'Sygon',
  293. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=Sygon',
  294. url: '#'
  295. },
  296. {
  297. id: 9,
  298. name: 'KSTAR',
  299. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=KSTAR',
  300. url: 'https://unsplash.it/214/84'
  301. },
  302. {
  303. id: 10,
  304. name: 'WEIMO',
  305. logo: 'https://via.placeholder.com/180x80/f8f9fa/666666?text=WEIMO',
  306. url: '#'
  307. }
  308. ])
  309. const casesList = ref([
  310. {
  311. id: 1,
  312. title: '智慧农业(种植+养殖)',
  313. description: '通过物联网技术实现农业自动化管理,利用传感器监控土壤、水质等环境参数,提高农业生产效率。',
  314. image: 'https://unsplash.it/300/200'
  315. },
  316. {
  317. id: 2,
  318. title: '智慧停车',
  319. description: '通过车牌识别技术及物联网设备实现停车场智能化管理,实现无感支付和车位引导等功能。',
  320. image: 'https://unsplash.it/300/200'
  321. },
  322. {
  323. id: 3,
  324. title: '副控票务系统',
  325. description: '为景区提供智能化票务管理,智能闸机一体化管理系统,提升游客体验,优化景区运营。',
  326. image: 'https://unsplash.it/300/200'
  327. },
  328. {
  329. id: 4,
  330. title: '智慧校园',
  331. description: '集成学生管理、教学管理、安全监控等功能,为教育机构提供全方位数字化解决方案。',
  332. image: 'https://unsplash.it/300/200'
  333. },
  334. {
  335. id: 5,
  336. title: '智慧医疗',
  337. description: '通过数字化技术提升医疗服务效率,实现患者信息管理、远程诊疗等智能化医疗服务。',
  338. image: 'https://unsplash.it/300/200'
  339. },
  340. {
  341. id: 6,
  342. title: '智慧物流',
  343. description: '利用物联网和大数据技术优化物流配送,实现货物追踪、路径优化等智能化物流管理。',
  344. image: 'https://unsplash.it/300/200'
  345. }
  346. ])
  347. const maxCaseIndex = computed(() => {
  348. return Math.max(0, casesList.value.length - visibleCases.value)
  349. })
  350. const nextCase = () => {
  351. if (currentCaseIndex.value < maxCaseIndex.value) {
  352. currentCaseIndex.value++
  353. }
  354. }
  355. const prevCase = () => {
  356. if (currentCaseIndex.value > 0) {
  357. currentCaseIndex.value--
  358. }
  359. }
  360. // API调用方法
  361. const loadHomeData = async () => {
  362. try {
  363. const data = await getHomeData()
  364. // 这里可以更新products和advantages数据
  365. console.log('首页数据:', data)
  366. } catch (error) {
  367. console.error('加载首页数据失败:', error)
  368. }
  369. }
  370. // 响应式处理
  371. const updateVisibleCases = () => {
  372. if (window.innerWidth <= 768) {
  373. visibleCases.value = 1
  374. } else {
  375. visibleCases.value = 3
  376. }
  377. // 重置索引以防超出范围
  378. if (currentCaseIndex.value > maxCaseIndex.value) {
  379. currentCaseIndex.value = maxCaseIndex.value
  380. }
  381. }
  382. onMounted(() => {
  383. loadHomeData()
  384. updateVisibleCases()
  385. window.addEventListener('resize', updateVisibleCases)
  386. })
  387. onUnmounted(() => {
  388. window.removeEventListener('resize', updateVisibleCases)
  389. })
  390. return {
  391. productList,
  392. activeProductId,
  393. activeProduct,
  394. setActiveProduct,
  395. casesList,
  396. currentCaseIndex,
  397. visibleCases,
  398. maxCaseIndex,
  399. nextCase,
  400. prevCase,
  401. aboutTabs,
  402. activeAboutTab,
  403. activeAboutContent,
  404. setActiveAboutTab,
  405. partnersList
  406. }
  407. }
  408. }
  409. </script>
  410. <style lang="scss" scoped>
  411. // banner区域
  412. .banner-section {
  413. position: relative;
  414. img {
  415. width: 100%;
  416. }
  417. }
  418. .info-row {
  419. height: 130px;
  420. position: absolute;
  421. left: 0;
  422. right: 0;
  423. bottom: 0;
  424. display: flex;
  425. justify-content: center;
  426. align-items: center;
  427. backdrop-filter: blur(5px);
  428. background-color: rgba(255, 255, 255, 0.3);
  429. .info-item {
  430. // flex: 1;
  431. padding: 0 78px;
  432. position: relative;
  433. text-align: center;
  434. }
  435. .info-item:not(:last-child)::after {
  436. content: '';
  437. position: absolute;
  438. top: 50%;
  439. right: 0;
  440. width: 1px;
  441. height: 20px;
  442. background-color: #ccc;
  443. transform: translateY(-50%);
  444. }
  445. .number {
  446. color: #0066cc;
  447. font-weight: bold;
  448. font-size: 32px;
  449. vertical-align: middle;
  450. margin: 0 5px;
  451. }
  452. .text {
  453. font-size: 18px;
  454. font-weight: 400;
  455. color: #333;
  456. margin: 0;
  457. display: inline-block;
  458. }
  459. }
  460. // 产品中心
  461. .products-section {
  462. background: url('@assets/index-products-bg.png') no-repeat center center;
  463. background-size: cover;
  464. padding: 80px 0;
  465. position: relative;
  466. .section-header {
  467. text-align: center;
  468. margin-bottom: 60px;
  469. .section-title {
  470. font-size: 42px;
  471. font-weight: bold;
  472. color: #333;
  473. margin: 0 0 20px 0;
  474. }
  475. .section-subtitle {
  476. font-size: 16px;
  477. color: #999;
  478. margin: 0 0 20px 0;
  479. letter-spacing: 2px;
  480. text-transform: uppercase;
  481. }
  482. .section-description {
  483. font-size: 18px;
  484. color: #666;
  485. margin: 0;
  486. line-height: 1.6;
  487. }
  488. }
  489. .products-content {
  490. display: flex;
  491. gap: 60px;
  492. align-items: flex-start;
  493. }
  494. .products-nav {
  495. flex: 0 0 22%;
  496. .nav-item {
  497. height: 100px;
  498. line-height: 100px;
  499. padding: 0 30px;
  500. margin-bottom: 2px;
  501. cursor: pointer;
  502. font-size: 24px;
  503. font-weight: 500;
  504. color: #343434;
  505. transition: all 0.3s ease;
  506. // border-radius: 8px;
  507. box-sizing: border-box;
  508. &:hover {
  509. background: rgba(0, 102, 204, 0.1);
  510. border-color: #0066cc;
  511. color: #0066cc;
  512. }
  513. &.active {
  514. background: linear-gradient(to right, #CAE0FF, #E5F0FF);
  515. color: #0054FF;
  516. // border-color: #0066cc;
  517. // box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
  518. }
  519. }
  520. }
  521. .product-detail {
  522. flex: 1;
  523. .detail-content {
  524. flex: 1;
  525. .product-title {
  526. font-size: 36px;
  527. font-weight: bold;
  528. color: #333;
  529. margin: 0 0 20px 0;
  530. }
  531. .product-description {
  532. font-size: 24px;
  533. color: #333;
  534. line-height: 1.5;
  535. margin-bottom: 35px;
  536. }
  537. }
  538. .detail-image {
  539. img {
  540. width: 100%;
  541. object-fit: cover;
  542. border-radius: 8px;
  543. box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  544. }
  545. }
  546. }
  547. }
  548. // 行业案例
  549. .cases-section {
  550. background: url('@assets/index-cases-bg.png') no-repeat center center;
  551. background-size: cover;
  552. padding: 80px 0;
  553. position: relative;
  554. .section-header {
  555. text-align: center;
  556. margin-bottom: 60px;
  557. .section-title {
  558. font-size: 42px;
  559. font-weight: bold;
  560. color: #333;
  561. margin: 0 0 20px 0;
  562. }
  563. .section-subtitle {
  564. font-size: 16px;
  565. color: #999;
  566. margin: 0 0 20px 0;
  567. letter-spacing: 2px;
  568. text-transform: uppercase;
  569. }
  570. .section-description {
  571. font-size: 18px;
  572. color: #666;
  573. margin: 0;
  574. line-height: 1.6;
  575. }
  576. }
  577. .cases-carousel {
  578. position: relative;
  579. display: flex;
  580. align-items: center;
  581. gap: 30px;
  582. }
  583. .nav-arrow {
  584. width: 60px;
  585. height: 60px;
  586. border-radius: 50%;
  587. background: rgba(255, 255, 255, 0.9);
  588. display: flex;
  589. align-items: center;
  590. justify-content: center;
  591. cursor: pointer;
  592. transition: all 0.3s ease;
  593. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  594. flex-shrink: 0;
  595. &:hover {
  596. background: rgba(255, 255, 255, 1);
  597. box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
  598. }
  599. &.disabled {
  600. opacity: 0.3;
  601. cursor: not-allowed;
  602. pointer-events: none;
  603. }
  604. .arrow-icon {
  605. width: 24px;
  606. height: 24px;
  607. display: flex;
  608. align-items: center;
  609. justify-content: center;
  610. img {
  611. width: 100%;
  612. height: 100%;
  613. object-fit: contain;
  614. }
  615. }
  616. &.nav-arrow-left .arrow-icon {
  617. transform: rotate(180deg);
  618. }
  619. }
  620. .cases-container {
  621. flex: 1;
  622. overflow: hidden;
  623. border-radius: 12px;
  624. }
  625. .cases-wrapper {
  626. display: flex;
  627. transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  628. width: 100%;
  629. }
  630. .case-item {
  631. flex: 0 0 calc(100% / 3);
  632. padding: 0 15px;
  633. box-sizing: border-box;
  634. .case-image {
  635. width: 100%;
  636. height: 200px;
  637. border-radius: 12px 12px 0 0;
  638. overflow: hidden;
  639. img {
  640. width: 100%;
  641. height: 100%;
  642. object-fit: cover;
  643. transition: transform 0.3s ease;
  644. }
  645. &:hover img {
  646. transform: scale(1.05);
  647. }
  648. }
  649. .case-content {
  650. background: rgba(255, 255, 255, 0.95);
  651. padding: 25px;
  652. box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  653. backdrop-filter: blur(10px);
  654. border-radius: 0 0 12px 12px;
  655. .case-title {
  656. text-align: center;
  657. font-size: 20px;
  658. font-weight: bold;
  659. color: #333;
  660. margin: 0 0 15px 0;
  661. line-height: 1.4;
  662. }
  663. .case-description {
  664. font-size: 14px;
  665. color: #666;
  666. line-height: 1.6;
  667. margin: 0;
  668. }
  669. }
  670. }
  671. }
  672. // 企业简介
  673. .about-section {
  674. background: url('@assets/index-about-bg.png') no-repeat center center;
  675. background-size: cover;
  676. padding: 80px 0;
  677. position: relative;
  678. .section-header {
  679. text-align: center;
  680. margin-bottom: 60px;
  681. .section-title {
  682. font-size: 42px;
  683. font-weight: bold;
  684. color: #333;
  685. margin: 0 0 20px 0;
  686. }
  687. .section-subtitle {
  688. font-size: 16px;
  689. color: #999;
  690. margin: 0 0 20px 0;
  691. letter-spacing: 2px;
  692. text-transform: uppercase;
  693. }
  694. }
  695. .about-content {
  696. // max-width: 1200px;
  697. margin: 0 auto;
  698. }
  699. .about-tabs {
  700. display: flex;
  701. justify-content: space-between;
  702. // gap: 0;
  703. margin-bottom: 95px;
  704. .tab-item {
  705. flex: 0 0 400px;
  706. height: 66px;
  707. line-height: 66px;
  708. text-align: center;
  709. font-size: 30px;
  710. font-weight: 500;
  711. color: #333;
  712. // background: rgba(255, 255, 255, 0.8);
  713. // border: 2px solid #E5E5E5;
  714. border-radius: 5px;
  715. cursor: pointer;
  716. transition: all 0.3s ease;
  717. position: relative;
  718. // &:first-child {
  719. // border-radius: 8px 0 0 8px;
  720. // }
  721. // &:last-child {
  722. // border-radius: 0 8px 8px 0;
  723. // }
  724. // &:not(:last-child) {
  725. // border-right: none;
  726. // }
  727. &:hover {
  728. background: rgba(0, 102, 204, 0.1);
  729. color: #0066cc;
  730. border-color: #0066cc;
  731. z-index: 2;
  732. }
  733. &.active {
  734. background: #0066cc;
  735. color: white;
  736. border-color: #0066cc;
  737. z-index: 3;
  738. box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
  739. }
  740. }
  741. }
  742. .about-detail {
  743. // background: rgba(255, 255, 255, 0.95);
  744. border-radius: 16px;
  745. padding: 40px 0;
  746. // box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
  747. // backdrop-filter: blur(10px);
  748. min-height: 400px;
  749. }
  750. .detail-content {
  751. display: flex;
  752. gap: 110px;
  753. align-items: flex-start;
  754. .content-left {
  755. flex: 0 0 800px;
  756. img {
  757. width: 100%;
  758. height: 480px;
  759. object-fit: cover;
  760. border-radius: 12px;
  761. box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  762. }
  763. }
  764. .content-right {
  765. flex: 1;
  766. .content-title {
  767. font-size: 28px;
  768. font-weight: bold;
  769. color: #333;
  770. margin: 0 0 25px 0;
  771. }
  772. .content-description {
  773. font-size: 16px;
  774. color: #666;
  775. line-height: 1.8;
  776. margin-bottom: 30px;
  777. p {
  778. margin: 0 0 15px 0;
  779. &:last-child {
  780. margin-bottom: 0;
  781. }
  782. }
  783. strong {
  784. color: #0066cc;
  785. font-weight: 600;
  786. }
  787. }
  788. .content-action {
  789. .learn-more-btn {
  790. background: transparent;
  791. color: #0054FF;
  792. border: 1px solid #0054FF;
  793. padding: 12px 30px;
  794. border-radius: 5px;
  795. font-size: 16px;
  796. font-weight: 500;
  797. cursor: pointer;
  798. transition: all 0.3s ease;
  799. box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
  800. &:hover {
  801. transform: translateY(-2px);
  802. box-shadow: 0 6px 20px rgba(0, 102, 204, 0.4);
  803. }
  804. &:active {
  805. transform: translateY(0);
  806. }
  807. }
  808. }
  809. }
  810. }
  811. }
  812. // 合作伙伴
  813. .cooperation-section {
  814. // background: url('@assets/index-cooperation-bg.png') no-repeat center center;
  815. background-size: cover;
  816. padding: 80px 0;
  817. position: relative;
  818. &::before{
  819. position: absolute;
  820. content: '';
  821. width: 1346px;
  822. height: 335px;
  823. right: 150px;
  824. top: 0;
  825. background: url('@assets/index-cooperation-bg.png') no-repeat center center;;
  826. background-size: contain;
  827. }
  828. .section-header {
  829. text-align: center;
  830. margin-bottom: 60px;
  831. .section-title {
  832. font-size: 42px;
  833. font-weight: bold;
  834. color: #333;
  835. margin: 0 0 20px 0;
  836. }
  837. .section-subtitle {
  838. font-size: 16px;
  839. color: #999;
  840. margin: 0 0 185px 0;
  841. letter-spacing: 2px;
  842. text-transform: uppercase;
  843. }
  844. }
  845. .partners-grid {
  846. display: flex;
  847. flex-wrap: wrap;
  848. justify-content: center;
  849. gap: 30px;
  850. // max-width: 1000px;
  851. margin: 0 auto;
  852. .partner-item {
  853. display: flex;
  854. align-items: center;
  855. justify-content: center;
  856. width: 214px;
  857. height: 84px;
  858. background: rgba(255, 255, 255, 0.9);
  859. border: 2px solid #E5E5E5;
  860. border-radius: 8px;
  861. transition: all 0.3s ease;
  862. text-decoration: none;
  863. backdrop-filter: blur(5px);
  864. overflow: hidden;
  865. &:hover {
  866. background: rgba(255, 255, 255, 1);
  867. border-color: #0066cc;
  868. transform: translateY(-5px);
  869. box-shadow: 0 8px 25px rgba(0, 102, 204, 0.15);
  870. }
  871. img {
  872. max-width: 100%;
  873. max-height: 84px;
  874. object-fit: contain;
  875. // filter: grayscale(100%);
  876. transition: filter 0.3s ease;
  877. }
  878. &:hover img {
  879. filter: grayscale(0%);
  880. }
  881. }
  882. }
  883. }
  884. // 切换动画
  885. .fade-slide-enter-active,
  886. .fade-slide-leave-active {
  887. transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  888. }
  889. .fade-slide-enter-from {
  890. opacity: 0;
  891. transform: translateX(30px);
  892. }
  893. .fade-slide-leave-to {
  894. opacity: 0;
  895. transform: translateX(-30px);
  896. }
  897. // 响应式设计
  898. @media (max-width: 768px) {
  899. .cooperation-section{
  900. &::before{
  901. width: 0;
  902. }
  903. .section-header{
  904. .section-subtitle{
  905. margin-bottom: 10px;
  906. }
  907. }
  908. }
  909. .info-row{
  910. .info-item{
  911. padding: 0 10px;
  912. }
  913. .text{
  914. font-size: 14px;
  915. }
  916. .number{
  917. font-size: 14px;
  918. }
  919. }
  920. .products-section {
  921. padding: 40px 0;
  922. .section-header {
  923. margin-bottom: 40px;
  924. .section-title {
  925. font-size: 32px;
  926. }
  927. }
  928. .products-content {
  929. flex-direction: column;
  930. gap: 0;
  931. }
  932. .products-nav {
  933. flex: none;
  934. display: flex;
  935. overflow-x: auto;
  936. gap: 10px;
  937. padding-bottom: 10px;
  938. flex-wrap: wrap;
  939. .nav-item {
  940. flex: 0 0 auto;
  941. white-space: nowrap;
  942. padding: 15px 20px;
  943. font-size: 16px;
  944. height: auto;
  945. line-height: 1;
  946. }
  947. }
  948. .product-detail {
  949. flex-direction: column;
  950. padding: 30px 20px;
  951. .detail-image {
  952. flex: none;
  953. width: 100%;
  954. img {
  955. height: 200px;
  956. }
  957. }
  958. }
  959. }
  960. .cases-section {
  961. padding: 40px 0;
  962. .section-header {
  963. margin-bottom: 40px;
  964. .section-title {
  965. font-size: 32px;
  966. }
  967. }
  968. .cases-carousel {
  969. gap: 15px;
  970. }
  971. .nav-arrow {
  972. width: 50px;
  973. height: 50px;
  974. .arrow-icon {
  975. width: 20px;
  976. height: 20px;
  977. }
  978. }
  979. .case-item {
  980. flex: 0 0 100%;
  981. padding: 0 10px;
  982. .case-image {
  983. height: 180px;
  984. margin-bottom: 15px;
  985. }
  986. .case-content {
  987. padding: 20px;
  988. .case-title {
  989. font-size: 18px;
  990. margin-bottom: 12px;
  991. }
  992. .case-description {
  993. font-size: 13px;
  994. }
  995. }
  996. }
  997. }
  998. .about-section {
  999. padding: 40px 0;
  1000. .section-header {
  1001. margin-bottom: 40px;
  1002. .section-title {
  1003. font-size: 32px;
  1004. }
  1005. }
  1006. .about-tabs {
  1007. flex-direction: column;
  1008. gap: 2px;
  1009. margin-bottom: 30px;
  1010. .tab-item {
  1011. flex: none;
  1012. border-radius: 8px !important;
  1013. border: 2px solid #E5E5E5 !important;
  1014. margin-bottom: 2px;
  1015. font-size: 16px;
  1016. height: 50px;
  1017. line-height: 50px;
  1018. }
  1019. }
  1020. .about-detail {
  1021. padding: 25px 20px;
  1022. margin: 0 15px;
  1023. }
  1024. .detail-content {
  1025. flex-direction: column;
  1026. gap: 25px;
  1027. .content-left {
  1028. flex: none;
  1029. width: 100%;
  1030. img {
  1031. height: 200px;
  1032. }
  1033. }
  1034. .content-right {
  1035. .content-title {
  1036. font-size: 24px;
  1037. margin-bottom: 20px;
  1038. }
  1039. .content-description {
  1040. font-size: 15px;
  1041. margin-bottom: 25px;
  1042. }
  1043. .content-action {
  1044. text-align: center;
  1045. .learn-more-btn {
  1046. padding: 10px 25px;
  1047. font-size: 15px;
  1048. }
  1049. }
  1050. }
  1051. }
  1052. }
  1053. .cooperation-section {
  1054. padding: 40px 0;
  1055. .section-header {
  1056. margin-bottom: 40px;
  1057. .section-title {
  1058. font-size: 32px;
  1059. }
  1060. }
  1061. .partners-grid {
  1062. gap: 20px;
  1063. margin: 0 20px;
  1064. .partner-item {
  1065. width: calc(50% - 10px);
  1066. height: 80px;
  1067. padding: 15px;
  1068. img {
  1069. max-height: 50px;
  1070. }
  1071. }
  1072. }
  1073. }
  1074. }
  1075. </style>