@lambo-design/pro-layout 1.0.0-beta.48 → 1.0.0-beta.481

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/package.json +11 -4
  2. package/src/components/pro-layout-header/index.vue +224 -0
  3. package/src/components/pro-layout-header/pro-layout-logo/index.vue +206 -0
  4. package/src/components/pro-layout-header/pro-layout-nav/components/pro-layout-nav-slide-menu.vue +398 -0
  5. package/src/components/pro-layout-header/pro-layout-nav/index-slide.vue +226 -0
  6. package/src/components/pro-layout-header/pro-layout-nav/index.vue +564 -0
  7. package/src/components/pro-layout-header/pro-layout-slogan/index.vue +40 -0
  8. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-collect.vue +79 -0
  9. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-document.vue +116 -0
  10. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-fullscreen.vue +144 -0
  11. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-icons.vue +104 -0
  12. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-intl.vue +111 -0
  13. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-notice.vue +133 -0
  14. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-search.vue +305 -0
  15. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-todo.vue +145 -0
  16. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-todoCenter.vue +177 -0
  17. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-user.vue +86 -0
  18. package/src/components/pro-layout-header/pro-layout-tools/index.vue +32 -0
  19. package/src/components/pro-layout-header/pro-layout-trigger/index.vue +84 -0
  20. package/src/components/pro-layout-sider/components/pro-layout-sider-app-name.vue +123 -0
  21. package/src/components/{pro-layout-sider-collapsed-menu.vue → pro-layout-sider/components/pro-layout-sider-collapsed-menu.vue} +30 -11
  22. package/src/components/{pro-layout-sider-icon.vue → pro-layout-sider/components/pro-layout-sider-icon.vue} +2 -2
  23. package/src/components/pro-layout-sider/components/pro-layout-sider-menu-item.vue +139 -0
  24. package/src/components/pro-layout-sider/components/pro-layout-sider-other-menu.vue +140 -0
  25. package/src/components/pro-layout-sider/components/pro-layout-sider-search.vue +345 -0
  26. package/src/components/pro-layout-sider/index.vue +493 -0
  27. package/src/components/{pro-layout-tabs.vue → pro-layout-tabs/index.vue} +121 -23
  28. package/src/index.vue +366 -44
  29. package/src/styles/color.less +267 -0
  30. package/src/styles/images/xiaoxitongzhi.png +0 -0
  31. package/src/styles/other-menu.less +63 -111
  32. package/src/utils/menuItem.js +10 -0
  33. package/src/utils/sider.js +16 -1
  34. package/src/components/pro-layout-header.vue +0 -52
  35. package/src/components/pro-layout-logo.vue +0 -79
  36. package/src/components/pro-layout-nav.vue +0 -150
  37. package/src/components/pro-layout-other-menu.vue +0 -137
  38. package/src/components/pro-layout-sider-menu-item.vue +0 -37
  39. package/src/components/pro-layout-sider.vue +0 -240
  40. package/src/components/pro-layout-tools-user.vue +0 -84
  41. package/src/components/pro-layout-tools.vue +0 -21
  42. package/src/components/pro-layout-trigger.vue +0 -48
@@ -0,0 +1,493 @@
1
+ <template>
2
+ <div ref="listenWidth" class="pro-layout-sider-wrapper"
3
+ :class="[(collapsed || systemInfo.showSearchMenu === '0') ? 'menu-has-collapsed' : '',tabsHeight != 46 ? 'custom-tabs' : '']">
4
+ <Menu v-show="!collapsed" ref="menu"
5
+ :accordion="isAccordionMode" :active-name="activeName"
6
+ :open-names="openedNames" theme="dark"
7
+ width="auto" @on-select="handleSelect"
8
+ @on-open-change="handleOpenChange">
9
+ <template v-for="(item,index) in menuList">
10
+ <template v-if="item.children && item.children.length === 1">
11
+ <ProLayoutSiderMenuItem v-if="showChildren(item)"
12
+ :key="`menu-${item.name}`"
13
+ :parent-item="item"
14
+ :collect-map="isCollected"
15
+ :system-info="systemInfo"
16
+ :nav-list="navList">
17
+ </ProLayoutSiderMenuItem>
18
+ <MenuItem v-else :key="`menu-${item.children[0].name}`"
19
+ :name="getNameOrHref(item, true)">
20
+ <Row type="flex" justify="center" align="top">
21
+ <Col :span="getSpanNum(systemInfo,'icon')">
22
+ <Icon v-if="systemInfo.menuLogo == '1' && item.type == 2" :type="isCollected.hasOwnProperty(item.name) ? 'ios-star' : 'ios-star-outline'"
23
+ @click.stop="toggleCollect(item)"></Icon>
24
+ <ProLayoutSiderIcon v-else-if="systemInfo.menuLogo == '1'" :icon-type="item.meta.icon"></ProLayoutSiderIcon>
25
+ </Col>
26
+ <Col :span="getSpanNum(systemInfo,'title')">
27
+ <div :class="['menu-title-' + item.children[0].permissionId,'draggable-text']" v-draggable-menu="dragOptions(item.children[0])">
28
+ <Tooltip style="width: 100%" v-if="systemInfo.titleShow ==='ellipsis'" placement="right" transfer :content="showTitle(item.children[0])">
29
+ <div class="menu-title-nochildren-ellipsis">{{ showTitle(item.children[0]) }}</div>
30
+ </Tooltip>
31
+ <span v-else class="menu-title-nochildren-wrap">{{ showTitle(item.children[0]) }}</span>
32
+ </div>
33
+ </Col>
34
+ </Row>
35
+ </MenuItem>
36
+ </template>
37
+ <template v-else>
38
+ <ProLayoutSiderMenuItem v-if="showChildren(item)"
39
+ :key="`menu-${item.name}`"
40
+ :parent-item="item"
41
+ :collect-map="isCollected"
42
+ :system-info="systemInfo"
43
+ :nav-list="navList">
44
+ </ProLayoutSiderMenuItem>
45
+ <MenuItem v-else :key="`menu-${item.name}`"
46
+ :name="getNameOrHref(item)">
47
+ <Row type="flex" justify="center" align="top">
48
+ <Col :span="getSpanNum(systemInfo,'icon')">
49
+ <Icon v-if="systemInfo.menuLogo == '1' && item.type == 2" :type="isCollected.hasOwnProperty(item.name) ? 'ios-star' : 'ios-star-outline'"
50
+ @click.stop="toggleCollect(item)"></Icon>
51
+ <ProLayoutSiderIcon v-else-if="systemInfo.menuLogo == '1'" :icon-type="item.meta.icon"></ProLayoutSiderIcon>
52
+ </Col>
53
+ <Col :span="getSpanNum(systemInfo,'title')">
54
+ <div :class="['menu-title-' + item.permissionId,'draggable-text']" v-draggable-menu="dragOptions(item)">
55
+ <Tooltip style="width: 100%" v-if="systemInfo.titleShow ==='ellipsis'" placement="right" transfer :content="showTitle(item)">
56
+ <div class="menu-title-nochildren-ellipsis">{{ showTitle(item) }}</div>
57
+ </Tooltip>
58
+ <span v-else class="menu-title-nochildren-wrap">{{ showTitle(item) }}</span>
59
+ </div>
60
+ </Col>
61
+ </Row>
62
+ </MenuItem>
63
+ </template>
64
+ </template>
65
+ </Menu>
66
+
67
+ <ProLayoutSiderOtherMenu v-show="systemInfo.showHistoryAndCollect !== '0'" :style="systemInfo.menuScaling === '0' ? { width: otherWidth } : {}" :collapsed="collapsed" @select-menu="selectMenu"></ProLayoutSiderOtherMenu>
68
+ <ProLayoutSiderSearch
69
+ :style="systemInfo.menuScaling === '0' ? { width: otherWidth } : {}"
70
+ v-show="!collapsed && (systemInfo.showSearchMenu !== '0') && mainType !== 'singleAppDrop'"
71
+ :searchType="0"
72
+ @select-menu="selectMenu"
73
+ ></ProLayoutSiderSearch>
74
+ <ProLayoutSiderAppName
75
+ :style="systemInfo.menuScaling === '0' ? { width: otherWidth } : {}"
76
+ v-show="!collapsed && mainType === 'singleAppDrop'"
77
+ >
78
+ </ProLayoutSiderAppName>
79
+ <div v-show="collapsed" :list="menuList" class="menu-collapsed" >
80
+ <template v-for="item in menuList">
81
+ <ProLayoutSiderCollapsedMenu v-if="item.children && item.children.length > 0" :key="`drop-menu-${item.name}`"
82
+ :parent-item="item" theme="dark" hide-title transfer
83
+ @on-click="handleSelect" :active-item="openedNames">
84
+ </ProLayoutSiderCollapsedMenu>
85
+ <Tooltip v-else :key="`drop-menu-${item.name}`" :content="showTitle(item.children && item.children[0] ? item.children[0] : item)"
86
+ placement="right" transfer>
87
+ <template v-slot:default="{ active }">
88
+ <a :style="{textAlign: 'center'}"
89
+ :class="['drop-menu-a', item.name === selectedTopParent ? 'selected-parent' : '']"
90
+ @click="handleSelect(getNameOrHref(item, true))">
91
+ <!-- <i :class="[item.meta.icon, selectedIconType === item.meta.icon ? 'selected-icon' : '']"></i>-->
92
+ <ProLayoutSiderIcon :icon-type="item.meta.icon" icon-size="26" :class="{ 'selected-icon': item.name === selectedTopParent && collapsed }"
93
+ ></ProLayoutSiderIcon>
94
+ </a>
95
+ </template>
96
+ </Tooltip>
97
+ </template>
98
+ </div>
99
+
100
+ </div>
101
+ </template>
102
+
103
+ <script>
104
+ import Bus from "@lambo-design/shared/utils/bus";
105
+ import {deepCopy} from "@lambo-design/shared/utils/assist";
106
+ import generatorMenuList from "@lambo-design/shared/utils/menu/index";
107
+ import sider from '../../utils/sider'
108
+ import ProLayoutSiderOtherMenu from "./components/pro-layout-sider-other-menu";
109
+ import ProLayoutSiderSearch from "./components/pro-layout-sider-search";
110
+ import ProLayoutSiderMenuItem from './components/pro-layout-sider-menu-item'
111
+ import ProLayoutSiderCollapsedMenu from './components/pro-layout-sider-collapsed-menu'
112
+ import ProLayoutSiderAppName from './components/pro-layout-sider-app-name'
113
+
114
+ import {
115
+ filterMenuName, filterMenuUri, tagExists,
116
+ isOpenBlank, buildSinglePermission, arraysEqual, addOttCode
117
+ } from "@lambo-design/shared/utils/platform";
118
+ import config from "@lambo-design/shared/config/config";
119
+ import {getThemeVarByKey} from "@lambo-design/shared/utils/theme";
120
+
121
+ export default {
122
+ name: "pro-layout-sider",
123
+ components: {
124
+ ProLayoutSiderMenuItem,
125
+ ProLayoutSiderCollapsedMenu,
126
+ ProLayoutSiderOtherMenu,
127
+ ProLayoutSiderSearch,
128
+ ProLayoutSiderAppName
129
+ },
130
+ props:{
131
+ serverContext: {
132
+ type: String,
133
+ default: () => config.upmsServerContext // 设置默认值
134
+ }
135
+ },
136
+ data(){
137
+ return {
138
+ show: false,
139
+ otherWidth:'',
140
+ originalAllMenuList: [],
141
+ navList: [],
142
+ originMenuList:[],
143
+ menuList: [],
144
+ appId: '',
145
+ collapsed: false,
146
+ activeName: '',
147
+ openedNames: [],
148
+ userExpandedMenus: [], // 记录用户手动展开的菜单(非手风琴模式下使用)
149
+ activeMenu: null,
150
+ selectedMenuParent: null,
151
+ activeMenuItem: null,
152
+ openedSubMenu: null,
153
+ currentMenuItem: null,
154
+ selectedTopParent: '',
155
+ activeIcon: null,
156
+ tagValue: '',
157
+ tagList: [],
158
+ collectMenuList: [],
159
+ isCollected: {},
160
+ systemInfo:{},
161
+ tabsHeight: 46
162
+ }
163
+ },
164
+ mixins:[sider],
165
+ computed: {
166
+ isAccordionMode() {
167
+ // 当 accordionMode 为 '0' 时关闭手风琴模式,否则开启
168
+ return this.systemInfo.accordionMode !== '0';
169
+ }
170
+ },
171
+ methods: {
172
+ initListener(){
173
+ Bus.$on('origin-all-menu-list', (data)=>{
174
+ this.initAllMenu(data);
175
+ });
176
+ Bus.$on('nav-list',(data)=>{
177
+ this.initNav(data)
178
+ });
179
+ Bus.$on('menu-list',(data)=>{
180
+ this.initMenu(data)
181
+ });
182
+ Bus.$on('trigger-change',(data)=>{
183
+ this.triggerChange(data)
184
+ });
185
+ Bus.$on('change-app', ({appId,appInfo})=> {
186
+ this.changeApp(appId,appInfo)
187
+ })
188
+ Bus.$on('tag-list',(data,current)=>{
189
+ this.initTags(data,current)
190
+ });
191
+ Bus.$on('menu-click',(current)=>{
192
+ this.menuClick(current)
193
+ });
194
+ Bus.$on('select-menu',(name,item)=>{
195
+ this.selectMenu(name,item)
196
+ });
197
+ Bus.$on('collect-menu-list',(data)=>{
198
+ this.initCollectMenu(data)
199
+ });
200
+ Bus.$on('system-info',(data)=>{
201
+ this.initSystemInfo(data)
202
+ })
203
+ },
204
+ destroyListener(){
205
+ Bus.$off('origin-all-menu-list')
206
+ Bus.$off('nav-list')
207
+ Bus.$off('menu-list')
208
+ Bus.$off('trigger-change')
209
+ Bus.$off('change-app')
210
+ Bus.$off('tag-list')
211
+ Bus.$off('menu-click')
212
+ Bus.$off('select-menu')
213
+ Bus.$off('collect-menu-list')
214
+ Bus.$off('system-info')
215
+ },
216
+ initSystemInfo(data){
217
+ this.systemInfo = deepCopy(data)
218
+ },
219
+ initAllMenu(data){
220
+ this.originalAllMenuList = data;
221
+ },
222
+ initNav(data){
223
+ if (this.navList && data && arraysEqual(this.navList,data)){
224
+ return;
225
+ }
226
+ this.navList = data;
227
+ },
228
+ initMenu(data){
229
+ if (this.originMenuList && data && arraysEqual(this.originMenuList,data)){
230
+ return;
231
+ }
232
+ if (data && data.length > 0) {
233
+ let item = data[0];
234
+ if (item.appId && item.appId !== this.appId) {
235
+ return;
236
+ }
237
+ }
238
+ this.originMenuList = deepCopy(data);
239
+ this.changeMenu()
240
+ },
241
+ initCollectMenu(data){
242
+ this.collectMenuList = data;
243
+ this.isCollected = {}
244
+ this.collectMenuList.forEach(menu => {
245
+ this.isCollected[menu.name] = true
246
+ })
247
+ },
248
+ changeApp(appId,appInfo){
249
+ this.appId = appId;
250
+ this.changeMenu()
251
+ },
252
+ changeMenu(){
253
+ let treeMenuList = generatorMenuList(this.originMenuList,this.appId,'menu');
254
+ if (treeMenuList && treeMenuList.length > 0) {
255
+ this.menuList = treeMenuList;
256
+ } else {
257
+ this.menuList = [];
258
+ }
259
+ Bus.$emit('tree-menu-list',this.menuList)
260
+ this.openedNames = this.getOpenedNamesByActiveName();
261
+ },
262
+ selectMenu(name,menu) {
263
+ if (!menu) {
264
+ let res = this.originMenuList.filter(item => item.name == name)
265
+ if (res && res.length > 0) {
266
+ menu = res[0];
267
+ }
268
+ }
269
+ if (config.mainType && config.mainType == 'singleApp') {
270
+ menu = buildSinglePermission(this.originalAllMenuList, menu);
271
+ }
272
+ if (menu.appId && menu.appId != this.appId) {
273
+ let appInfo = this.navList.filter(app => app.appId === menu.appId);
274
+ Bus.$emit('change-app', {appId:menu.appId,appInfo:appInfo[0]})
275
+ }
276
+ setTimeout(()=>{
277
+ this.handleSelect(name)
278
+ },100)
279
+ },
280
+ handleSelect(name,uri,pid){
281
+ /*if (this.activeName == name) {
282
+ return;
283
+ }*/
284
+ let menu = null;
285
+ if (name.indexOf("isTurnByHref_") > -1) {
286
+ name = name.replace("isTurnByHref_","");
287
+ menu = filterMenuUri(this.menuList,name);
288
+ } else {
289
+ menu = filterMenuName(this.menuList,name);
290
+ }
291
+ let tagList = this.tagList;
292
+ if (menu && menu.name) {
293
+ if (isOpenBlank(menu)) {
294
+ Bus.$emit('menu-click', menu.name , menu)
295
+ } else {
296
+ let tag = tagList.find(item => item.name == menu.name);
297
+ if (!tag) {
298
+ tag = {}
299
+ }
300
+ if ('home' != menu.name) {
301
+ let res = tagList.filter(item => item.name !== menu.name);
302
+ menu.cts = new Date().getTime();
303
+ tag = Object.assign(tag, menu);
304
+ res.push(tag);
305
+ tagList = deepCopy(res);
306
+ }
307
+ Bus.$emit('tag-list', tagList, menu.name)
308
+ }
309
+
310
+ /*if (!tagExists(tagList,menu.name)) {
311
+ if (!isOpenBlank(menu)) {
312
+ tagList.push(menu);
313
+ } else {
314
+ Bus.$emit('menu-click', menu.name , menu)
315
+ }
316
+ } else {
317
+ let tag = tagList.find(item => item.name == menu.name);
318
+ if ('home' != menu.name) {
319
+ let res = tagList.filter(item => item.name !== menu.name);
320
+ menu.cts = new Date().getTime();
321
+ tag = Object.assign(tag, menu);
322
+ res.push(tag);
323
+ tagList = deepCopy(res);
324
+ }
325
+ }
326
+ Bus.$emit('tag-list', tagList, menu.name)*/
327
+ }
328
+ /*if (menu.meta && Array.isArray(menu.meta.crumbs)) {
329
+ let parentMenu = menu.meta.crumbs[0]
330
+ this.$set(this, 'selectedTopParent', parentMenu.name);
331
+ } else {
332
+ // 处理没有父菜单的情况
333
+ this.$set(this, 'selectedTopParent', menu.name);
334
+ }
335
+ // 如果 uri 为空,则需要根据 pid 判断是展开父菜单还是同时展开父菜单和当前菜单
336
+ if (!uri) {
337
+ let parentName;
338
+ if (pid === 0) {
339
+ // 如果 pid 为 0,表示是最外层菜单
340
+ parentName = this.getNameOrHref(menu);
341
+ } else {
342
+ // 如果 pid 不等于 0,查找并打开对应的最外层父菜单
343
+ parentName = this.getTopParent(menu);
344
+ this.openedNames = [parentName]; // 设置最外层父菜单为展开状态
345
+ this.activeName = menu.name; // 设置当前菜单为激活状态
346
+ }
347
+ }*/
348
+ },
349
+ getTopParent(menu) {
350
+ return menu.parent ? this.getTopParent(menu.parent) : menu.name;
351
+ },
352
+ triggerChange(data){
353
+ this.collapsed = data;
354
+ },
355
+ initTags(data,name){
356
+ this.tagList = data;
357
+ this.value = name;
358
+ },
359
+ menuClick(current) {
360
+ let item = this.originMenuList.filter(menu => menu.name === current && menu.type && menu.type == '2');
361
+ if (item && item.length > 0){
362
+ if (isOpenBlank(item[0])) {
363
+ //window.location.href = window.location.href;
364
+ return;
365
+ }
366
+ let type = item[0].type;
367
+ if (type == 2) {
368
+ this.activeName = current;
369
+ } else {
370
+ let pItem = this.originMenuList.filter(menu => menu.permissionId === item[0].pid);
371
+ if (pItem && pItem.length > 0){
372
+ this.activeName = pItem[0].name;
373
+ }
374
+ }
375
+ } else {
376
+ this.activeName = current;
377
+ }
378
+ },
379
+ getOpenedNamesByActiveName(){
380
+ let res = filterMenuName(this.menuList,this.activeName);
381
+ let openNames = []
382
+ if (res) {
383
+ const crumbs = res.meta.crumbs;
384
+ if (crumbs) {
385
+ crumbs.forEach(item => {
386
+ if (item.type === 1) {
387
+ openNames.push(item.name)
388
+ }
389
+ })
390
+ }
391
+ }
392
+ return openNames
393
+ },
394
+ handleOpenChange(openNames) {
395
+ // openNames 是 Menu 组件当前的所有展开项
396
+ if (this.systemInfo.accordionMode === '0') {
397
+ // 非手风琴模式:保存用户手动展开的状态
398
+ this.userExpandedMenus = [...openNames];
399
+ }
400
+ // 注意:这里不直接修改 this.openedNames,避免循环触发
401
+ },
402
+ mergeOpenedNames(newNames) {
403
+ // 如果关闭手风琴模式,保留用户手动展开的菜单
404
+ if (this.systemInfo.accordionMode === '0') {
405
+ // 合并用户展开的菜单和新的必需展开项
406
+ const merged = [...new Set([...this.userExpandedMenus, ...newNames])];
407
+ return merged;
408
+ } else {
409
+ // 手风琴模式,只保留新的 names(路径必需的展开项)
410
+ return newNames;
411
+ }
412
+ },
413
+ handleResize() {
414
+ const targetElement = this.$refs.listenWidth; // 获取 DOM 元素的引用
415
+ this.otherWidth = targetElement.clientWidth+'px'; // 获取 div 元素的宽度
416
+ },
417
+ dragOptions(item) {
418
+ if (!item) {
419
+ item = {}
420
+ }
421
+ item.navList = this.navList;
422
+ return {
423
+ trigger: '.menu-title-' + item.permissionId,
424
+ body: '.menu-title-' + item.permissionId,
425
+ recover: true,
426
+ item: item,
427
+ canMove: this.systemInfo?.menuDraggable !== '0'
428
+ }
429
+ },
430
+ toggleCollect(item) {
431
+ Bus.$emit('toggle-collect-menu', !this.isCollected[item.name], item)
432
+ },
433
+ loadingCustomStyle(){
434
+ let themeKey = localStorage.getItem("theme") ? localStorage.getItem("theme") : "default"
435
+ let tabsHeight = getThemeVarByKey(themeKey,'--layout-tabs-height');
436
+ if (tabsHeight) {
437
+ this.tabsHeight = tabsHeight;
438
+ }
439
+ }
440
+ },
441
+ watch:{
442
+ activeName(){
443
+ const newOpenNames = this.getOpenedNamesByActiveName();
444
+ this.openedNames = this.mergeOpenedNames(newOpenNames);
445
+ },
446
+ openedNames() {
447
+ this.$nextTick(() => {
448
+ this.$refs.menu.updateOpened()
449
+ this.$refs.menu.updateActiveName()
450
+ })
451
+ }
452
+ },
453
+ mounted() {
454
+ window.addEventListener('resize', this.handleResize); // 监听窗口大小变化事件
455
+ this.handleResize(); // 初始化时获取一次宽度
456
+ this.loadingCustomStyle();
457
+ },
458
+ created(){
459
+ this.initListener();
460
+ },
461
+ beforeDestroy(){
462
+ this.destroyListener();
463
+ window.removeEventListener('resize', this.handleResize); // 在组件销毁前移除事件监听器,以防止内存泄漏
464
+ }
465
+
466
+ }
467
+ </script>
468
+
469
+ <style scoped lang="less">
470
+ @import "@lambo-design/core/src/styles/default";
471
+ @import '../../styles/other-menu.less';
472
+ .pro-layout-sider-wrapper{
473
+ margin-bottom: 50px;
474
+ padding-top: 47px;
475
+ .menu-collapsed {
476
+ padding-top: 10px;
477
+ /deep/a.drop-menu-a{
478
+ display: inline-block;
479
+ padding: 6px 20px;
480
+ width: 100%;
481
+ text-align: center;
482
+ font-weight: normal;
483
+ }
484
+ overflow: hidden;
485
+ }
486
+ &.menu-has-collapsed{
487
+ padding-top: 0 !important;
488
+ }
489
+ &.custom-tabs{
490
+ padding-top: 36px;
491
+ }
492
+ }
493
+ </style>