|
1 | 1 | <template> |
2 | 2 | <div class="layout"> |
3 | | - <tiny-container :aside-width="250" :pattern="myPattern"> |
4 | | - <template #header> |
5 | | - <tiny-layout> |
6 | | - <div class="layout-navbar"> |
7 | | - <NavBar /> |
8 | | - </div> |
9 | | - </tiny-layout> |
10 | | - </template> |
11 | | - <template #aside> |
12 | | - <tiny-layout class="layout-sider"> |
13 | | - <div class="menu-wrapper"> |
14 | | - <Suspense> |
15 | | - <Menu v-if="reloadKey !== 'menu'" /> |
16 | | - </Suspense> |
17 | | - </div> |
18 | | - </tiny-layout> |
19 | | - </template> |
20 | | - <tiny-layout class="layout-content"> |
21 | | - <Tabs |
22 | | - :key="tabsRefreshKey" |
23 | | - v-model="currentTabName" |
24 | | - with-close |
25 | | - @click="onClick" |
26 | | - @close="onClose" |
27 | | - > |
28 | | - <tab-item |
29 | | - v-for="(history, idx) of tabsHistory" |
30 | | - :key="idx" |
31 | | - :title="t(history.name)" |
32 | | - :name="history.link" |
33 | | - ></tab-item> |
34 | | - </Tabs> |
35 | | - <PageLayout /> |
36 | | - </tiny-layout> |
37 | | - <template #footer> |
38 | | - <tiny-layout> |
39 | | - <div class="layout-footer"> |
40 | | - <Footer /> |
41 | | - </div> |
42 | | - </tiny-layout> |
43 | | - </template> |
44 | | - </tiny-container> |
| 3 | + <div> |
| 4 | + <div class="shadow-[0_4px_6px_#0003] relative z-[999]"> |
| 5 | + <NavBar v-if="layoutMode[myPattern].navbar"/> |
| 6 | + </div> |
| 7 | + <div class="flex"> |
| 8 | + <Suspense> |
| 9 | + <Menu v-if="reloadKey !== 'menu' && layoutMode[myPattern].menu" class="shadow-[0_4px_12px_#0000001a] z-[100]" /> |
| 10 | + </Suspense> |
| 11 | + <div class="text-[#ccc] bg-[#f5f6f7] pl-[10px] pr-[10px] flex-1 h-[calc(100vh-60px)]" :style="{ width: isMenuCollapsed ? '100%' : 'calc(100% - 220px)' }"> |
| 12 | + <Tabs |
| 13 | + :key="tabsRefreshKey" |
| 14 | + v-model="currentTabName" |
| 15 | + with-close |
| 16 | + @click="onClick" |
| 17 | + @close="onClose" |
| 18 | + > |
| 19 | + <tab-item |
| 20 | + v-for="(history, idx) of tabsHistory" |
| 21 | + :key="idx" |
| 22 | + :title="t(history.name)" |
| 23 | + :name="history.link" |
| 24 | + ></tab-item> |
| 25 | + </Tabs> |
| 26 | + <PageLayout class="!h-[calc(100%-120px)]" /> |
| 27 | + <Footer v-if="layoutMode[myPattern].footer" class="h-[60px]" /> |
| 28 | + </div> |
| 29 | + </div> |
| 30 | + </div> |
45 | 31 | <div class="theme-box" @click="themeVisible"> |
46 | 32 | <img src="@/assets/images/theme.png" /> |
47 | 33 | </div> |
|
104 | 90 | const tabsHistory = computed(() => tabStore.data); |
105 | 91 | const currentTabName = ref(); |
106 | 92 |
|
| 93 | + const { isMenuCollapsed } = appStore; |
| 94 | +
|
107 | 95 | const reloadKey = ref(''); |
108 | 96 | const reloadMenu = () => { |
109 | 97 | reloadKey.value = 'menu'; |
|
203 | 191 | // 是否显示切换框架结构 |
204 | 192 | const myPattern = ref('legend'); |
205 | 193 |
|
| 194 | + const layoutMode = { |
| 195 | + // 传奇布局 |
| 196 | + legend: { |
| 197 | + navbar: true, |
| 198 | + menu: true, |
| 199 | + footer: true, |
| 200 | + }, |
| 201 | + // 简约布局 |
| 202 | + simple: { |
| 203 | + navbar: false, |
| 204 | + menu: true, |
| 205 | + footer: false, |
| 206 | + }, |
| 207 | + // 时尚布局 |
| 208 | + fashion: { |
| 209 | + navbar: true, |
| 210 | + menu: true, |
| 211 | + footer: false, |
| 212 | + }, |
| 213 | + // 经典布局 |
| 214 | + classic: { |
| 215 | + navbar: true, |
| 216 | + menu: false, |
| 217 | + footer: true, |
| 218 | + }, |
| 219 | + // 默认布局 |
| 220 | + default: { |
| 221 | + navbar: true, |
| 222 | + menu: true, |
| 223 | + footer: false, |
| 224 | + }, |
| 225 | + } |
| 226 | +
|
206 | 227 | // 主题配置 |
207 | 228 | const disTheme = ref(false); |
208 | 229 | const theme = new TinyThemeTool(); |
|
0 commit comments