123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <template>
- <div class="footer-nav">
- <span
- v-if="leftNav"
- class="footer-nav-link footer-nav-left"
- @click="handleNavClick('prev')">
- <i class="el-icon-arrow-left"></i>
- {{ leftNav.title || leftNav.name }}
- </span>
- <span
- v-if="rightNav"
- class="footer-nav-link footer-nav-right"
- @click="handleNavClick('next')">
- {{ rightNav.title || rightNav.name }}
- <i class="el-icon-arrow-right"></i>
- </span>
- </div>
- </template>
- <style>
- .footer-nav {
- padding: 40px 0;
- color: #333;
- font-size: 14px;
-
- &::after {
- content: '';
- display: block;
- clear: both;
- }
-
- & i {
- transition: .3s;
- color: #999;
- vertical-align: baseline;
- }
- }
-
- .footer-nav-link {
- cursor: pointer;
- transition: .3s;
-
- &:hover {
- color: #1989fa;
-
- & i {
- color: #1989fa;
- }
- }
- }
-
- .footer-nav-left {
- float: left;
- margin-left: -4px;
- }
-
- .footer-nav-right {
- float: right;
- margin-right: -4px;
- }
- </style>
- <script>
- import navConfig from '../nav.config.json';
- export default {
- data() {
- return {
- currentComponent: null,
- nav: [],
- currentIndex: -1,
- leftNav: null,
- rightNav: null
- };
- },
- computed: {
- lang() {
- return this.$route.meta.lang;
- }
- },
- watch: {
- '$route.path'() {
- this.setNav();
- this.updateNav();
- }
- },
- methods: {
- setNav() {
- let nav = navConfig[this.lang];
- this.nav = [nav[0]].concat(nav[2].children);
- nav[3].groups.map(group => group.list).forEach(list => {
- this.nav = this.nav.concat(list);
- });
- },
- updateNav() {
- this.currentComponent = '/' + this.$route.path.split('/')[3];
- for (let i = 0, len = this.nav.length; i < len; i++) {
- if (this.nav[i].path === this.currentComponent) {
- this.currentIndex = i;
- break;
- }
- }
- this.leftNav = this.nav[this.currentIndex - 1];
- this.rightNav = this.nav[this.currentIndex + 1];
- },
- handleNavClick(direction) {
- this.$router.push(`/${ this.lang }/component${ direction === 'prev' ? this.leftNav.path : this.rightNav.path }`);
- }
- },
- created() {
- this.setNav();
- this.updateNav();
- }
- };
- </script>
|