// 页面TabsPagePlugin的使用
const TabsPagePlugin = { // 标签页插件
  install(Vue) { // 安装插件
    Vue.mixin({ // 混入
      methods: {
        $closePage(closeRoute, nextRoute) { // 关闭页面
          const event = new CustomEvent('page:close', {detail:{closeRoute, nextRoute}}) // 创建自定义事件
          window.dispatchEvent(event) // 触发自定义事件
        },
        $closeOthers(path) { // 关闭页面
          const event = new CustomEvent('page:closeOthers', {detail:path}) // 创建自定义事件
          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
