index.vue 27 KB

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