const TabsPagePlugin = { install(Vue) { Vue.mixin({ methods: { $closePage(closeRoute, nextRoute) { const event = new CustomEvent('page:close', {detail:{closeRoute, nextRoute}}) window.dispatchEvent(event) }, $refreshPage(route) { const path = typeof route === 'object' ? route.path : route const event = new CustomEvent('page:refresh', {detail:{pageKey: path}}) window.dispatchEvent(event) }, $openPage(route, title) { this.$setPageTitle(route, title) this.$router.push(route) }, $setPageTitle(route, title) { if (title) { let path = typeof route === 'object' ? route.path : route path = path && path.split('?')[0] this.$store.commit('setting/setCustomTitle', {path, title}) } } }, computed: { customTitle() { const customTitles = this.$store.state.setting.customTitles const path = this.$route.path.split('?')[0] const custom = customTitles.find(item => item.path === path) return custom && custom.title } } }) } } export default TabsPagePlugin