| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import {
- defineStore
- } from 'pinia'
- import {
- ref,
- computed
- } from 'vue'
- import router from '@/router'
-
- export const useTabsBarStore = defineStore('tabsBar', () => {
-
- const openedPageList = ref([])
- const activePage = ref({
- 'name': '',
- 'path': ''
- })
-
- function addTab(data) {
- //添加到当前活动页后面
- let index = 1
- for (let openedPage of openedPageList.value) {
- if (openedPage.path === activePage.value.path) {
- break
- }
- index++
- }
- openedPageList.value.splice(index, 0, {
- 'name': data.name,
- 'path': data.path
- })
- //删除刷新时产生的空白
- let indexRemove = 0
- for (let openedPage of openedPageList.value) {
- if (openedPage.name === null || openedPage.name === '') {
- break
- }
- indexRemove++
- }
- openedPageList.value.splice(indexRemove, 1)
- }
-
- function removeTab(path) {
- let index = 0
- for (let openedPage of openedPageList.value) {
- if (openedPage.path === path) {
- break
- }
- index++
- }
- openedPageList.value.splice(index, 1)
-
-
- if (openedPageList.value.length == 0) {
- openedPageList.value.push({
- 'name': '主页',
- 'path': '/main'
- })
- activePage.value = {
- 'name': '主页',
- 'path': '/main'
- }
-
- router.push({
- 'path': '/main'
- })
- }
- }
-
- function setActive(data) {
- activePage.value = {
- name: data.name,
- path: data.path
- }
- }
-
- function setOpenedPageList(list) {
- openedPageList.value = list
- }
-
- return {
- openedPageList,
- activePage,
-
- addTab,
- removeTab,
- setActive,
- setOpenedPageList
- }
- }, {
- persist: true,
- }
-
- )
|