Browse Source
feat: 支持多标签Tab页功能 (#89)
feat: 支持多标签Tab页功能 (#89)
* feat: support tabs page * chore: adjust position * feat: add switch for tabs page * feat: implement home tabpull/91/head 0.1.4
yuyang
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 282 additions and 68 deletions
-
1src/config/style.ts
-
1src/layouts/blank.vue
-
20src/layouts/components/Content.vue
-
13src/layouts/components/SideNav.tsx
-
136src/layouts/index.tsx
-
3src/layouts/setting.vue
-
1src/pages/dashboard/base/index.vue
-
1src/pages/dashboard/detail/index.vue
-
2src/pages/detail/advanced/index.vue
-
2src/pages/detail/base/index.vue
-
2src/pages/detail/deploy/index.vue
-
2src/pages/detail/secondary/index.vue
-
7src/pages/form/base/index.vue
-
1src/pages/form/step/index.vue
-
2src/pages/list/base/index.vue
-
2src/pages/list/card/index.vue
-
2src/pages/list/filter/index.vue
-
2src/pages/list/tree/index.vue
-
2src/pages/result/403/index.vue
-
2src/pages/result/404/index.vue
-
2src/pages/result/500/index.vue
-
2src/pages/result/browser-incompatible/index.vue
-
2src/pages/result/fail/index.vue
-
2src/pages/result/network-error/index.vue
-
2src/pages/result/success/index.vue
-
2src/pages/user/index.vue
-
4src/router/modules/base.ts
-
34src/router/modules/components.ts
-
2src/router/modules/others.ts
-
2src/store/index.ts
-
6src/store/modules/setting.ts
-
63src/store/modules/tab-router.ts
-
22src/style/layout.less
-
1tsconfig.json
@ -0,0 +1,63 @@ |
|||
export type TRouterInfo = { |
|||
path: string; |
|||
routeIdx: number; |
|||
name?: string; |
|||
isAlive?: boolean; |
|||
isHome?: boolean; |
|||
}; |
|||
|
|||
export type TTabRouterType = { |
|||
isRefreshing: boolean; |
|||
tabRouterList: Array<TRouterInfo>; |
|||
}; |
|||
|
|||
const state: TTabRouterType = { |
|||
tabRouterList: [{ path: '/dashboard/base', routeIdx: 0, name: '仪表盘', isHome: true }], |
|||
isRefreshing: false, |
|||
}; |
|||
|
|||
const mutations = { |
|||
toggleTabRouterAlive(state: TTabRouterType, routeIdx: number) { |
|||
state.isRefreshing = !state.isRefreshing; |
|||
state.tabRouterList[routeIdx].isAlive = !state.tabRouterList[routeIdx].isAlive; |
|||
}, |
|||
appendTabRouterList(state: TTabRouterType, newRoute: TRouterInfo) { |
|||
if (!state.tabRouterList.find((route: TRouterInfo) => route.path === newRoute.path)) |
|||
// eslint-disable-next-line no-param-reassign
|
|||
state.tabRouterList = state.tabRouterList.concat(newRoute); |
|||
}, |
|||
subtractCurrentTabRouter(state: TTabRouterType, newRoute: TRouterInfo) { |
|||
const { routeIdx } = newRoute; |
|||
state.tabRouterList = state.tabRouterList.slice(0, routeIdx).concat(state.tabRouterList.slice(routeIdx + 1)); |
|||
}, |
|||
subtractTabRouterBehind(state: TTabRouterType, newRoute: TRouterInfo) { |
|||
const { routeIdx } = newRoute; |
|||
state.tabRouterList = state.tabRouterList.slice(0, routeIdx + 1); |
|||
}, |
|||
subtractTabRouterAhead(state: TTabRouterType, newRoute: TRouterInfo) { |
|||
const { routeIdx } = newRoute; |
|||
state.tabRouterList = state.tabRouterList.slice(routeIdx); |
|||
}, |
|||
subtractTabRouterOther(state: TTabRouterType, newRoute: TRouterInfo) { |
|||
const { routeIdx } = newRoute; |
|||
state.tabRouterList = [state.tabRouterList?.[routeIdx]]; |
|||
}, |
|||
removeTabRouterList() { |
|||
state.tabRouterList = []; |
|||
}, |
|||
}; |
|||
|
|||
const getters = { |
|||
tabRouterList: (state: TTabRouterType) => state.tabRouterList, |
|||
isRefreshing: (state: TTabRouterType) => state.isRefreshing, |
|||
}; |
|||
|
|||
const actions = {}; |
|||
|
|||
export default { |
|||
namespaced: true, |
|||
state, |
|||
mutations, |
|||
actions, |
|||
getters, |
|||
}; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue