Index.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <template>
  2. <div id="Solutions">
  3. <!-- Banner -->
  4. <div class="banner container-fuild text-center">
  5. <h1>解决方案</h1>
  6. <p>无人机行业应用解决方案</p>
  7. </div>
  8. <!-- 解决方案列表 -->
  9. <div class="l-container l-section">
  10. <div class="section-header">
  11. <div class="section-tag">
  12. <span class="tag-dot"></span>
  13. <span>SOLUTIONS</span>
  14. </div>
  15. <h2 class="section-title">我们的解决方案</h2>
  16. <p class="section-subtitle">Professional Solutions</p>
  17. </div>
  18. <div class="solutions-grid">
  19. <router-link
  20. v-for="(item, index) in solutionsList"
  21. :key="index"
  22. :to="item.path"
  23. class="solution-card"
  24. >
  25. <div class="solution-image">
  26. <img :src="item.image" :alt="item.title">
  27. <div class="solution-overlay">
  28. <i class="solution-icon glyphicon glyphicon-link"></i>
  29. </div>
  30. </div>
  31. <div class="solution-content">
  32. <h3>{{ item.title }}</h3>
  33. <p>{{ item.description }}</p>
  34. </div>
  35. </router-link>
  36. </div>
  37. </div>
  38. </div>
  39. </template>
  40. <script>
  41. import {WOW} from 'wowjs';
  42. export default {
  43. name: 'Solutions',
  44. data() {
  45. return {
  46. solutionsList: [
  47. {
  48. path: '/solutions/surveying',
  49. title: '基础测绘',
  50. description: '快速进行大范围二维、三维建模,生成地形数据,降低外业成本',
  51. image: require('@/assets/img/service1.jpg')
  52. },
  53. {
  54. path: '/solutions/building',
  55. title: '建筑工程',
  56. description: '房屋建筑业(房建)和土木工程建筑业(基建)领域应用',
  57. image: require('@/assets/img/service2.jpg')
  58. },
  59. {
  60. path: '/solutions/safety',
  61. title: '安全生产',
  62. description: '提供可见光或红外热成像数据,全天候自动化安全巡检',
  63. image: require('@/assets/img/service3.jpg')
  64. },
  65. {
  66. path: '/solutions/emergency-rescue',
  67. title: '应急救援',
  68. description: '救援队伍使用无人机通过空中视角对灾情进行评估、研判',
  69. image: require('@/assets/img/service4.jpg')
  70. }
  71. ]
  72. };
  73. },
  74. mounted() {
  75. var wow = new WOW();
  76. wow.init();
  77. }
  78. };
  79. </script>
  80. <style scoped>
  81. /* Banner */
  82. .banner {
  83. color: #fff;
  84. height: 200px;
  85. display: flex;
  86. flex-direction: column;
  87. justify-content: center;
  88. align-items: center;
  89. background-image: url("../../assets/img/banner_4.jpg");
  90. background-repeat: no-repeat;
  91. background-size: cover;
  92. background-attachment: scroll;
  93. background-position: center center;
  94. }
  95. .banner h1 {
  96. font-size: 36px;
  97. font-weight: var(--font-weight-bold);
  98. margin: 0 0 10px;
  99. letter-spacing: 2px;
  100. }
  101. .banner p {
  102. font-size: 16px;
  103. color: rgba(255, 255, 255, 0.8);
  104. margin: 0;
  105. letter-spacing: 1px;
  106. }
  107. /* 解决方案网格 */
  108. .solutions-grid {
  109. display: grid;
  110. grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  111. gap: 30px;
  112. margin-top: 40px;
  113. }
  114. .solution-card {
  115. display: block;
  116. background: #fff;
  117. border-radius: var(--radius-lg);
  118. overflow: hidden;
  119. box-shadow: var(--shadow-md);
  120. transition: var(--transition-bounce);
  121. text-decoration: none;
  122. color: inherit;
  123. }
  124. .solution-card:hover {
  125. transform: translateY(-10px);
  126. box-shadow: var(--shadow-lg), var(--glow-blue);
  127. }
  128. .solution-image {
  129. position: relative;
  130. height: 200px;
  131. overflow: hidden;
  132. }
  133. .solution-image img {
  134. width: 100%;
  135. height: 100%;
  136. object-fit: cover;
  137. transition: transform 0.5s ease;
  138. }
  139. .solution-card:hover .solution-image img {
  140. transform: scale(1.1);
  141. }
  142. .solution-overlay {
  143. position: absolute;
  144. top: 0;
  145. left: 0;
  146. width: 100%;
  147. height: 100%;
  148. background: rgba(30, 115, 190, 0.8);
  149. display: flex;
  150. align-items: center;
  151. justify-content: center;
  152. opacity: 0;
  153. transition: opacity 0.3s ease;
  154. }
  155. .solution-card:hover .solution-overlay {
  156. opacity: 1;
  157. }
  158. .solution-icon {
  159. color: #fff;
  160. font-size: 32px;
  161. }
  162. .solution-content {
  163. padding: 25px;
  164. }
  165. .solution-content h3 {
  166. font-size: 20px;
  167. font-weight: var(--font-weight-semibold);
  168. color: var(--text-primary);
  169. margin: 0 0 12px;
  170. }
  171. .solution-content p {
  172. font-size: 14px;
  173. line-height: 1.6;
  174. color: var(--text-tertiary);
  175. margin: 0;
  176. display: -webkit-box;
  177. -webkit-line-clamp: 2;
  178. -webkit-box-orient: vertical;
  179. overflow: hidden;
  180. }
  181. /* 响应式 */
  182. @media screen and (max-width: 991px) {
  183. .banner {
  184. height: 150px;
  185. }
  186. .banner h1 {
  187. font-size: 28px;
  188. }
  189. .solutions-grid {
  190. grid-template-columns: repeat(2, 1fr);
  191. }
  192. }
  193. @media screen and (max-width: 767px) {
  194. .banner {
  195. height: 120px;
  196. }
  197. .banner h1 {
  198. font-size: 24px;
  199. }
  200. .banner p {
  201. font-size: 14px;
  202. }
  203. .solutions-grid {
  204. grid-template-columns: 1fr;
  205. }
  206. }
  207. </style>