index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  1. <template>
  2. <view class="content">
  3. <top-title
  4. :titleValue="title"
  5. :pageScroll="scrollVal"
  6. style="width: 100%"
  7. ></top-title>
  8. <view class="page-section-spacing" style="width: 100%; position: relative">
  9. <swiper
  10. class="swiper"
  11. indicator-dots="false"
  12. autoplay="true"
  13. duration="500"
  14. style="height: 440rpx"
  15. @change="swiperChange"
  16. >
  17. <swiper-item
  18. v-for="(item, index) in swiperList"
  19. :key="index"
  20. class="swiper-content"
  21. >
  22. <image
  23. :src="item.pic_path"
  24. mode="aspectFill"
  25. style="width: 100%; height: 100%"
  26. ></image>
  27. </swiper-item>
  28. </swiper>
  29. <image src="../../static/Intersect.svg" class="groove-img"></image>
  30. <view class="rowDot">
  31. <view v-for="(item, index) in swiperList" :key="index" class="dots">
  32. <view
  33. :class="['dot', index === swiperCurrent ? 'active' : '']"
  34. ></view>
  35. </view>
  36. </view>
  37. </view>
  38. <view class="page-nav-box">
  39. <navigator
  40. v-for="(item, index) in navList"
  41. :key="index"
  42. :url="item.path"
  43. open-type="navigate"
  44. class="nav-content"
  45. >
  46. <image
  47. :src="item.url"
  48. mode="aspectFit"
  49. style="width: 38px; height: 38px"
  50. ></image>
  51. <view>{{ item.content }}</view>
  52. </navigator>
  53. </view>
  54. <view class="notice-box">
  55. <view class="notice-title-box">
  56. <view class="notice-font">通知公告</view>
  57. <view class="notice-more-font">
  58. <view style="margin-right: 8rpx; font-size: 22rpx" @click="goNotice"
  59. >更多</view
  60. >
  61. <image
  62. src="../../static/right-arrow-blue.png"
  63. mode="aspectFill"
  64. style="width: 12rpx; height: 16rpx"
  65. ></image>
  66. </view>
  67. </view>
  68. <view
  69. class="notice-content-box"
  70. style="justify-content: flex-start"
  71. v-for="(item, index) in noticeList"
  72. :key="index"
  73. @click="goNoticeDeatil(item.id)"
  74. >
  75. <image
  76. :src="item.icon"
  77. mode="aspectFit"
  78. style="width: 34px; height: 34px"
  79. ></image>
  80. <view class="notice-content display-around-column" style="width: 88%">
  81. <view class="notice-content-font" style="margin-left: 40rpx">{{
  82. item.title
  83. }}</view>
  84. <view class="notice-content-time" style="margin-left: 40rpx">{{
  85. item.publish_time | globalTime
  86. }}</view>
  87. </view>
  88. </view>
  89. </view>
  90. <view class="notice-box" style="margin-top: 40rpx">
  91. <view class="notice-title-box">
  92. <view class="notice-font">推荐园区</view>
  93. <navigator
  94. class="notice-more-font"
  95. url="../park/index"
  96. open-type="navigate"
  97. >
  98. <view style="margin-right: 8rpx; font-size: 22rpx">更多</view>
  99. <image
  100. src="/static/right-arrow-blue.png"
  101. mode="aspectFill"
  102. style="width: 12rpx; height: 16rpx"
  103. ></image>
  104. </navigator>
  105. </view>
  106. <view
  107. class="display-flex-start"
  108. style="overflow-x: scroll; overflow-y: hidden; position: relative"
  109. >
  110. <view
  111. class="park-box"
  112. v-for="(item, index) in parkList"
  113. :key="item.id"
  114. @click="goParkDetailFn(item.id)"
  115. >
  116. <image
  117. :src="item.park_pics[0].pic_path || '/static/park/1.png'"
  118. mode="aspectFill"
  119. style="
  120. width: 452rpx;
  121. height: 250rpx;
  122. border-radius: 32rpx 32rpx 0 0;
  123. "
  124. ></image>
  125. <view class="park-content-box">
  126. <view class="park-title">{{ item.name }}</view>
  127. <view class="park-address display-flex-start">
  128. <view class="display-flex-start" style="margin-right: 10rpx"
  129. ><image
  130. src="/static/park/park-time.png"
  131. mode="aspectFill"
  132. class="park-title-img"
  133. ></image
  134. >{{ item.addtime | globalTime }}建成</view
  135. >
  136. <view class="display-flex-start"
  137. ><image
  138. src="/static/park/park-name.png"
  139. mode="aspectFill"
  140. class="park-title-img"
  141. ></image
  142. >{{ item.manager }}</view
  143. >
  144. </view>
  145. <view class="park-footer-box display-between">
  146. <view class="display-between-column width-30">
  147. <view class="display-flex-start"
  148. ><image
  149. src="/static/park/park-num.png"
  150. mode="aspectFill"
  151. class="park-footer-img"
  152. ></image
  153. >{{ item.company_count }}</view
  154. >
  155. <view class="park-footer-font">企业数量</view>
  156. </view>
  157. <view class="display-between-column width-30">
  158. <view class="display-flex-start">
  159. <image
  160. src="/static/park/park-area.png"
  161. mode="aspectFill"
  162. class="park-footer-img"
  163. ></image>
  164. {{ item.cover_area
  165. }}<text style="font-size: 12rpx">万㎡</text></view
  166. >
  167. <view class="park-footer-font">占地面积</view>
  168. </view>
  169. <view class="display-between-column width-30">
  170. <view class="display-flex-start">
  171. <image
  172. src="/static/park/park-area2.png"
  173. mode="aspectFill"
  174. class="park-footer-img"
  175. ></image>
  176. {{ item.building_area
  177. }}<text style="font-size: 12rpx">万㎡</text></view
  178. >
  179. <view class="park-footer-font">建设面积</view>
  180. </view>
  181. </view>
  182. </view>
  183. </view>
  184. </view>
  185. </view>
  186. <view class="notice-box" style="margin-top: 20rpx">
  187. <view class="notice-title-box">
  188. <view class="notice-font">招商专区</view>
  189. <view class="notice-more-font">
  190. <view style="margin-right: 8rpx; font-size: 22rpx" @click="goAttract"
  191. >更多</view
  192. >
  193. <image
  194. src="/static/right-arrow-blue.png"
  195. mode="aspectFill"
  196. style="width: 12rpx; height: 16rpx"
  197. ></image>
  198. </view>
  199. </view>
  200. <view
  201. class="notice-content-box"
  202. v-for="(item, index) in attractList"
  203. :key="index"
  204. style="justify-content: start"
  205. @click="goAttractDeatil(item.id)"
  206. >
  207. <image
  208. :src="item.url"
  209. mode="aspectFit"
  210. style="width: 112rpx; height: 112rpx; margin-right: 20rpx"
  211. ></image>
  212. <view class="notice-content">
  213. <view class="notice-content-font">{{ item.title }}</view>
  214. <view class="attract-content">{{ item.subtitle }}</view>
  215. <view class="notice-content-time" style="margin-top: 20rpx">{{
  216. item.time
  217. }}</view>
  218. </view>
  219. </view>
  220. </view>
  221. <view class="notice-box" style="margin-top: 20rpx">
  222. <view class="notice-title-box">
  223. <view class="notice-font">区内活动</view>
  224. <view class="notice-more-font">
  225. <view style="margin-right: 8rpx; font-size: 22rpx" @click="goActive"
  226. >更多</view
  227. >
  228. <image
  229. src="/static/right-arrow-blue.png"
  230. mode="aspectFill"
  231. style="width: 12rpx; height: 16rpx"
  232. ></image>
  233. </view>
  234. </view>
  235. <view
  236. class="notice-content-box"
  237. v-for="(item, index) in activityList"
  238. :key="index"
  239. style="justify-content: start; padding: 30rpx 0 30rpx 30rpx"
  240. @click="goActiveDeatil(item.id)"
  241. >
  242. <image
  243. :src="item.url"
  244. style="
  245. width: 112rpx;
  246. height: 112rpx;
  247. margin-right: 20rpx;
  248. border-radius: 10%;
  249. "
  250. ></image>
  251. <view class="notice-content" style="width: 70%">
  252. <view class="notice-content-font" style="white-space: break-spaces">{{
  253. item.title
  254. }}</view>
  255. <view class="display-flex-start" style="margin-top: 20rpx">
  256. <view
  257. class="notice-content-time display-flex-start color-a7adba"
  258. v-show="item.isOnline"
  259. ><view class="online-box"></view>线上</view
  260. >
  261. <view
  262. class="notice-content-time display-flex-start color-a7adba"
  263. v-show="!item.isOnline"
  264. ><view class="offline-box"></view>线下</view
  265. >
  266. <view class="notice-content-time color-a7adba">{{
  267. item.department
  268. }}</view>
  269. <view class="notice-content-time color-a7adba">{{
  270. item.time
  271. }}</view>
  272. </view>
  273. <view class="display-flex-end" style="margin-top: 20rpx">
  274. <view class="notice-content-time">浏览 {{ item.browe }}</view>
  275. <view class="notice-content-time">分享 {{ item.share }}</view>
  276. </view>
  277. </view>
  278. </view>
  279. </view>
  280. <foot-tabs :selectedIndex="0"></foot-tabs>
  281. </view>
  282. </template>
  283. <script>
  284. import md5 from "@/common/md5.js";
  285. import topTitle from "@/components/top-title/top-title.vue";
  286. import footTabs from "@/components/foot-tabs/footTabs.vue";
  287. export default {
  288. components: {
  289. "foot-tabs": footTabs,
  290. "top-title": topTitle,
  291. },
  292. data() {
  293. return {
  294. title: "Air企通",
  295. scrollVal: Number,
  296. swiperList: [
  297. {
  298. img: "/static/swiper/swiper1.jpg",
  299. },
  300. {
  301. img: "/static/swiper/swiper2.jpg",
  302. },
  303. ],
  304. swiperCurrent: 0,
  305. navList: [
  306. {
  307. url: "/static/navList/appeal.png",
  308. path: "/pages/appeal/index",
  309. content: "提诉求",
  310. },
  311. {
  312. url: "/static/navList/policy.png",
  313. path: "/pages/policy/index",
  314. content: "搜政策",
  315. },
  316. {
  317. url: "/static/navList/park.png",
  318. path: "/pages/park/index",
  319. content: "找园区",
  320. },
  321. {
  322. url: "/static/navList/activity.png",
  323. path: "/pages/activity/index",
  324. content: "找活动",
  325. },
  326. {
  327. url: "/static/navList/supply.png",
  328. path: "/pages/supply/index",
  329. content: "发供需",
  330. },
  331. {
  332. url: "/static/navList/enterprise.png",
  333. path: "/pages/enterprise/index",
  334. content: "查企业",
  335. },
  336. {
  337. url: "/static/navList/service.png",
  338. path: "/pages/service/index",
  339. content: "找服务",
  340. },
  341. ],
  342. noticeList: [
  343. // {
  344. // url: "/static/navList/policy-icon.png",
  345. // title: "政策速览 | 小微企业、个体工商户税费...",
  346. // time: "2021-08-05",
  347. // },
  348. // {
  349. // url: "/static/navList/activity-icon.png",
  350. // title: "活动预告 | 想了解跨境电商?8月5日带...",
  351. // time: "2021-08-04",
  352. // },
  353. // {
  354. // url: "/static/navList/notice-icon.png",
  355. // title: "通知公告 | 2022年首批次重点新材料扶...",
  356. // time: "2021-08-03",
  357. // },
  358. ],
  359. parkList: [
  360. // {
  361. // url:'/static/park/1.png',
  362. // title:'华潮科技产业园',
  363. // time:'2015-10-25',
  364. // num:484,
  365. // area1:1.72,
  366. // area2:1.01
  367. // },
  368. // {
  369. // url:'/static/park/1.png',
  370. // title:'华潮科技产业园',
  371. // time:'2015-10-25',
  372. // num:484,
  373. // area1:1.72,
  374. // area2:1.01
  375. // },
  376. // {
  377. // url:'/static/park/1.png',
  378. // title:'华潮科技产业园',
  379. // time:'2015-10-25',
  380. // num:484,
  381. // area1:1.72,
  382. // area2:1.01
  383. // },
  384. ],
  385. attractList: [
  386. {
  387. url: "/static/attract/1.png",
  388. title: "工业互联网",
  389. subtitle: "工业互联网是全球工业系统与高级计算、分析、...",
  390. time: "2021-09-05",
  391. },
  392. {
  393. url: "/static/attract/2.png",
  394. title: "生产性服务业",
  395. subtitle: "生产性服务业是指为保持工业生产过程的连续性...",
  396. time: "2021-09-05",
  397. },
  398. ],
  399. activityList: [
  400. // {
  401. // url: "/static/activity/2.png",
  402. // title: "400场讲座,200门课程,免费送上门!就等你申请",
  403. // isOnline: 1,
  404. // department: "区人力资源局",
  405. // time: "2021-09-05",
  406. // browe: "322",
  407. // share: "2",
  408. // },
  409. // {
  410. // url: "/static/activity/1.png",
  411. // title: "智能制造商标品牌培育系列培训活动",
  412. // isOnline: 0,
  413. // department: "市场监督管理局",
  414. // time: "2021-09-05",
  415. // browe: "322",
  416. // share: "2",
  417. // },
  418. ],
  419. };
  420. },
  421. onShow() {
  422. uni.hideTabBar({});
  423. },
  424. onLoad() {
  425. this.getSwiperList();
  426. this.getPark();
  427. this.getNotice();
  428. this.getActive();
  429. //this.getAttract(); //招商接口
  430. },
  431. onShareAppMessage() {
  432. url: "/pages/index/index";
  433. },
  434. methods: {
  435. swiperChange(e) {
  436. this.swiperCurrent = e.detail.current;
  437. },
  438. getSwiperList() {
  439. let md5Sign = md5(
  440. "method=" +
  441. "common" +
  442. "&timestamp=" +
  443. getApp().globalData.globalTimestamp +
  444. "&secret=" +
  445. getApp().globalData.secret
  446. );
  447. let url =
  448. getApp().globalData.shareUrl +
  449. "api/api.php" +
  450. "?method=common&source=main_pics&action=list&timestamp=" +
  451. getApp().globalData.globalTimestamp +
  452. "&sign=" +
  453. md5Sign;
  454. uni.request({
  455. url: url,
  456. method: "POST",
  457. header: {
  458. "content-type": "application/x-www-form-urlencoded",
  459. },
  460. data: {
  461. order_by: "weight desc",
  462. s_status: 1,
  463. page: 1,
  464. page_size: 7,
  465. },
  466. success: (res) => {
  467. console.log(res);
  468. if (res.data.code === 200) {
  469. res.data.data.list.forEach((item) => {
  470. item.pic_path = getApp().globalData.shareUrl + item.pic_path;
  471. });
  472. this.swiperList = res.data.data.list;
  473. }
  474. },
  475. fail: () => {
  476. console.log("连接失败");
  477. },
  478. });
  479. },
  480. getPark() {
  481. let md5Sign = md5(
  482. "method=" +
  483. "park" +
  484. "&timestamp=" +
  485. getApp().globalData.globalTimestamp +
  486. "&secret=" +
  487. getApp().globalData.secret
  488. );
  489. let url =
  490. getApp().globalData.shareUrl +
  491. "api/api.php" +
  492. "?method=park&source=park&action=list&timestamp=" +
  493. getApp().globalData.globalTimestamp +
  494. "&sign=" +
  495. md5Sign;
  496. uni.request({
  497. url: url,
  498. method: "POST",
  499. header: {
  500. "content-type": "application/x-www-form-urlencoded",
  501. },
  502. data: {
  503. order_by: "weight desc",
  504. s_show: 1,
  505. page: 1,
  506. page_size: 5,
  507. },
  508. success: (res) => {
  509. if (res.data.code === 200) {
  510. res.data.data.list.forEach((item) => {
  511. if (item.park_pics.length) {
  512. item.park_pics[0].pic_path =
  513. getApp().globalData.shareUrl + item.park_pics[0].pic_path;
  514. }
  515. });
  516. this.parkList = res.data.data.list;
  517. }
  518. },
  519. fail: () => {
  520. console.log("连接失败");
  521. },
  522. });
  523. },
  524. getNotice() {
  525. let md5Sign = md5(
  526. "method=" +
  527. "common" +
  528. "&timestamp=" +
  529. getApp().globalData.globalTimestamp +
  530. "&secret=" +
  531. getApp().globalData.secret
  532. );
  533. let url =
  534. getApp().globalData.shareUrl +
  535. "api/api.php" +
  536. "?method=common&source=notice&action=list&timestamp=" +
  537. getApp().globalData.globalTimestamp +
  538. "&sign=" +
  539. md5Sign;
  540. uni.request({
  541. url: url,
  542. method: "POST",
  543. header: {
  544. "content-type": "application/x-www-form-urlencoded",
  545. },
  546. data: {
  547. // order_by: "weight desc",
  548. // s_show: 1,
  549. // page: 1,
  550. // page_size: 5,
  551. },
  552. success: (res) => {
  553. if (res.data.code === 200) {
  554. // console.log(res.data.data.list);
  555. this.noticeList = res.data.data.list.map((item) => {
  556. switch (item.type) {
  557. case "1":
  558. item.icon = "/static/navList/activity-icon.png";
  559. item.title = "活动预告 | " + item.title;
  560. break;
  561. case "2":
  562. item.icon = "/static/navList/policy-icon.png";
  563. item.title = "政策速览 | " + item.title;
  564. break;
  565. case "3":
  566. item.icon = "/static/navList/notice-icon.png";
  567. item.title = "通知公告 | " + item.title;
  568. break;
  569. }
  570. return item;
  571. });
  572. }
  573. },
  574. fail: () => {
  575. console.log("连接失败");
  576. },
  577. });
  578. },
  579. getAttract() {
  580. let md5Sign = md5(
  581. "method=" +
  582. "common" +
  583. "&timestamp=" +
  584. getApp().globalData.globalTimestamp +
  585. "&secret=" +
  586. getApp().globalData.secret
  587. );
  588. let url =
  589. getApp().globalData.shareUrl +
  590. "api/api.php" +
  591. "?method=common&source=business&action=list&timestamp=" +
  592. getApp().globalData.globalTimestamp +
  593. "&sign=" +
  594. md5Sign;
  595. let postData = {
  596. page: 1,
  597. page_size: 5,
  598. };
  599. uni.request({
  600. url: url,
  601. method: "POST",
  602. header: {
  603. "content-type": "application/x-www-form-urlencoded",
  604. },
  605. data: postData,
  606. success: (res) => {
  607. console.log(res);
  608. if (res.data.code === 200) {
  609. let list = res.data.data.list;
  610. this.attractList = list.map((item) => {
  611. /*
  612. title: "生产性服务业",
  613. subtitle: "生产性服务业是指为保持工业生产过程的连续性...",
  614. time: "2021-09-05",
  615. */
  616. let ob = {
  617. url: "",
  618. subtitle: "",
  619. id: "",
  620. title: "",
  621. };
  622. ob.url = item.pic_url;
  623. ob.subtitle = item.desc;
  624. ob.id = item.id;
  625. ob.title = item.title;
  626. return ob;
  627. });
  628. }
  629. },
  630. fail: () => {
  631. console.log("连接失败");
  632. },
  633. });
  634. },
  635. getActive() {
  636. let md5Sign = md5(
  637. "method=" +
  638. "common" +
  639. "&timestamp=" +
  640. getApp().globalData.globalTimestamp +
  641. "&secret=" +
  642. getApp().globalData.secret
  643. );
  644. let url =
  645. getApp().globalData.shareUrl +
  646. "api/api.php" +
  647. "?method=common&source=activity&action=list&timestamp=" +
  648. getApp().globalData.globalTimestamp +
  649. "&sign=" +
  650. md5Sign;
  651. let postData = {
  652. page: 1,
  653. page_size: 15,
  654. };
  655. uni.request({
  656. url: url,
  657. method: "POST",
  658. header: {
  659. "content-type": "application/x-www-form-urlencoded",
  660. },
  661. data: postData,
  662. success: (res) => {
  663. console.log(res);
  664. if (res.data.code === 200) {
  665. let list = res.data.data.list;
  666. this.activityList = list.map((item) => {
  667. /*
  668. url: "/static/activity/2.png",
  669. title: "智能制造商标品牌培育系列培训活动",
  670. way: "市场监督管理局",
  671. date: "2021-08-07",
  672. read: 322,
  673. share: 1,
  674. type: 0, //0线下
  675. */
  676. let ob = {
  677. url: "",
  678. title: "",
  679. department: "",
  680. time: "",
  681. browe: 0,
  682. share: 0,
  683. type: "",
  684. id: "",
  685. };
  686. ob.url = getApp().globalData.shareUrl + item.pic_url;
  687. ob.title = item.name;
  688. ob.department = item.sponsor;
  689. ob.time = this.$options.filters["globalTime"](item.start_time);
  690. ob.browe =
  691. parseInt(item.base_read_count) + parseInt(item.real_read_count);
  692. ob.share =
  693. parseInt(item.real_repost_count) +
  694. parseInt(item.base_repost_count);
  695. ob.isOnline = item.type == 1 ? 1 : 0;
  696. ob.id = item.id;
  697. return ob;
  698. });
  699. }
  700. },
  701. fail: () => {
  702. console.log("连接失败");
  703. },
  704. });
  705. },
  706. goParkDetailFn(id) {
  707. uni.navigateTo({
  708. url: "/pages/park/park_deatil?id=" + id,
  709. });
  710. },
  711. goNoticeDeatil(id) {
  712. uni.navigateTo({
  713. url: "/pages/notice/notice_deatil?id=" + id,
  714. });
  715. },
  716. goAttractDeatil(id) {
  717. uni.navigateTo({
  718. url: "/pages/attract/attract_deatil?id=" + id,
  719. });
  720. },
  721. goActiveDeatil(id) {
  722. uni.navigateTo({
  723. url: "/pages/activity/activity_deatil?id=" + id,
  724. });
  725. },
  726. goAttract() {
  727. uni.navigateTo({
  728. url: "/pages/attract/index",
  729. });
  730. },
  731. goNotice() {
  732. uni.navigateTo({
  733. url: "/pages/notice/index",
  734. });
  735. },
  736. goActive() {
  737. uni.navigateTo({
  738. url: "/pages/activity/index",
  739. });
  740. },
  741. },
  742. onPageScroll(e) {
  743. this.scrollVal = e.scrollTop;
  744. },
  745. };
  746. </script>
  747. <style>
  748. .content {
  749. display: flex;
  750. flex-direction: column;
  751. align-items: center;
  752. justify-content: center;
  753. position: relative;
  754. }
  755. .logo {
  756. height: 200rpx;
  757. width: 200rpx;
  758. margin-top: 200rpx;
  759. margin-left: auto;
  760. margin-right: auto;
  761. margin-bottom: 50rpx;
  762. }
  763. .text-area {
  764. display: flex;
  765. justify-content: center;
  766. }
  767. .title {
  768. font-size: 36rpx;
  769. color: #8f8f94;
  770. }
  771. .groove-img {
  772. width: 100%;
  773. height: 100rpx;
  774. bottom: -22rpx;
  775. position: absolute;
  776. }
  777. .rowDot {
  778. display: flex;
  779. position: absolute;
  780. top: 310rpx;
  781. left: 80rpx;
  782. }
  783. .dots {
  784. flex-direction: row;
  785. justify-content: center;
  786. align-items: center;
  787. align-content: center;
  788. }
  789. .dot {
  790. margin-right: 8rpx;
  791. width: 40rpx;
  792. height: 8rpx;
  793. opacity: 1;
  794. border-radius: 6rpx;
  795. background: #fff5f9;
  796. }
  797. .dot.active {
  798. background: #ff4e54;
  799. }
  800. .swiper-content {
  801. /* border-radius: 0 0 10% 10%; */
  802. }
  803. .page-nav-box {
  804. width: 80%;
  805. /* height: 320rpx; */
  806. display: flex;
  807. flex-wrap: wrap;
  808. padding: 20rpx 10rpx 30rpx 10rpx;
  809. box-shadow: 0px 2px 16px rgba(0, 0, 0, 0.1);
  810. border-radius: 32rpx;
  811. position: absolute;
  812. top: 360rpx;
  813. background-color: #fff;
  814. }
  815. .nav-content {
  816. width: 25%;
  817. height: 130rpx;
  818. display: flex;
  819. flex-direction: column;
  820. align-items: center;
  821. margin-top: 20rpx;
  822. font-size: 22rpx;
  823. justify-content: space-around;
  824. letter-spacing: 0.02em;
  825. color: #0d1937;
  826. font-family: PingFang SC;
  827. font-style: normal;
  828. font-weight: 600;
  829. }
  830. .notice-box {
  831. width: 83%;
  832. margin-top: 320rpx;
  833. margin-bottom: 20rpx;
  834. }
  835. .notice-title-box {
  836. width: 100%;
  837. display: flex;
  838. justify-content: space-between;
  839. align-items: center;
  840. margin-bottom: 40rpx;
  841. }
  842. .notice-font {
  843. font-family: PingFang SC;
  844. font-style: normal;
  845. font-weight: 600;
  846. font-size: 32rpx;
  847. letter-spacing: 0.02em;
  848. color: #0d1937;
  849. }
  850. .notice-more-font {
  851. font-size: 24rpx;
  852. color: #146afb;
  853. display: flex;
  854. align-items: center;
  855. }
  856. .notice-content-box {
  857. display: flex;
  858. padding: 30rpx;
  859. background-color: #ffffff;
  860. box-shadow: 0px 4rpx 32rpx rgba(0, 0, 0, 0.1);
  861. border-radius: 32rpx;
  862. margin-top: 20rpx;
  863. justify-content: space-between;
  864. }
  865. .notice-content-font {
  866. font-size: 26rpx;
  867. color: #0d1937;
  868. font-weight: 600;
  869. overflow: hidden;
  870. text-overflow: ellipsis;
  871. white-space: nowrap;
  872. }
  873. .notice-content-time {
  874. font-size: 18rpx;
  875. letter-spacing: 0.02em;
  876. color: #cfcfcf;
  877. margin-right: 14rpx;
  878. }
  879. .park-box {
  880. border-radius: 32rpx;
  881. margin-right: 20rpx;
  882. position: relative;
  883. height: 450rpx;
  884. }
  885. .park-content-box {
  886. width: 394rpx;
  887. background-color: #ffffff;
  888. border-radius: 56rpx 0px 32rpx 32rpx;
  889. position: absolute;
  890. top: 210rpx;
  891. font-size: 24rpx;
  892. padding: 30rpx;
  893. box-shadow: 0px 2px 16px rgba(0, 0, 0, 0.1);
  894. }
  895. .park-title {
  896. font-weight: 600;
  897. line-height: 36rpx;
  898. letter-spacing: 0.02em;
  899. color: #0d1937;
  900. }
  901. .park-address {
  902. font-weight: 600;
  903. font-size: 19rpx;
  904. letter-spacing: 0.02em;
  905. color: #cfcfcf;
  906. margin-top: 10rpx;
  907. }
  908. .park-title-img {
  909. width: 16rpx;
  910. height: 16rpx;
  911. margin-right: 4rpx;
  912. }
  913. .park-footer-box {
  914. margin-top: 30rpx;
  915. }
  916. .park-footer-img {
  917. width: 24rpx;
  918. height: 24rpx;
  919. margin-right: 6rpx;
  920. }
  921. .park-footer-font {
  922. color: #cfcfcf;
  923. font-size: 19rpx;
  924. margin-top: 10rpx;
  925. }
  926. .width-30 {
  927. width: 30%;
  928. }
  929. .attract-content {
  930. color: #697594;
  931. font-weight: 600;
  932. font-size: 20rpx;
  933. margin-top: 8rpx;
  934. overflow: hidden;
  935. text-overflow: ellipsis;
  936. white-space: nowrap;
  937. }
  938. .online-box {
  939. width: 12rpx;
  940. height: 12rpx;
  941. border-radius: 50%;
  942. background-color: #589cff;
  943. margin-right: 5rpx;
  944. }
  945. .offline-box {
  946. width: 12rpx;
  947. height: 12rpx;
  948. border-radius: 50%;
  949. background-color: #ffcf86;
  950. margin-right: 5rpx;
  951. }
  952. .color-a7adba {
  953. color: #a7adba;
  954. }
  955. </style>