tabActiveMemory.js 830 Bytes
import { mapState, mapActions } from 'vuex'

export default {
  data() {
    return {
    }
  },
  beforeRouteEnter(to, from, next) {
    next((vm) => {
      if(['startProcess', 'approvalForm'].includes(from.name)) {
        // 从详情页回来,需要读取缓存中的 tabActive 默认选中进入详情页前选中的 tab
        vm.active = vm.tabActiveMap.get(vm.$route.name)
      }
      vm.init()
    })
  },
  beforeRouteLeave(to, from, next) {
    if(['startProcess', 'approvalForm'].includes(to.name)) {
      this.setTabActiveMemory(this.active)
    }
    next()
  },
  methods: {
    ...mapActions('tabActive', ['setTabActive']),
    setTabActiveMemory(activeIndex) {
      this.setTabActive({tabName: this.$route.name, activeIndex})
    }
  },
  computed: {
    ...mapState('tabActive', ['tabActiveMap'])
  },
}