<!--
 * @Author: ch
 * @Date: 2022-05-04 17:56:39
 * @LastEditors: ch
 * @LastEditTime: 2022-05-08 15:53:49
 * @Description: file content
-->
<template>
  <div class="layout">
    <BsLogin :visible.sync="loginVisible" />
    <Header
      :is-categroy-open="categroyOption.open"
      :show-categroy-tab="categroyOption.show"
      :is-sticky="isSticky"
    />
    <Nuxt />
    <Footer />
  </div>
</template>
<script>
import BsLogin from "@/components/BsLogin.vue";
import Header from "./module/header/index.vue";
import Footer from "./module/footer/index.vue";
const CATEGROY_OPEN_PAGES = ["/"]; // 默认展开热门分类tab的页面
const CATEGROY_HIDE_PAGES = ["/account"]; // 不展示热门分类tab的页面

export default {
  name: "Layout",
  components: { Header, Footer, BsLogin },
  data() {
    return {
      isSticky: false,
      ticking: false,
    };
  },
  computed: {
    loginVisible: {
      get() {
        return this.$store.state.loginVisible;
      },
      set(val) {
        this.$store.commit("setLoginVisible", val);
      },
    },
    categroyOption() {
      // 当前页面路径
      const currentPath = this.$route.path;
      return {
        open: CATEGROY_OPEN_PAGES.includes(currentPath),
        show: !CATEGROY_HIDE_PAGES.includes(currentPath),
      };
    },
  },
  mounted() {
    // 监听滚动事件
    window.addEventListener("scroll", this.scrollEventMethod);
  },
  destroyed() {
    window.removeEventListener("scroll", this.scrollEventMethod);
  },
  methods: {
    scrollEventMethod(e) {
      const that = this;
      // 节流
      if (!that.ticking) {
        window.requestAnimationFrame(function () {
          that.ticking = false;
          that.isSticky = window.scrollY > 300;
        });
        that.ticking = true;
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.layout-footer {
  height: 189px;
  background: #ddd;
}
</style>
