فهرست منبع

Merge branch 'master' of http://face3d.4dage.com:7005/shaogen1995/YFYC-H5 into master

shaogen1995 2 سال پیش
والد
کامیت
20832c123e

+ 1 - 0
public/index.html

@@ -6,6 +6,7 @@
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <script src="./jquery-2.1.1.min.js"></script>
+    <script src="./masonry.pkgd.min.js"></script>
     <title>一房一册</title>
   </head>
   <body>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 9 - 0
public/masonry.pkgd.min.js


BIN
src/assets/img/service/12348.png


BIN
src/assets/img/service/address-gray.png


BIN
src/assets/img/service/arrow-gray-blunt.png


BIN
src/assets/img/service/banner.png


BIN
src/assets/img/service/booking.png


BIN
src/assets/img/service/food-banner.png


BIN
src/assets/img/service/food1.png


BIN
src/assets/img/service/goods1.png


BIN
src/assets/img/service/goods2.png


BIN
src/assets/img/service/goods3.png


BIN
src/assets/img/service/goods4.png


BIN
src/assets/img/service/hotel-detail-banner.png


BIN
src/assets/img/service/navigation.png


BIN
src/assets/img/service/phone-blue.png


BIN
src/assets/img/service/phone-gray.png


BIN
src/assets/img/service/停车场.png


BIN
src/assets/img/service/找厕所.png


BIN
src/assets/img/service/景区舒适区.png


BIN
src/assets/img/service/购物车.png


+ 23 - 5
src/router/index.js

@@ -106,14 +106,14 @@ const routes = [{
 
       /**
        * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-       * 享服务
+       * 享服务(建筑可游玩)
        */
       {
         path: '/layout/serve',
         name: 'serve',
         meta: {
           myInd: 2,
-          myTitle: '享·服务',
+          myTitle: '建筑可游玩',
         },
         component: () => import('../views/Serve/index.vue')
       },
@@ -127,13 +127,13 @@ const routes = [{
         component: () => import('../views/Serve/RecommendedPath.vue')
       },
       {
-        path: '/layout/serve/one-day-tour',
-        name: 'OneDayTour',
+        path: '/layout/serve/recommended-path-detail',
+        name: 'RecommendedPathDetail',
         meta: {
           myInd: 2,
           myTitle: '一日游',
         },
-        component: () => import('../views/Serve/OneDayTour.vue')
+        component: () => import('../views/Serve/RecommendedPathDetail.vue')
       },
       {
         path: '/layout/serve/dont-miss',
@@ -171,6 +171,24 @@ const routes = [{
         },
         component: () => import('../views/Serve/HotelList.vue')
       },
+      {
+        path: '/layout/serve/hotel-detail',
+        name: 'HotelDetail',
+        meta: {
+          myInd: 2,
+          myTitle: '',
+        },
+        component: () => import('../views/Serve/HotelDetail.vue')
+      },
+      {
+        path: '/layout/serve/food-list',
+        name: 'FoodList',
+        meta: {
+          myInd: 2,
+          myTitle: '美食',
+        },
+        component: () => import('../views/Serve/FoodList.vue')
+      },
       /**
        * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        */

+ 218 - 0
src/views/Serve/FoodList.vue

@@ -0,0 +1,218 @@
+<template>
+  <div class="food-list-page">
+    <div class="banner-wrap">
+      <SearchBar class="search-bar" @search="onSearch"></SearchBar>
+    </div>
+    <div class="select-wrap">
+      <Select
+        class="select"
+        :valueList="orderList"
+        v-model="orderIdx"
+        :placeholder="'排序'"
+      ></Select>
+      <Select
+        class="select"
+        v-model="typeIdx"
+        :valueList="typeList"
+        :placeholder="'分类'"
+      ></Select>
+      <Select
+        class="select"
+        v-model="attractionIdx"
+        :valueList="attractionList"
+        :placeholder="'景点周边'"
+      ></Select>
+    </div>
+    
+    <div class="card-list">
+      <!-- <div class="grid-sizer"></div> -->
+      <article
+        @click="onClickFoodList(index)"
+      >
+        <div class="img-wrap">
+          <img class="photo" :src="foodList[0].img" alt="" draggable="false">
+          <div class="address">
+            <img class="icon" src="@/assets/img/service/address-white.png" alt="" draggable="false">
+            fdaslkfdj
+          </div>
+        </div>
+        <h2>sadfslf</h2>
+        <h2>sadfslf</h2>
+        <h2>sadfslf</h2>
+        <h2>sadfslf</h2>
+      </article>
+      <article
+        v-for="(item, index) in foodList"
+        :key="index"
+        @click="onClickFoodList(index)"
+      >
+        <div class="img-wrap">
+          <img class="photo" :src="item.img" alt="" draggable="false">
+          <div class="address">
+            <img class="icon" src="@/assets/img/service/address-white.png" alt="" draggable="false">
+            {{item.address}}
+          </div>
+        </div>
+        <h2>{{item.title}}</h2>
+      </article>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import SearchBar from "@/components/SearchTransparent.vue";
+import Select from "@/components/Select.vue";
+
+export default {
+  components: {
+    SearchBar,
+    Select,
+  },
+  data() {
+    return {
+      orderIdx: 0,
+      typeIdx: 0,
+      attractionIdx: 0,
+      foodList: [
+        {
+          img: require('@/assets/img/service/food1.png'),
+          address: '芜湖市凤凰美食街中心广场',
+          title: '虾籽面',
+        },
+        {
+          img: require('@/assets/img/service/food1.png'),
+          address: '芜湖市凤凰美食街中心广场',
+          title: '虾籽面',
+        },
+        {
+          img: require('@/assets/img/service/food1.png'),
+          address: '芜湖市凤凰美食街中心广场',
+          title: '虾籽面',
+        },
+      ]
+    }
+  },
+  computed: {
+    orderList() {
+      return [
+        '全部',
+        '价格',
+        '距离',
+        '评价',
+      ]
+    },
+    typeList() {
+      return [
+        '全部',
+        '中餐',
+        '西餐',
+      ]
+    },
+    attractionList() {
+      return [
+        '全部',
+        '景点1',
+        '景点2',
+        '景点3',
+      ]
+    }
+  },
+  methods: {
+    onSearch() {
+
+    },
+    onClickFoodList(index) {
+      this.$router.push({name: 'FoodDetail'})
+    },
+  },
+  mounted() {
+    $('.card-list').masonry({
+      itemSelector: '.card-list > article',
+      percentPosition: true,
+    });
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.food-list-page {
+  height: calc(100% - 80px);
+  background-color: #fff;
+  display: flex;
+  flex-direction: column;
+  > .banner-wrap {
+    flex: 0 0 auto;
+    height: 40vw;
+    background-image: url(~@/assets/img/service/food-banner.png);
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center center;
+    overflow: hidden;
+    margin-bottom: 4.1vw;
+    position: relative;
+    > .search-bar {
+      position: absolute;
+      bottom: 4.8vw;
+      left: 50%;
+      width: 80.1vw;
+      transform: translateX(-50%);
+    }
+  }
+  > .select-wrap {
+    flex: 0 0 auto;
+    margin: 0 4vw 4vw 4vw;
+    position: relative;
+    z-index: 1;
+    > .select {
+      display: inline-block;
+      margin-right: 5vw;
+    }
+  }
+  > .card-list {
+    flex: 1 0 1px;
+    margin-left: 4vw;
+    overflow: auto;
+    > article {
+      width: 44vw;
+      padding-bottom: 2.7vw;
+      margin-bottom: 4vw;
+      margin-right: 4vw;;
+      display: inline-block;
+      > .img-wrap {
+        height: 53.3vw;
+        border-radius: 1.1vw;
+        position: relative;
+        overflow: hidden;
+        > img.photo {
+          position: absolute;
+          left: 0;
+          top: 0;
+          width: 100%;
+          height: 100%;
+          object-fit: cover;
+        }
+        > .address {
+          position: absolute;
+          left: 2vw;
+          bottom: 2vw;
+          font-size: 2.7vw;
+          color: #FFFFFF;
+          > img.icon {
+            width: 2.7vw;
+            height: 3.6vw;
+            margin-right: 1vw;
+            vertical-align: -0.3em;
+          }
+        }
+      }
+      > h2 {
+        margin: 2.7vw 2vw 3vw 2vw;
+        font-size: 3.5vw;
+        font-weight: 500;
+        color: #454545;
+      }
+    }
+  }
+}
+</style>

+ 401 - 0
src/views/Serve/HotelDetail.vue

@@ -0,0 +1,401 @@
+<template>
+  <div class="hotel-detail">
+    <div class="banner">
+    </div>
+    <div class="title-area">
+      <div class="title-bar">
+        <div class="left">
+          <h2>芜湖金鹰尚美酒店</h2>
+          <div class="star">5星级</div>
+        </div>
+        <div class="right">
+          427余套客房· 684张床位
+        </div>
+      </div>
+      <div class="address-bar">
+        <div class="left-wrap">
+          <img class="icon" src="@/assets/img/service/address-gray.png" alt="" draggable="false">
+          <div class="info">
+            <div class="address">芜湖市镜湖区中山北路77号</div>
+            <div class="distance">距您2.8km</div>
+          </div>
+        </div>
+        <button>
+          <img class="icon" src="@/assets/img/service/navigation.png" alt="" draggable="false">
+          <span>开启导航</span>
+        </button>
+      </div>
+      <div class="phone-bar">
+        <div class="left-wrap">
+          <img class="icon" src="@/assets/img/service/phone-gray.png" alt="" draggable="false">
+          <div class="info">
+            <div class="title">
+              咨询电话
+            </div>
+            <div class="phone">
+              0533-3888999
+            </div>
+          </div>
+        </div>
+        <button>
+          <img class="icon" src="@/assets/img/service/phone-blue.png" alt="" draggable="false">
+          <span>快速拨通</span>
+        </button>
+      </div>
+    </div>
+    <div class="splitter">
+    </div>
+    <div
+      class="desc"
+    >
+      <h2>酒店概况</h2>
+      <div
+        class="content"
+        :class="{
+          expand: isExpanded
+        }"
+      >
+        酒店位于芜湖市中心位置—中山北路,毗邻八佰伴、凤凰美食街、华强吾悦广场、苏宁广场,以及一步之遥的中山路步行街。酒店“闹中取静”,背靠繁华交通主干道,拥有独立的地下及地面停车场。<br>
+        酒店有三百余间客房,客房位于酒店21F以上,透过房间落地窗,可以饱览赭山或长江美景。房内提供无线宽带、频道选择、私人保险箱、咖啡和茶、配有浴缸和独立淋浴间的宽敞浴室。同时,酒店还为儿童们准备了独具特色的儿童主题房,希望能成为您和家人心中“行业的佼佼者”。
+        <button
+          class="expand-content"
+          v-show="!isExpanded"
+          @click="isExpanded = true"
+        >
+          收起
+        </button>
+      </div>
+    </div>
+    <div class="splitter" />
+    <div class="food">
+      <h2>周边美食</h2>
+      <button class="more">
+        更多
+        <img class="" src="@/assets/img/service/arrow-gray-blunt.png" alt="" draggable="false">
+      </button>
+      <div class="food-photo-wrap"
+        v-for="n in 2"
+        :key="n"
+      >
+        <img class="food-photo" src="@/assets/img/service/arrow-gray-blunt.png" alt="" draggable="false">
+        <div class="food-name">无为板鸭</div>
+      </div>
+    </div>
+    <div class="attractions">
+      <h2>周边景点</h2>
+      <button class="more">
+        更多
+        <img class="" src="@/assets/img/service/arrow-gray-blunt.png" alt="" draggable="false">
+      </button>
+      <div class="attraction-photo-wrap"
+        v-for="n in 2"
+        :key="n"
+      >
+        <img class="attraction-photo" src="@/assets/img/service/arrow-gray-blunt.png" alt="" draggable="false">
+        <div class="attraction-name">鸠兹古镇</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      isExpanded: false,
+    }
+  },
+}
+</script>
+
+<style lang="less" scoped>
+.hotel-detail {
+  background-color: #fff;
+  height: calc(100% - 80px);
+  overflow: auto;
+  .banner {
+    height: 62.9vw;
+    background-image: url(~@/assets/img/service/hotel-detail-banner.png);
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center center;
+    overflow: hidden;
+  }
+  .title-area {
+    padding: 4vw;
+    .title-bar {
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-end;
+      margin-bottom: 3.9vw;
+      .left {
+        display: flex;
+        align-items: flex-end;
+        > h2 {
+          font-size: 4.8vw;
+          font-weight: bold;
+          color: #515151;
+          white-space: nowrap;
+        }
+        .star {
+          white-space: nowrap;
+          padding: 1.1vw 1.9vw;
+          font-size: 2.7vw;
+          font-weight: 500;
+          color: #f5c706;
+          background: rgba(217, 28, 28, 1);
+          border-radius: 2.3vw;
+        }
+      }
+      .right {
+        font-size: 2.9vw;
+        color: #B2B2B2;
+      }
+    }
+    .address-bar {
+      height: 13.3vw;
+      background: #F8F8F8;
+      border-radius: 1.3vw;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 2.7vw;
+      padding-left: 3vw;
+      padding-right: 3vw;
+      > .left-wrap {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .icon {
+          margin-right: 2.5vw;
+          width: 4.7vw;
+          height: 6.4vw;
+        }
+        .info {
+          .address {
+            font-size: 3.7vw;
+            font-weight: 500;
+            color: #656565;
+          }
+          .distance {
+            font-size: 3.2vw;
+            color: #777777;
+          }
+        }
+      }
+      > button {
+        display: flex;
+        align-items: center;
+        .icon {
+          width: 4.8vw;
+          height: 4.8vw;
+          margin-right: 1.5vw;
+        }
+        > span {
+          font-size: 4.0vw;
+          font-weight: 500;
+          color: #00a2ff;
+        }
+      }
+    }
+    .phone-bar {
+      height: 13.3vw;
+      background: #F8F8F8;
+      border-radius: 1.3vw;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 2.7vw;
+      padding-left: 3vw;
+      padding-right: 3vw;
+      .left-wrap {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        .icon {
+          margin-right: 2.5vw;
+          width: 4.7vw;
+          height: 6.4vw;
+        }
+        .info {
+          > .title {
+            font-size: 3.7vw;
+            font-weight: 500;
+            color: #656565;
+          }
+          > .phone {
+            font-size: 3.2vw;
+            color: #777777;
+          }
+        }
+      }
+      > button {
+        display: flex;
+        align-items: center;
+        .icon {
+          width: 4.8vw;
+          height: 4.8vw;
+          margin-right: 1.5vw;
+        }
+        > span {
+          font-size: 4.0vw;
+          font-weight: 500;
+          color: #00a2ff;
+        }
+      }
+    }
+  }
+  > .desc {
+    padding: 4vw 4vw 6vw 4vw;
+    > h2 {
+      font-size: 4.8vw;
+      font-weight: 500;
+      color: #7A7A7A;
+      position: relative;
+      margin-bottom: 3.7vw;
+      &::before {
+        position: absolute;
+        content: '';
+        top: 0;
+        right: calc(100% + 1.5vw);
+        height: 95%;
+        width: 0.7vw;
+        background: #00A2FF;
+      }
+    }
+    > .content {
+      font-size: 4.0vw;
+      color: #7A7A7A;
+      line-height: 6.9vw;
+      max-height: calc(6.9vw * 5);
+      overflow: hidden;
+      position: relative;
+      &.expand {
+        max-height: initial;
+      }
+      > button {
+        position: absolute;
+        left: 0;
+        width: 100%;
+        bottom: 0;
+        height: 1.5em;
+        font-size: 4vw;
+        font-weight: 500;
+        color: #BBBBBB;
+        background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 80%);
+        text-align: right;
+      }
+    }
+  }
+  > .splitter {
+    height: 0.7vw;
+    background: #F7F7F7;
+  }
+  > .food {
+    padding: 4vw 0 6vw 4vw;
+    position: relative;
+    > h2 {
+      font-size: 4.8vw;
+      font-weight: 500;
+      color: #7A7A7A;
+      position: relative;
+      margin-bottom: 3.7vw;
+      &::before {
+        position: absolute;
+        content: '';
+        top: 0;
+        right: calc(100% + 1.5vw);
+        height: 95%;
+        width: 0.7vw;
+        background: #00A2FF;
+      }
+    }
+    > button.more {
+      position: absolute;
+      right: 4vw;
+      top: 4vw;
+      font-size: 4vw;
+      color: #CECECE;
+      height: 6vw;
+      display: flex;
+      align-items: center;
+      > img {
+        width: 1.9vw;
+        height: 3.6vw;
+        margin-left: 1.3vw;
+      }
+    }
+    > .food-photo-wrap {
+      margin-right: 4vw;
+      margin-bottom: 4vw;
+      display: inline-block;
+      > img.food-photo {
+        width: 44vw;
+        height: 44vw;
+        border-radius: 1.5vw;
+        margin-bottom: 1.6vw;
+      }
+      > .food-name {
+        font-size: 3.7vw;
+        font-weight: 500;
+        color: #9C9C9C;
+        width: 44vw;
+        text-align: center;
+      }
+    }
+  }
+  > .attractions {
+    padding: 4vw 0 6vw 4vw;
+    position: relative;
+    > h2 {
+      font-size: 4.8vw;
+      font-weight: 500;
+      color: #7A7A7A;
+      position: relative;
+      margin-bottom: 3.7vw;
+      &::before {
+        position: absolute;
+        content: '';
+        top: 0;
+        right: calc(100% + 1.5vw);
+        height: 95%;
+        width: 0.7vw;
+        background: #00A2FF;
+      }
+    }
+    > button.more {
+      position: absolute;
+      right: 4vw;
+      top: 4vw;
+      font-size: 4vw;
+      color: #CECECE;
+      height: 6vw;
+      display: flex;
+      align-items: center;
+      > img {
+        width: 1.9vw;
+        height: 3.6vw;
+        margin-left: 1.3vw;
+      }
+    }
+    > .attraction-photo-wrap {
+      margin-right: 4vw;
+      margin-bottom: 4vw;
+      display: inline-block;
+      > img.attraction-photo {
+        width: 44vw;
+        height: 44vw;
+        border-radius: 1.5vw;
+        margin-bottom: 1.6vw;
+      }
+      > .attraction-name {
+        font-size: 3.7vw;
+        font-weight: 500;
+        color: #9C9C9C;
+        width: 44vw;
+        text-align: center;
+      }
+    }
+  }
+}
+</style>

+ 6 - 0
src/views/Serve/HotelList.vue

@@ -28,6 +28,7 @@
       <article
         v-for="(item, index) in hotelList"
         :key="index"
+        @click="onClickHotelList(index)"
       >
         <div class="img-wrap">
           <img class="photo" :src="item.img" alt="" draggable="false">
@@ -142,6 +143,9 @@ export default {
     onSearch() {
 
     },
+    onClickHotelList(index) {
+      this.$router.push({name: 'HotelDetail'})
+    },
   },
 }
 </script>
@@ -173,6 +177,8 @@ export default {
   > .select-wrap {
     flex: 0 0 auto;
     margin: 0 4vw 4vw 4vw;
+    position: relative;
+    z-index: 1;
     > .select {
       display: inline-block;
       margin-right: 5vw;

+ 1 - 1
src/views/Serve/RecommendedPath.vue

@@ -16,7 +16,7 @@
       <article
         v-for="n in 10"
         :key="n"
-        @click="$router.push({name: 'OneDayTour'})"
+        @click="$router.push({name: 'RecommendedPathDetail'})"
       >
         <div class="left">
           <img src="@/assets/img/service/一日游.png" alt="" draggable="false">

src/views/Serve/OneDayTour.vue → src/views/Serve/RecommendedPathDetail.vue


+ 306 - 132
src/views/Serve/index.vue

@@ -1,54 +1,50 @@
 <template>
   <div class="service" id="service-first-page">
-    <div class="banner">
-      <SearchBar class="search-bar" @search="onSearch"></SearchBar>
+    <div class="banner" @click="onClickBanner">
+      <SearchBar class="search-bar" @search="onSearch" @click.stop></SearchBar>
     </div>
     
     <menu>
-      <router-link class="entry" :to="{name: 'RecommendedPath'}">
-        <img src="@/assets/img/service/路线.png" alt="" draggable="false">
-        <div>推荐路线</div>
-      </router-link>
-      <router-link class="entry" :to="{name: 'DontMiss'}">
-        <img src="@/assets/img/service/景点.png" alt="" draggable="false">
-        <div>必玩景点</div>
+      <router-link class="entry" :to="{name: ''}">
+        <img src="@/assets/img/service/booking.png" alt="" draggable="false">
+        <div>预约</div>
       </router-link>
-      <router-link class="entry" to="/">
+      <router-link class="entry" :to="{name: 'FoodList'}">
         <img src="@/assets/img/service/美食.png" alt="" draggable="false">
         <div>美食</div>
       </router-link>
-      <router-link class="entry" to="/">
-        <img src="@/assets/img/service/出行.png" alt="" draggable="false">
-        <div>出行</div>
-      </router-link>
       <router-link class="entry" :to="{name: 'HotelList'}">
         <img src="@/assets/img/service/酒店住宿.png" alt="" draggable="false">
         <div>酒店住宿</div>
       </router-link>
+      <router-link class="entry" :to="{name: ''}">
+        <img src="@/assets/img/service/路线.png" alt="" draggable="false">
+        <div>导航</div>
+      </router-link>
     </menu>
 
-    <div class="travel-route-1">
+    <!-- <div class="travel-route-1">
       <router-link class="entry" to="/">一日游推荐路线</router-link>
-    </div>
+    </div> -->
 
     <div class="travel-route-2">
       <h3>推荐路线</h3>
       <router-link class="more" :to="{name: 'RecommendedPath'}">更多  》</router-link>
       <div class="grid-wrap">
-        <div class="left-wrap card">
+        <div class="left-wrap card" @click="onClickPathItem">
           <img src="@/assets/img/service/一日游.png" alt="" draggable="false">
           <h4>一日游</h4>
         </div>
         <div class="right-wrap">
-          <div class="card">
+          <div class="card" @click="onClickPathItem">
             <img src="@/assets/img/service/【快速浏览】.png" alt="" draggable="false">
             <h4>【快速浏览】</h4>
           </div>
-          <div class="card">
+          <div class="card" @click="onClickPathItem">
             <img src="@/assets/img/service/【西洋建筑】.png" alt="" draggable="false">
             <h4>【西洋建筑】</h4>
           </div>
-          <div class="card">
+          <div class="card" @click="onClickPathItem">
             <img src="@/assets/img/service/【古建筑】.png" alt="" draggable="false">
             <h4>【古建筑】</h4>
           </div>
@@ -56,7 +52,7 @@
       </div>
     </div>
 
-    <div class="travel-plague">
+    <!-- <div class="travel-plague">
       <h3>出游防疫</h3>
       <router-link class="more" :to="{name: 'TravelPlague'}">更多  》</router-link>
       <TabbarSmall :tabList="['景点开放', '出行政策']" @change="onTravelPlageTabbarChange"></TabbarSmall>
@@ -108,9 +104,9 @@
           </div>
         </div>
       </div>
-    </div>
+    </div> -->
 
-    <div class="help-center">
+    <!-- <div class="help-center">
       <h3>帮助中心</h3>
       <router-link class="more" :to="{name: 'HelpCenter'}">更多  》</router-link>
       <TabbarSmall :tabList="['常见问题', '服务电话']" @change="onHelpCenterTabbarChange"></TabbarSmall>
@@ -128,6 +124,50 @@
           <span class="time">2022-10-10</span>
         </div>
       </ul>
+    </div> -->
+
+    <div class="public-service">
+      <h3>公共服务</h3>
+      <router-link class="more" :to="{name: ''}">更多  》</router-link>
+      <menu>
+        <router-link class="entry" :to="{name: ''}">
+          <img src="@/assets/img/service/景区舒适区.png" alt="" draggable="false">
+          <div>景区舒适区</div>
+        </router-link>
+        <router-link class="entry" :to="{name: ''}">
+          <img src="@/assets/img/service/找厕所.png" alt="" draggable="false">
+          <div>找厕所</div>
+        </router-link>
+        <router-link class="entry" :to="{name: ''}">
+          <img src="@/assets/img/service/停车场.png" alt="" draggable="false">
+          <div>停车场</div>
+        </router-link>
+        <router-link class="entry" :to="{name: ''}">
+          <img src="@/assets/img/service/12348.png" alt="" draggable="false">
+          <div>12348</div>
+        </router-link>
+      </menu>
+    </div>
+
+   <div class="wen-chuang-zuo-pin">
+      <h3>文创作品</h3>
+      <router-link class="more" :to="{name: ''}">更多  》</router-link>
+      <div class="card-list">
+        <div
+          class="card"
+          v-for="(item, index) in wenChuangZuoPinList"
+          :key="index"
+        >
+          <img class="photo" :src="item.img" alt="" draggable="false">
+          <h3>{{item.title}}</h3>
+          <div class="bottom-bar">
+            <div class="price">
+              ¥ {{item.price}} 元
+            </div>
+            <img class="icon" src="@/assets/img/service/购物车.png" alt="">
+          </div>
+        </div>
+      </div>
     </div>
 
     <BackTop class="back-top" :targetId="'service-first-page'">
@@ -151,8 +191,29 @@ components: {
 data() {
   return {
     searchKeyword: '',
-    travelPlagueActiveIdx: '',
-    helpCenterActiveIdx: '',
+    // travelPlagueActiveIdx: '',
+    wenChuangZuoPinList: [
+      {
+        img: require('@/assets/img/service/goods1.png'),
+        title: '文创作品名称',
+        price: '35',
+      },
+      {
+        img: require('@/assets/img/service/goods2.png'),
+        title: '文创作品名称',
+        price: '35',
+      },
+      {
+        img: require('@/assets/img/service/goods3.png'),
+        title: '文创作品名称',
+        price: '35',
+      },
+      {
+        img: require('@/assets/img/service/goods4.png'),
+        title: '文创作品名称',
+        price: '35',
+      },
+    ]
   };
 },
 computed: {},
@@ -161,18 +222,20 @@ methods: {
   onSearch(v) {
     console.log('search: ', v);
   },
-  onTravelPlageTabbarChange(idx) {
-    this.travelPlagueActiveIdx = idx
-    this.$nextTick(() => {
-      new Swiper(".swiper-container", {
-        slidesPerView: 1.4,
-        spaceBetween: 15,
-        centeredSlides: true,
-      })
-    })
+  // onTravelPlageTabbarChange(idx) {
+  //   this.travelPlagueActiveIdx = idx
+  //   this.$nextTick(() => {
+  //     new Swiper(".swiper-container", {
+  //       slidesPerView: 1.4,
+  //       spaceBetween: 15,
+  //       centeredSlides: true,
+  //     })
+  //   })
+  // },
+  onClickBanner() {
   },
-  onHelpCenterTabbarChange(idx) {
-    this.helpCenterActiveIdx = idx
+  onClickPathItem() {
+    this.$router.push({name: 'RecommendedPathDetail'})
   }
 },
 created() {
@@ -197,13 +260,14 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
   height: calc(100% - 80px);
   overflow: auto;
   .banner {
-    height: 31.9vw;
+    height: 57.9vw;
     background-image: url(~@/assets/img/service/banner.png);
     background-size: cover;
     background-repeat: no-repeat;
     background-position: center center;
     overflow: hidden;
     margin-bottom: 3.3vw;
+    text-align: center;
     .search-bar {
       margin: 6.1vw 4.4vw 0 4.4vw;
     }
@@ -218,7 +282,8 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
     height: 23.5vw;
     border-radius: 1.1vw;
     > .entry {
-      width: 12.1vw;
+      width: 12.2vw;
+      height: 12.2vw;
       display: flex;
       flex-direction: column;
       justify-content: space-between;
@@ -228,40 +293,40 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
       color: #535353;
       line-height: 1.1em;
       > img {
-        width: 100%;
+        width: 6.4vw;
         height: auto;
         margin-bottom: 2.7vw;
       }
     }
   }
 
-  > .travel-route-1 {
-    margin: 0 0 4vw 0;
-    height: 41.5vw;
-    background-image: url(~@/assets/img/service/travel-route-bg.png);
-    background-size: cover;
-    background-repeat: no-repeat;
-    background-position: center center;
-    overflow: hidden;
-    position: relative;
-    .entry {
-      position: absolute;
-      top: 1.5vw;
-      right: 0.7vw;
-      padding: 3.1vw 1.5vw;
-      background: rgba(15, 5, 9, 0.39);
-      font-size: 3.5vw;
-      font-weight: bold;
-      color: #FFFAFA;
-    }
-  }
+  // > .travel-route-1 {
+  //   margin: 0 0 4vw 0;
+  //   height: 41.5vw;
+  //   background-image: url(~@/assets/img/service/travel-route-bg.png);
+  //   background-size: cover;
+  //   background-repeat: no-repeat;
+  //   background-position: center center;
+  //   overflow: hidden;
+  //   position: relative;
+  //   .entry {
+  //     position: absolute;
+  //     top: 1.5vw;
+  //     right: 0.7vw;
+  //     padding: 3.1vw 1.5vw;
+  //     background: rgba(15, 5, 9, 0.39);
+  //     font-size: 3.5vw;
+  //     font-weight: bold;
+  //     color: #FFFAFA;
+  //   }
+  // }
 
   > .travel-route-2 {
     border-radius: 1.1vw;
     margin: 0 0.7vw 4vw 0.7vw;
     overflow: hidden;
     position: relative;
-    padding: 1.9vw 3.5vw 4.5vw;
+    padding: 3.7vw 3.5vw 4.5vw;
     background: #fff;
     > h3 {
       font-size: 3.5vw;
@@ -270,13 +335,13 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
     }
     .more {
       position: absolute;
-      top: 2.7vw;
+      top: 4vw;
       right: 3.6vw;
       font-size: 2.7vw;
       color: #333333;
     }
     .grid-wrap {
-      margin-top: 3.1rem;
+      margin-top: 3.1vw;
       display: flex;
       align-items: center;
       .left-wrap {
@@ -341,13 +406,124 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
     }
   }
 
-  > .travel-plague {
+  // > .travel-plague {
+  //   border-radius: 1.1vw;
+  //   margin: 0 0.7vw 4vw 0.7vw;
+  //   overflow: hidden;
+  //   position: relative;
+  //   padding: 1.9vw 3.5vw 4.5vw;
+  //   background: #fff;
+  //   > h3 {
+  //     font-size: 3.5vw;
+  //     font-weight: bold;
+  //     color: #000000;
+  //   }
+  //   .more {
+  //     position: absolute;
+  //     top: 2.7vw;
+  //     right: 3.6vw;
+  //     font-size: 2.7vw;
+  //     color: #333333;
+  //   }
+  //   .open-status {
+  //     margin-top: 6vw;
+  //     .swiper-slide {
+  //       width: 75.5vw;
+  //       height: 31.2vw;
+  //       > img {
+  //         position: absolute;
+  //         left: 0;
+  //         top: 0;
+  //         width: 100%;
+  //         height: 100%;
+  //       }
+  //       > .title-wrap {
+  //         position: absolute;
+  //         left: 0;
+  //         bottom: 0;
+  //         width: 100%;
+  //         height: 8.5vw;
+  //         background-color: rgba(15, 5, 9, 0.54);
+  //         display: flex;
+  //         justify-content: center;
+  //         align-items: center;
+  //         > h4 {
+  //           font-size: 3.2vw;
+  //           font-weight: 600;
+  //           color: #FFFFFF;
+  //         }
+  //       }
+  //     }
+  //   }
+  // }
+
+  // > .help-center {
+  //   border-radius: 1.1vw;
+  //   margin: 0 0.7vw 4vw 0.7vw;
+  //   position: relative;
+  //   padding: 1.9vw 3.5vw 4.5vw;
+  //   background: #fff;
+  //   // 滚动条整体部分,其中的属性有width,height,background,border等。
+  //   ::-webkit-scrollbar { width: 1.3vw; height: 1.3vw; } /*宽度是对垂直滚动条而言,高度是对水平滚动条而言*/
+  //   // 滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,改变颜色。
+  //   ::-webkit-scrollbar-button { display: none; }
+  //   // 滑动轨道。可以用display:none让其不显示,也可以添加背景图片,改变颜色。另外还有::webkit-scrollbar-track-piece这个是内层轨道?有吗?
+  //   ::-webkit-scrollbar-track { background: rgba(84, 84, 84, 0.11); border-radius: 0.5vw; }
+  //   // 滑块
+  //   ::-webkit-scrollbar-thumb { background: linear-gradient(0deg, #FF615C 0%, #FF9877 100%); border-radius: 0.5vw; }
+  //   // 横竖滚动条轨道交汇处
+  //   ::-webkit-scrollbar-corner { display: none; }
+  //   ::-webkit-scrollbar-resizer { display: none; }
+  //   > h3 {
+  //     font-size: 3.5vw;
+  //     font-weight: bold;
+  //     color: #000000;
+  //   }
+  //   .more {
+  //     position: absolute;
+  //     top: 2.7vw;
+  //     right: 3.6vw;
+  //     font-size: 2.7vw;
+  //     color: #333333;
+  //   }
+  //   > ul {
+  //     margin-top: 6vw;
+  //     height: 42vw;
+  //     overflow: auto;
+  //     > div {
+  //       border-bottom: 1px solid #E5E5E5;
+  //       margin-bottom: 7.1vw;
+  //       &:last-of-type {
+  //         border-bottom: initial;
+  //         margin-bottom: initial;
+  //       }
+  //       > h4 {
+  //         font-size: 3.2vw;
+  //         font-weight: bold;
+  //         color: #000000;
+  //         overflow: hidden;
+  //         white-space: pre;
+  //         text-overflow: ellipsis;
+  //         margin-bottom: 3.9vw;
+  //       }
+  //       > span {
+  //         display: inline-block;
+  //         margin-right: 2em;
+  //         margin-bottom: 1.5vw;
+  //         font-size: 3.2vw;
+  //         color: #DCDCDC;
+  //       }
+  //     }
+  //   }
+  // }
+
+  > .public-service {
+    margin: 0 0.8vw 6.5vw 0.8vw;
+    background: #fff;
     border-radius: 1.1vw;
-    margin: 0 0.7vw 4vw 0.7vw;
     overflow: hidden;
     position: relative;
-    padding: 1.9vw 3.5vw 4.5vw;
-    background: #fff;
+    padding: 3.7vw 3.5vw 2vw;
     > h3 {
       font-size: 3.5vw;
       font-weight: bold;
@@ -355,98 +531,96 @@ activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
     }
     .more {
       position: absolute;
-      top: 2.7vw;
+      top: 4vw;
       right: 3.6vw;
       font-size: 2.7vw;
       color: #333333;
     }
-    .open-status {
-      margin-top: 6vw;
-      .swiper-slide {
-        width: 75.5vw;
-        height: 31.2vw;
+    > menu {
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+      height: 23.5vw;
+      border-radius: 1.1vw;
+      > .entry {
+        width: 15vw;
+        height: 15vw;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+        align-items: center;
+        font-size: 2.9vw;
+        font-weight: bold;
+        color: #535353;
+        line-height: 1.1em;
         > img {
-          position: absolute;
-          left: 0;
-          top: 0;
-          width: 100%;
-          height: 100%;
-        }
-        > .title-wrap {
-          position: absolute;
-          left: 0;
-          bottom: 0;
-          width: 100%;
-          height: 8.5vw;
-          background-color: rgba(15, 5, 9, 0.54);
-          display: flex;
-          justify-content: center;
-          align-items: center;
-          > h4 {
-            font-size: 3.2vw;
-            font-weight: 600;
-            color: #FFFFFF;
-          }
+          height: 8vw;
+          margin-bottom: 2.7vw;
         }
       }
     }
   }
-
-  > .help-center {
+  
+  > .wen-chuang-zuo-pin {
+    margin: 0 0.8vw 6.5vw 0.8vw;
+    background: #fff;
     border-radius: 1.1vw;
-    margin: 0 0.7vw 4vw 0.7vw;
+    overflow: hidden;
     position: relative;
-    padding: 1.9vw 3.5vw 4.5vw;
-    background: #fff;
-    // 滚动条整体部分,其中的属性有width,height,background,border等。
-    ::-webkit-scrollbar { width: 1.3vw; height: 1.3vw; } /*宽度是对垂直滚动条而言,高度是对水平滚动条而言*/
-    // 滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,改变颜色。
-    ::-webkit-scrollbar-button { display: none; }
-    // 滑动轨道。可以用display:none让其不显示,也可以添加背景图片,改变颜色。另外还有::webkit-scrollbar-track-piece这个是内层轨道?有吗?
-    ::-webkit-scrollbar-track { background: rgba(84, 84, 84, 0.11); border-radius: 0.5vw; }
-    // 滑块
-    ::-webkit-scrollbar-thumb { background: linear-gradient(0deg, #FF615C 0%, #FF9877 100%); border-radius: 0.5vw; }
-    // 横竖滚动条轨道交汇处
-    ::-webkit-scrollbar-corner { display: none; }
-    ::-webkit-scrollbar-resizer { display: none; }
+    padding: 3.7vw 3.5vw 4.5vw;
     > h3 {
       font-size: 3.5vw;
       font-weight: bold;
       color: #000000;
+      margin-bottom: 4vw;;
     }
     .more {
       position: absolute;
-      top: 2.7vw;
+      top: 4vw;
       right: 3.6vw;
       font-size: 2.7vw;
       color: #333333;
     }
-    > ul {
-      margin-top: 6vw;
-      height: 42vw;
-      overflow: auto;
-      > div {
-        border-bottom: 1px solid #E5E5E5;
-        margin-bottom: 7.1vw;
-        &:last-of-type {
-          border-bottom: initial;
-          margin-bottom: initial;
+    > div.card-list {
+      margin-right: -4.1vw;
+      > .card {
+        display: inline-block;
+        width: calc(50% - 4.1vw);
+        height: 64.7vw;
+        background: #F7F8FA;
+        border-radius: 1.1vw;
+        overflow: hidden;
+        margin-right: 4.1vw;
+        margin-bottom: 2.3vw;
+        > img.photo {
+          width: 100%;
+          height: 44.5vw;
+          object-fit: cover;
+          margin-bottom: 3.1vw;
         }
-        > h4 {
+        > h3 {
           font-size: 3.2vw;
           font-weight: bold;
-          color: #000000;
-          overflow: hidden;
-          white-space: pre;
-          text-overflow: ellipsis;
-          margin-bottom: 3.9vw;
+          color: #333333;
+          margin-left: 2.3vw;
+          margin-right: 2.3vw;
+          margin-bottom: 3.5vw;
         }
-        > span {
-          display: inline-block;
-          margin-right: 2em;
-          margin-bottom: 1.5vw;
-          font-size: 3.2vw;
-          color: #DCDCDC;
+        > .bottom-bar {
+          margin-left: 2.3vw;
+          margin-right: 2.3vw;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          > .price {
+            font-size: 2.7vw;
+            font-weight: bold;
+            color: #FF0000;
+          }
+          > img.icon {
+            width: 4.1vw;
+            height: 4.1vw;
+          }
         }
       }
     }