|  | @@ -25,6 +25,47 @@
 | 
	
		
			
				|  |  |          </q-carousel-slide>
 | 
	
		
			
				|  |  |        </q-carousel>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  | +    <div class="row q-pa-md">
 | 
	
		
			
				|  |  | +      <div class="q-gutter-y-md col-6">
 | 
	
		
			
				|  |  | +        <q-tabs v-model="tab" dense align="justify" class="text-primary">
 | 
	
		
			
				|  |  | +          <q-tab :ripple="false" name="lg" label="Latest Guidebooks" />
 | 
	
		
			
				|  |  | +          <q-tab
 | 
	
		
			
				|  |  | +            :ripple="false"
 | 
	
		
			
				|  |  | +            name="mdg"
 | 
	
		
			
				|  |  | +            label="Most Downloaded Guidebooks"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </q-tabs>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +    <div class="row justify-left">
 | 
	
		
			
				|  |  | +      <div
 | 
	
		
			
				|  |  | +        class="col-12 col-sm-4 col-md-2"
 | 
	
		
			
				|  |  | +        v-for="item in guidebooks"
 | 
	
		
			
				|  |  | +        :key="item.guideId"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +        <div class="q-pa-md">
 | 
	
		
			
				|  |  | +          <q-card
 | 
	
		
			
				|  |  | +            @click="gotoUrl(item.downloadUrl)"
 | 
	
		
			
				|  |  | +            class="guidebook-card cursor-pointer rounded-borders"
 | 
	
		
			
				|  |  | +            @mouseenter="hoverFlag = true"
 | 
	
		
			
				|  |  | +            @mouseleave="hoverFlag = false"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <q-img
 | 
	
		
			
				|  |  | +              class="rounded-borders"
 | 
	
		
			
				|  |  | +              style="height: 100%"
 | 
	
		
			
				|  |  | +              :src="item.coverImageUrl"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <div class="absolute-bottom">
 | 
	
		
			
				|  |  | +                <div class="text-h6">{{ item.destinationName }}</div>
 | 
	
		
			
				|  |  | +                <div class="text-subtitle2">
 | 
	
		
			
				|  |  | +                  {{ item.parentDestinationName }}
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </q-img>
 | 
	
		
			
				|  |  | +          </q-card>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  |    </q-page>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -35,6 +76,9 @@ export default {
 | 
	
		
			
				|  |  |    name: "GuideIntroPage",
 | 
	
		
			
				|  |  |    setup() {
 | 
	
		
			
				|  |  |      const sliders = ref([]);
 | 
	
		
			
				|  |  | +    const pageSize = ref(1000);
 | 
	
		
			
				|  |  | +    const currentPage = ref(1);
 | 
	
		
			
				|  |  | +    const guidebooks = ref([]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      function loadSliders() {
 | 
	
		
			
				|  |  |        api
 | 
	
	
		
			
				|  | @@ -49,14 +93,44 @@ export default {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    function loadGuideBooks() {
 | 
	
		
			
				|  |  | +      console.log("loading latest guidebooks...");
 | 
	
		
			
				|  |  | +      var params = {};
 | 
	
		
			
				|  |  | +      params.pageSize = pageSize.value;
 | 
	
		
			
				|  |  | +      params.page = currentPage.value;
 | 
	
		
			
				|  |  | +      (params.query = ""),
 | 
	
		
			
				|  |  | +        api
 | 
	
		
			
				|  |  | +          .get("/api/public/guidebook", {
 | 
	
		
			
				|  |  | +            params: params,
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +          .then(function (response) {
 | 
	
		
			
				|  |  | +            console.log("all guidebook list:");
 | 
	
		
			
				|  |  | +            guidebooks.value = response.data.data.data;
 | 
	
		
			
				|  |  | +            console.log(guidebooks.value);
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +          .catch(function (error) {
 | 
	
		
			
				|  |  | +            console.log(error);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      onMounted(() => {
 | 
	
		
			
				|  |  |        loadSliders();
 | 
	
		
			
				|  |  | +      loadGuideBooks();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  | +      hoverFlag: ref(true),
 | 
	
		
			
				|  |  |        slide: ref(1),
 | 
	
		
			
				|  |  |        sliders,
 | 
	
		
			
				|  |  | +      tab: ref("lg"),
 | 
	
		
			
				|  |  | +      guidebooks,
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  | +<style lang="sass" scoped>
 | 
	
		
			
				|  |  | +.guidebook-card
 | 
	
		
			
				|  |  | +  width: 100%
 | 
	
		
			
				|  |  | +  max-width: 350px
 | 
	
		
			
				|  |  | +  height: 300px
 | 
	
		
			
				|  |  | +</style>
 |