index.vue 25 KB

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