HomePage.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863
  1. <template>
  2. <div class="home container">
  3. <div class="part1">
  4. <div class="part1-1">
  5. <div class="part1-1-1">
  6. <div class="number-container">
  7. <span class="text">调用总数</span>
  8. <span v-for="(num, index) in totalCall" :key="index">
  9. <span v-if="num.indexOf(',') > -1">
  10. <span class="separator">,</span>
  11. </span>
  12. <span v-else>
  13. <span class="number-item">{{ num }}</span>
  14. </span>
  15. </span>
  16. <span class="text">次</span>
  17. </div>
  18. </div>
  19. <div class="part1-1-2">
  20. <div class="call-count-container">
  21. <div class="line"></div>
  22. <div>
  23. <span class="text1">当日调用量</span>
  24. <span class="count">{{ todayCall }}</span>
  25. <span class="text2">次</span>
  26. </div>
  27. <div class="line"></div>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="part1-2">
  32. <div class="part1-2-1">
  33. <div>服务总数</div>
  34. <div>{{ serveNum }}个</div>
  35. </div>
  36. <div class="part1-2-2">
  37. <div>授权用户数</div>
  38. <div>{{ userNum }}个</div>
  39. </div>
  40. <div class="part1-2-3">
  41. <div>授权应用数</div>
  42. <div>{{ appNum }}个</div>
  43. </div>
  44. </div>
  45. <div class="part1-3">
  46. <div id="echart1"></div>
  47. </div>
  48. </div>
  49. <div class="part2">
  50. <div class="chapter">核心服务</div>
  51. <div class="row">
  52. <div class="service">
  53. <h2 class="title yellow">空间数据查询</h2>
  54. <p>
  55. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  56. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  57. </p>
  58. </div>
  59. <div class="service">
  60. <h2 class="title gray">数据分析</h2>
  61. <p>
  62. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  63. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  64. </p>
  65. </div>
  66. <div class="service">
  67. <h2 class="title blue">可视化服务</h2>
  68. <p>
  69. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  70. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  71. </p>
  72. </div>
  73. </div>
  74. <div class="row">
  75. <div class="service">
  76. <h2 class="title orange">空间数据查询</h2>
  77. <p>
  78. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  79. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  80. </p>
  81. </div>
  82. <div class="service">
  83. <h2 class="title green">数据分析</h2>
  84. <p>
  85. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  86. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  87. </p>
  88. </div>
  89. <div class="service">
  90. <h2 class="title yellow-green">可视化服务</h2>
  91. <p>
  92. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  93. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  94. </p>
  95. </div>
  96. </div>
  97. </div>
  98. <div class="part3">
  99. <div class="container">
  100. <h1>二三维一体化引擎</h1>
  101. <p>
  102. GIS 通用计算功能,实用便捷超乎想象!
  103. <br />测距、剖面分析及点线面绘制轻松实现,坐标转换精准高效,路径规划快速准确,地名搜索智能推荐
  104. </p>
  105. <el-button type="primary" size="large" @click="gotoDetail">了解更多</el-button>
  106. </div>
  107. </div>
  108. <div class="part4">
  109. <div class="chapter">实践与探索</div>
  110. <div class="row">
  111. <div class="service">
  112. <h2 class="title yellow">空间数据查询</h2>
  113. <p>
  114. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  115. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  116. </p>
  117. <el-button size="large" link>了解详情→</el-button>
  118. </div>
  119. <div class="service">
  120. <h2 class="title gray">数据分析</h2>
  121. <p>
  122. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  123. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  124. </p>
  125. <el-button size="large" link>了解详情→</el-button>
  126. </div>
  127. <div class="service">
  128. <h2 class="title blue">可视化服务</h2>
  129. <p>
  130. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  131. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  132. </p>
  133. <el-button size="large" link>了解详情→</el-button>
  134. </div>
  135. </div>
  136. <div class="row">
  137. <div class="service">
  138. <h2 class="title orange">空间数据查询</h2>
  139. <p>
  140. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  141. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  142. </p>
  143. <el-button size="large" link>了解详情→</el-button>
  144. </div>
  145. <div class="service">
  146. <h2 class="title green">数据分析</h2>
  147. <p>
  148. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  149. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  150. </p>
  151. <el-button size="large" link>了解详情→</el-button>
  152. </div>
  153. <div class="service">
  154. <h2 class="title yellow-green">可视化服务</h2>
  155. <p>
  156. 空间数据查询是从空间数据集中检索特定信息的操作。它可在关系型数据库如MySQL和SQL
  157. Server中进行,也能在NoSQL数据库如MongoDB里实现。通过特定函数和方法,能快速找到符合条件的数据,为地理信息等领域提供重要支持。
  158. </p>
  159. <el-button size="large" link>了解详情→</el-button>
  160. </div>
  161. </div>
  162. </div>
  163. <div class="part5">
  164. <div class="chapter">应用案例</div>
  165. <div class="part5-1">
  166. <div class="part5-1-1">
  167. <div>
  168. <p>545</p>
  169. 万次
  170. </div>
  171. <div>地址</div>
  172. </div>
  173. <div class="part5-1-2">
  174. <div>
  175. <p>319</p>
  176. </div>
  177. <div>应用场景</div>
  178. </div>
  179. <div class="part5-1-3">
  180. <div>
  181. <p>230</p>
  182. 万条
  183. </div>
  184. <div>服务人数</div>
  185. </div>
  186. </div>
  187. <div class="part5-2">
  188. <div class="tab-container">
  189. <div
  190. v-for="item in tabs"
  191. :key="item.key"
  192. @click="currentTab = item.key"
  193. :class="{ 'tab-item': true, 'tab-item-active': currentTab === item.key }"
  194. >
  195. <!-- <span class="tab-icon">{{ item.icon }}</span> -->
  196. <span class="tab-title">{{ item.title }}</span>
  197. </div>
  198. </div>
  199. <div class="row">
  200. <div class="service">
  201. <div class="content">
  202. <div class="tag">盈港街道、夏阳街道</div>
  203. <h2 class="title">上海市青浦区教育局·学区查询</h2>
  204. <p>
  205. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod
  206. bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra
  207. justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus
  208. et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum,
  209. nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus
  210. pronin sapien nunc accuan eget.
  211. </p>
  212. </div>
  213. </div>
  214. <div class="service">
  215. <div class="content">
  216. <div class="tag">全区、快递实验室</div>
  217. <h2 class="title">上海市青浦区快递实验室</h2>
  218. <p>
  219. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod
  220. bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra
  221. justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus
  222. et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum,
  223. nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus
  224. pronin sapien nunc accuan eget.
  225. </p>
  226. </div>
  227. </div>
  228. </div>
  229. <div class="row">
  230. <div class="service">
  231. <div class="content">
  232. <div class="tag">盈港街道、夏阳街道</div>
  233. <h2 class="title">上海市青浦区教育局·学区查询</h2>
  234. <p>
  235. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod
  236. bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra
  237. justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus
  238. et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum,
  239. nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus
  240. pronin sapien nunc accuan eget.
  241. </p>
  242. </div>
  243. </div>
  244. <div class="service">
  245. <div class="content">
  246. <div class="tag">全区、快递实验室</div>
  247. <h2 class="title">上海市青浦区快递实验室</h2>
  248. <p>
  249. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod
  250. bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra
  251. justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus
  252. et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum,
  253. nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus
  254. pronin sapien nunc accuan eget.
  255. </p>
  256. </div>
  257. </div>
  258. </div>
  259. </div>
  260. </div>
  261. </div>
  262. </template>
  263. <script>
  264. import * as echarts from "echarts";
  265. export default {
  266. name: "Home",
  267. data() {
  268. return {
  269. todayCall: "857,605",
  270. totalCall: [],
  271. serveNum: 456,
  272. userNum: 17,
  273. appNum: 43,
  274. currentTab: "data-governance", // 初始选中项
  275. tabs: [
  276. { key: "data-governance", icon: "", title: "数据治理" },
  277. { key: "business-app", icon: "", title: "业务应用" },
  278. { key: "comprehensive-decision", icon: "", title: "综合决策" },
  279. ],
  280. };
  281. },
  282. mounted() {
  283. this.handleTotalCallNumber(667507060);
  284. this.setChart();
  285. },
  286. methods: {
  287. gotoDetail() {
  288. this.$router.push({
  289. path: "/sksjgl",
  290. });
  291. },
  292. // 处理调用总数数字
  293. handleTotalCallNumber(num) {
  294. // 667507060
  295. let str = num.toString();
  296. let strArr = str.split("").reverse();
  297. this.totalCall = [];
  298. for (let i = 0; i < strArr.length; i++) {
  299. const num = strArr[i];
  300. this.totalCall.unshift(num);
  301. if (i % 3 == 2 && i != strArr.length - 1) {
  302. this.totalCall.unshift(",");
  303. }
  304. }
  305. },
  306. setChart() {
  307. // 基于准备好的dom,初始化echarts实例
  308. var myChart = echarts.init(document.getElementById("echart1"));
  309. let option = {
  310. tooltip: {
  311. trigger: "axis", // 坐标轴触发提示
  312. axisPointer: { type: "shadow" },
  313. },
  314. legend: {
  315. data: ["tokyo", "london"],
  316. textStyle: { color: "#fff" }, // 图例文字颜色
  317. },
  318. xAxis: {
  319. type: "category",
  320. data: [
  321. "Jan",
  322. "Feb",
  323. "Mar",
  324. "Apr",
  325. "May",
  326. "Jun",
  327. "Jul",
  328. "Aug",
  329. "Sep",
  330. "Oct",
  331. "Nov",
  332. ],
  333. axisLine: { lineStyle: { color: "#fff" } }, // 坐标轴颜色
  334. axisTick: { show: false }, // 隐藏刻度
  335. splitLine: { show: false }, // 隐藏分割线
  336. },
  337. yAxis: {
  338. type: "value",
  339. max: 30,
  340. axisLine: { lineStyle: { color: "#fff" } },
  341. splitLine: {
  342. lineStyle: {
  343. type: "dashed", // 虚线网格
  344. color: "#fff",
  345. },
  346. },
  347. },
  348. series: [
  349. {
  350. name: "tokyo",
  351. type: "line",
  352. data: [7, 7, 15, 19, 21, 22, 25, 26, 23, 19, 12], // 模拟数据
  353. lineStyle: { color: "#42a5f5" }, // 蓝色线条
  354. itemStyle: { color: "#42a5f5" }, // 节点颜色
  355. symbol: "circle", // 节点形状
  356. symbolSize: 6, // 节点大小
  357. },
  358. {
  359. name: "london",
  360. type: "line",
  361. data: [3, 3, 6, 12, 15, 17, 18, 17, 14, 10, 6], // 模拟数据
  362. lineStyle: { color: "#4caf50" }, // 绿色线条
  363. itemStyle: { color: "#4caf50" },
  364. symbol: "circle",
  365. symbolSize: 6,
  366. },
  367. ],
  368. };
  369. // 绘制图表
  370. myChart.setOption(option);
  371. },
  372. },
  373. };
  374. </script>
  375. <style lang="less" scoped>
  376. .container {
  377. width: 1920px;
  378. margin: 0 auto;
  379. }
  380. .home {
  381. position: relative;
  382. .part1 {
  383. height: 810px;
  384. background: url(~@/assets/images/common/home-bg1.png) no-repeat;
  385. position: relative;
  386. overflow: hidden;
  387. .part1-1 {
  388. width: 1000px;
  389. height: 200px;
  390. background: #09284c;
  391. margin: 0 auto;
  392. margin-top: 30px;
  393. overflow: hidden;
  394. .part1-1-1 {
  395. height: 70px;
  396. width: fit-content;
  397. margin: 0 auto;
  398. margin-top: 30px;
  399. .number-container {
  400. display: flex;
  401. align-items: flex-start;
  402. font-size: 2em;
  403. }
  404. .number-item {
  405. width: 57px;
  406. height: 70px;
  407. background-color: #007bff;
  408. color: white;
  409. display: flex;
  410. justify-content: center;
  411. align-items: center;
  412. margin-right: 20px;
  413. font-size: 44px;
  414. line-height: 70px;
  415. font-weight: bold;
  416. }
  417. .separator {
  418. margin-right: 20px;
  419. font-size: 35px;
  420. text-align: end;
  421. color: #ffffff;
  422. }
  423. .text {
  424. font-size: 24px;
  425. line-height: 70px;
  426. margin-right: 20px;
  427. color: #ffffff;
  428. font-weight: bold;
  429. }
  430. }
  431. .part1-1-2 {
  432. height: 50px;
  433. width: 700px;
  434. margin: 0 auto;
  435. margin-top: 30px;
  436. background: #8080804d;
  437. border-radius: 5px;
  438. line-height: 50px;
  439. div {
  440. display: inline-block;
  441. vertical-align: top;
  442. &.line {
  443. height: 2px;
  444. background: #808080;
  445. width: 100px;
  446. margin: 24px 20px;
  447. margin-right: 20px;
  448. }
  449. &:nth-child(2) {
  450. width: 420px;
  451. text-align: center;
  452. color: #ffffff;
  453. font-size: 20px;
  454. font-weight: bold;
  455. .text1 {
  456. margin-right: 20px;
  457. }
  458. .text2 {
  459. margin-left: 20px;
  460. }
  461. }
  462. &:nth-child(4) {
  463. float: right;
  464. }
  465. }
  466. }
  467. }
  468. .part1-2 {
  469. color: #ffffff;
  470. margin-top: 20px;
  471. .part1-2-1,
  472. .part1-2-2,
  473. .part1-2-3 {
  474. display: inline-block;
  475. text-align: center;
  476. font-weight: bold;
  477. width: calc(100% / 3);
  478. div:nth-child(1) {
  479. font-size: 24px;
  480. }
  481. div:nth-child(2) {
  482. margin-top: 10px;
  483. font-size: 32px;
  484. }
  485. }
  486. }
  487. .part1-3 {
  488. margin-top: 20px;
  489. height: 450px;
  490. overflow: hidden;
  491. #echart1 {
  492. width: 100%;
  493. height: 100%;
  494. }
  495. }
  496. }
  497. .part2 {
  498. background: #08224a;
  499. padding-bottom: 1px;
  500. .chapter {
  501. text-align: center;
  502. font-size: 40px;
  503. width: 100%;
  504. height: 80px;
  505. line-height: 80px;
  506. color: #ffffff;
  507. font-weight: bold;
  508. border-bottom: 2px solid gray;
  509. margin-bottom: 20px;
  510. }
  511. .row {
  512. display: flex;
  513. justify-content: space-between;
  514. margin-bottom: 20px;
  515. padding: 0 100px;
  516. }
  517. .service {
  518. flex: 1;
  519. margin: 0 30px;
  520. text-align: center;
  521. }
  522. .title {
  523. position: relative;
  524. padding-bottom: 10px;
  525. margin-bottom: 15px;
  526. height: 50px;
  527. line-height: 90px;
  528. font-size: 30px;
  529. }
  530. .title::before {
  531. content: "";
  532. position: absolute;
  533. left: 0;
  534. right: 0;
  535. top: 0;
  536. height: 15px;
  537. }
  538. .yellow {
  539. color: #f1c40f;
  540. }
  541. .yellow::before {
  542. background-color: #f1c40f;
  543. }
  544. .gray {
  545. color: #bdc3c7;
  546. }
  547. .gray::before {
  548. background-color: #bdc3c7;
  549. }
  550. .blue {
  551. color: #3498db;
  552. }
  553. .blue::before {
  554. background-color: #3498db;
  555. }
  556. .orange {
  557. color: #e67e22;
  558. }
  559. .orange::before {
  560. background-color: #e67e22;
  561. }
  562. .green {
  563. color: #27ae60;
  564. }
  565. .green::before {
  566. background-color: #27ae60;
  567. }
  568. .yellow-green {
  569. color: #b2be2c;
  570. }
  571. .yellow-green::before {
  572. background-color: #b2be2c;
  573. }
  574. p {
  575. font-size: 20px;
  576. line-height: 2;
  577. color: #ffffff;
  578. }
  579. }
  580. .part3 {
  581. .container {
  582. position: relative;
  583. width: 100%;
  584. height: 940px;
  585. background-image: url("~@/assets/images/common/u30.png"); /* 替换为实际图片路径 */
  586. background-size: cover;
  587. background-position: center;
  588. display: flex;
  589. flex-direction: column;
  590. justify-content: center;
  591. align-items: center;
  592. text-align: center;
  593. color: #000000;
  594. font-family: Arial, sans-serif;
  595. overflow: hidden;
  596. }
  597. h1 {
  598. position: absolute;
  599. top: 30px;
  600. font-size: 40px;
  601. font-weight: bold;
  602. }
  603. p {
  604. margin-bottom: 30px;
  605. font-weight: bold;
  606. font-size: 24px;
  607. line-height: 2;
  608. }
  609. .el-button {
  610. position: absolute;
  611. bottom: 150px;
  612. }
  613. }
  614. .part4 {
  615. background: #08224a;
  616. padding-bottom: 1px;
  617. .chapter {
  618. text-align: center;
  619. font-size: 40px;
  620. width: 100%;
  621. height: 80px;
  622. line-height: 80px;
  623. color: #ffffff;
  624. font-weight: bold;
  625. /* border-bottom: 2px solid gray; */
  626. margin-bottom: 20px;
  627. }
  628. .row {
  629. display: flex;
  630. justify-content: space-between;
  631. margin-bottom: 40px;
  632. padding: 0 100px;
  633. }
  634. .service {
  635. flex: 1;
  636. margin: 0 30px;
  637. width: 500px;
  638. height: 320px;
  639. border: 1px solid gray;
  640. border-radius: 8px;
  641. padding: 10px 10px;
  642. box-sizing: border-box;
  643. overflow: hidden;
  644. position: relative;
  645. }
  646. .title {
  647. position: relative;
  648. height: 30px;
  649. line-height: 30px;
  650. font-size: 30px;
  651. text-align: left;
  652. color: #ffffff;
  653. padding-bottom: 20px;
  654. }
  655. p {
  656. text-indent: 2rem;
  657. font-size: 20px;
  658. line-height: 2;
  659. color: #ffffff;
  660. }
  661. .el-button {
  662. position: absolute;
  663. bottom: 10px;
  664. left: 10px;
  665. font-size: 20px;
  666. color: #ffffff;
  667. &:hover {
  668. color: #3498db;
  669. }
  670. }
  671. }
  672. .part5 {
  673. background: #08224a;
  674. padding-bottom: 1px;
  675. .chapter {
  676. text-align: center;
  677. font-size: 40px;
  678. width: 100%;
  679. height: 80px;
  680. line-height: 80px;
  681. color: #ffffff;
  682. font-weight: bold;
  683. /* border-bottom: 2px solid gray; */
  684. margin-bottom: 20px;
  685. }
  686. .part5-1 {
  687. color: #ffffff;
  688. margin-top: 20px;
  689. margin-bottom: 20px;
  690. .part5-1-1,
  691. .part5-1-2,
  692. .part5-1-3 {
  693. display: inline-block;
  694. text-align: center;
  695. font-weight: bold;
  696. width: calc(100% / 3);
  697. div {
  698. font-size: 24px;
  699. }
  700. div:nth-child(2) {
  701. margin-top: 10px;
  702. font-size: 24px;
  703. }
  704. div p {
  705. display: inline-block;
  706. font-size: 40px;
  707. }
  708. }
  709. }
  710. .part5-2 {
  711. margin-top: 40px;
  712. padding-bottom: 1px;
  713. height: fit-content;
  714. .tab-container {
  715. display: flex;
  716. gap: 40px; /* 选项卡间距 */
  717. // border-bottom: 1px solid #eee; /* 可选底部分隔线 */
  718. width: fit-content;
  719. margin: 0 auto;
  720. position: relative;
  721. margin-bottom: 40px;
  722. height: 55px;
  723. }
  724. .tab-container::after {
  725. content: "";
  726. display: block;
  727. height: 1px;
  728. width: 100%;
  729. background: #eeeeee; /* 下划线颜色 */
  730. position: absolute;
  731. bottom: 0;
  732. }
  733. .tab-item {
  734. color: #ffffff;
  735. cursor: pointer;
  736. overflow: hidden;
  737. position: relative;
  738. font-size: 30px;
  739. height: 55px;
  740. }
  741. .tab-item-active {
  742. color: #66f; /* 选中文字颜色 */
  743. }
  744. .tab-item-active::after {
  745. content: "";
  746. display: block;
  747. height: 2px;
  748. width: 100%;
  749. background: #66f; /* 下划线颜色 */
  750. margin-top: 5px;
  751. position: absolute;
  752. bottom: 0;
  753. z-index: 1;
  754. }
  755. .tab-icon {
  756. margin-right: 5px; /* 图标与文字间距 */
  757. }
  758. .row {
  759. display: flex;
  760. justify-content: space-between;
  761. margin-bottom: 40px;
  762. padding: 0 120px;
  763. > :nth-child(1) {
  764. background: url(~@/assets/images/common/u301.png) no-repeat 0 0/100%;
  765. }
  766. > :nth-child(2) {
  767. background: url(~@/assets/images/common/u302.png) no-repeat 0 0/100%;
  768. }
  769. }
  770. .service {
  771. flex: 1;
  772. margin: 0 30px;
  773. height: 660px;
  774. border: 1px solid gray;
  775. border-radius: 10px;
  776. box-sizing: border-box;
  777. overflow: hidden;
  778. position: relative;
  779. .content {
  780. position: absolute;
  781. bottom: 0;
  782. width: 100%;
  783. height: 430px;
  784. background: #ffffff;
  785. border-radius: 10px;
  786. padding: 20px 20px;
  787. box-sizing: border-box;
  788. .tag {
  789. border-width: 0px;
  790. width: 213px;
  791. height: 52px;
  792. line-height: 52px;
  793. text-align: center;
  794. background: inherit;
  795. background-color: rgba(226, 228, 244, 1);
  796. border-radius: 5px;
  797. filter: drop-shadow(none);
  798. transition: none;
  799. font-size: 20px;
  800. color: #7281ee;
  801. margin-bottom: 20px;
  802. }
  803. .title {
  804. position: relative;
  805. height: 30px;
  806. line-height: 30px;
  807. font-size: 30px;
  808. text-align: left;
  809. padding-bottom: 20px;
  810. }
  811. p {
  812. font-size: 20px;
  813. line-height: 1.5;
  814. }
  815. }
  816. }
  817. }
  818. }
  819. }
  820. </style>