n20-common-lib 2.7.0-beta.1 → 2.7.0-beta.10
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.
- package/package.json +1 -1
- package/src/assets/css/cl-layout-header.scss +60 -15
- package/src/components/.DS_Store +0 -0
- package/src/components/Layout/HeaderWrap/indexN.vue +71 -93
- package/src/components/Layout/HeaderWrap/menuDrawer.vue +46 -37
- package/src/components/Layout/indexN.vue +11 -2
- package/src/components/LoginTemporary/indexN.vue +2 -0
- package/src/plugins/Print/.DS_Store +0 -0
- package/style/index.css +1 -1
- package/theme/blue.css +1 -1
- package/theme/cctcRed.css +1 -1
- package/theme/green.css +1 -1
- package/theme/lightBlue.css +1 -1
- package/theme/orange.css +1 -1
- package/theme/purple.css +1 -1
- package/theme/red.css +1 -1
- package/theme/yellow.css +1 -1
package/package.json
CHANGED
|
@@ -280,27 +280,72 @@ $--header-color: #3d4a57;
|
|
|
280
280
|
color: #333333;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
.
|
|
284
|
-
|
|
283
|
+
.menu {
|
|
284
|
+
color: #33383d;
|
|
285
|
+
letter-spacing: 0;
|
|
286
|
+
line-height: 22px;
|
|
287
|
+
opacity: .98;
|
|
288
|
+
background-color: #fff;
|
|
289
|
+
box-shadow: 0 12px 30px -15px rgba(0, 0, 0, .1);
|
|
290
|
+
width: calc(100vw - 190px);
|
|
291
|
+
height: 20px;
|
|
292
|
+
position: fixed;
|
|
293
|
+
top: 50px;
|
|
285
294
|
left: 190px;
|
|
286
|
-
|
|
287
|
-
|
|
295
|
+
z-index: 1000;
|
|
296
|
+
max-height: 0;
|
|
297
|
+
min-height: 0;
|
|
298
|
+
transition: max-height .3s ease, min-height .3s ease;
|
|
299
|
+
overflow: hidden;
|
|
300
|
+
cursor: pointer;
|
|
301
|
+
display: flex;
|
|
302
|
+
flex-direction: column;
|
|
303
|
+
align-items: center;
|
|
288
304
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
padding-top: 32px;
|
|
293
|
-
}
|
|
305
|
+
&_drawer_box {
|
|
306
|
+
width: 992px;
|
|
307
|
+
}
|
|
294
308
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
309
|
+
&-system-item {
|
|
310
|
+
flex: 0 0 33.33%;
|
|
311
|
+
padding-top: 32px;
|
|
312
|
+
|
|
313
|
+
&_title {
|
|
314
|
+
|
|
315
|
+
display: inline-block;
|
|
316
|
+
padding: 4px;
|
|
317
|
+
|
|
318
|
+
&:hover {
|
|
319
|
+
background-color: #f5f5f5;
|
|
320
|
+
border-radius: $--border-radius-base;
|
|
321
|
+
}
|
|
298
322
|
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
&-system-child {
|
|
326
|
+
padding-top: 16px;
|
|
327
|
+
padding-left: 36px;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
&-first-item {
|
|
331
|
+
flex: 0 0 33.33%;
|
|
332
|
+
margin-bottom: 16px;
|
|
333
|
+
|
|
334
|
+
&_title {
|
|
299
335
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
336
|
+
display: inline-block;
|
|
337
|
+
padding: 4px;
|
|
338
|
+
|
|
339
|
+
&:hover {
|
|
340
|
+
background-color: #f5f5f5;
|
|
341
|
+
border-radius: $--border-radius-base;
|
|
342
|
+
}
|
|
303
343
|
}
|
|
304
344
|
}
|
|
305
345
|
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.menu.show_drawer {
|
|
349
|
+
max-height: calc(90vh - 50px);
|
|
350
|
+
min-height: 350px;
|
|
306
351
|
}
|
|
Binary file
|
|
@@ -24,12 +24,11 @@
|
|
|
24
24
|
<svg class="icon" aria-hidden="true">
|
|
25
25
|
<use xlink:href="#n20-icon-caidan"></use>
|
|
26
26
|
</svg>
|
|
27
|
-
<span class="m-l-ss f-s-b color-primary"
|
|
27
|
+
<span class="m-l-ss f-s-b color-primary">{{ $lc('系统切换') }}</span>
|
|
28
28
|
<svg class="icon m-l-ss f-s-s" aria-hidden="true">
|
|
29
29
|
<use xlink:href="#n20-icon-lujing"></use>
|
|
30
30
|
</svg>
|
|
31
31
|
</div>
|
|
32
|
-
<menuDrawer :visible.sync="menuDrawer" :menus="headerSystem" :callback="getTreeList"></menuDrawer>
|
|
33
32
|
|
|
34
33
|
<span v-if="byLabel && !inBack" class="header-uif-by">{{ byLabel }}</span>
|
|
35
34
|
<!-- YSCW -->
|
|
@@ -78,20 +77,12 @@
|
|
|
78
77
|
</el-dropdown-menu>
|
|
79
78
|
</el-dropdown>
|
|
80
79
|
|
|
81
|
-
<el-tooltip v-if="!hideHelpDoc" :content="'帮助文档' | $lc">
|
|
82
|
-
<span class="set-user-btn iconfont icon-bangzhuwendang header-color m-l-lg" @click="openHelp"></span>
|
|
83
|
-
</el-tooltip>
|
|
84
|
-
|
|
85
|
-
<el-tooltip v-if="!hideDowApp" :content="'客户端下载' | $lc">
|
|
86
|
-
<span class="set-user-btn iconfont icon-kehuduanxiazai header-color m-l-lg" @click="dowApp"></span>
|
|
87
|
-
</el-tooltip>
|
|
88
|
-
|
|
89
80
|
<el-badge :hidden="noticeNum + afficheNum === 0" :value="noticeNum + afficheNum">
|
|
90
81
|
<span v-if="!noticeDrw" v-popover:noticePop class="news-btn iconfont icon-xiaoxi header-color"></span>
|
|
91
82
|
<span v-else class="news-btn iconfont icon-xiaoxi header-color" @click="customOpt.noticeDrawer"></span>
|
|
92
83
|
</el-badge>
|
|
93
84
|
|
|
94
|
-
<el-popover ref="by_popover" v-model="byV" placement="bottom-start" trigger="manual" popper-class="uby-w">
|
|
85
|
+
<!-- <el-popover ref="by_popover" v-model="byV" placement="bottom-start" trigger="manual" popper-class="uby-w">
|
|
95
86
|
<div class="uby-h flex-box flex-v">
|
|
96
87
|
<i class="uby-h-icon iconfont icon-icon_huanyingmoshi"></i>
|
|
97
88
|
<span
|
|
@@ -103,7 +94,7 @@
|
|
|
103
94
|
<div class="text-r">
|
|
104
95
|
<el-button type="primary" @click="byV = false">{{ '知道了' | $lc }}</el-button>
|
|
105
96
|
</div>
|
|
106
|
-
</el-popover>
|
|
97
|
+
</el-popover> -->
|
|
107
98
|
|
|
108
99
|
<el-dropdown
|
|
109
100
|
ref="userDrop"
|
|
@@ -215,26 +206,24 @@
|
|
|
215
206
|
</el-dropdown-menu>
|
|
216
207
|
</el-dropdown>
|
|
217
208
|
</el-dropdown-item>
|
|
218
|
-
<!-- 系统切换 -->
|
|
219
|
-
<el-dropdown-item v-if="systemChange && systemList && systemList.length">
|
|
220
|
-
<el-dropdown trigger="hover" size="medium" placement="left-start" style="width: 100%">
|
|
221
|
-
<div class="flex-box flex-v">
|
|
222
|
-
<span>{{ '系统切换' | $lc }}</span>
|
|
223
|
-
<i class="el-icon-caret-right m-l-auto m-r-0"></i>
|
|
224
|
-
</div>
|
|
225
|
-
<el-dropdown-menu slot="dropdown">
|
|
226
|
-
<el-dropdown-item v-for="(item, i) in systemList" :key="i" @click.native="clickSystem(item)">
|
|
227
|
-
<span>{{ item.NAME }}</span>
|
|
228
|
-
</el-dropdown-item>
|
|
229
|
-
</el-dropdown-menu>
|
|
230
|
-
</el-dropdown>
|
|
231
|
-
</el-dropdown-item>
|
|
232
209
|
<el-dropdown-item v-if="!inBack" command="toBack">
|
|
233
210
|
<div class="flex-box flex-v">
|
|
234
211
|
<span>{{ '后台管理' | $lc }}</span>
|
|
235
212
|
<i class="el-icon-caret-right m-l-auto m-r-0"></i>
|
|
236
213
|
</div>
|
|
237
214
|
</el-dropdown-item>
|
|
215
|
+
<el-dropdown-item v-if="!hideHelpDoc" command="openHelp">
|
|
216
|
+
<div class="flex-box flex-v">
|
|
217
|
+
<span>{{ '帮助文档' | $lc }}</span>
|
|
218
|
+
<i class="el-icon-caret-right m-l-auto m-r-0"></i>
|
|
219
|
+
</div>
|
|
220
|
+
</el-dropdown-item>
|
|
221
|
+
<el-dropdown-item v-if="!hideDowApp" command="dowApp">
|
|
222
|
+
<div class="flex-box flex-v">
|
|
223
|
+
<span>{{ '客户端下载' | $lc }}</span>
|
|
224
|
+
<i class="el-icon-caret-right m-l-auto m-r-0"></i>
|
|
225
|
+
</div>
|
|
226
|
+
</el-dropdown-item>
|
|
238
227
|
<slot name="header-dropdown"></slot>
|
|
239
228
|
<el-dropdown-item command="logOut">
|
|
240
229
|
<div class="flex-box flex-v">
|
|
@@ -285,7 +274,6 @@ import { themeList } from '../../../utils/theme.config'
|
|
|
285
274
|
import dialogWrap from '../../Dialog/index.vue'
|
|
286
275
|
import operatingStatus from '../../operatingStatus/index.vue'
|
|
287
276
|
import changePwd from './changePwd.vue'
|
|
288
|
-
import menuDrawer from './menuDrawer.vue'
|
|
289
277
|
import noticePop from './noticePop.vue'
|
|
290
278
|
import switchUser from './switchUser.vue'
|
|
291
279
|
|
|
@@ -308,8 +296,7 @@ export default {
|
|
|
308
296
|
changePwd,
|
|
309
297
|
noticePop,
|
|
310
298
|
switchUser,
|
|
311
|
-
operatingStatus
|
|
312
|
-
menuDrawer
|
|
299
|
+
operatingStatus
|
|
313
300
|
},
|
|
314
301
|
props: {
|
|
315
302
|
beforeLogout: {
|
|
@@ -369,13 +356,13 @@ export default {
|
|
|
369
356
|
afficheNum: 0,
|
|
370
357
|
rolesList: [],
|
|
371
358
|
headerSystem: [],
|
|
359
|
+
showDrawerBox: false,
|
|
372
360
|
scV: false,
|
|
373
361
|
underway: false,
|
|
374
362
|
/* */
|
|
375
363
|
byV: false,
|
|
376
364
|
byLabel: '',
|
|
377
365
|
byEV: false,
|
|
378
|
-
menuDrawer: false,
|
|
379
366
|
headerUserInfoBg: realUrl('/server-assets/userInfoBg.png'),
|
|
380
367
|
inBack: window.localStorage.getItem('pageInType') === 'inBack'
|
|
381
368
|
}
|
|
@@ -420,7 +407,6 @@ export default {
|
|
|
420
407
|
}
|
|
421
408
|
})
|
|
422
409
|
})
|
|
423
|
-
this.systemChange && this.getSystemList()
|
|
424
410
|
this.getNNum()
|
|
425
411
|
document.addEventListener('visibilitychange', this.getNNum)
|
|
426
412
|
window.addEventListener('message', this.updateNotice)
|
|
@@ -440,73 +426,59 @@ export default {
|
|
|
440
426
|
window.removeEventListener('message', this.updateNotice)
|
|
441
427
|
},
|
|
442
428
|
methods: {
|
|
443
|
-
handleChangeSystem() {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
case 'CSZHYW':
|
|
453
|
-
system_list[i].icon = '#n20-icon-zhcsyw'
|
|
454
|
-
break
|
|
455
|
-
case 'CSYWGL':
|
|
456
|
-
system_list[i].icon = '#n20-icon-bianzu'
|
|
457
|
-
break
|
|
458
|
-
case 'CSFZJC':
|
|
459
|
-
system_list[i].icon = '#n20-icon-a-bianzu70'
|
|
460
|
-
break
|
|
461
|
-
case 'CSWY':
|
|
462
|
-
system_list[i].icon = '#n20-icon-a-bianzu69'
|
|
463
|
-
break
|
|
464
|
-
case 'JTZL':
|
|
465
|
-
system_list[i].icon = '#n20-icon-a-bianzu3'
|
|
466
|
-
break
|
|
467
|
-
case 'JRWG':
|
|
468
|
-
system_list[i].icon = '#n20-icon-a-bianzu1'
|
|
469
|
-
break
|
|
470
|
-
case 'JTSKYWGK':
|
|
471
|
-
system_list[i].icon = '#n20-icon-a-bianzu701'
|
|
472
|
-
break
|
|
473
|
-
case 'JTSKSJFX':
|
|
474
|
-
system_list[i].icon = '#n20-icon-a-bianzu2'
|
|
475
|
-
break
|
|
476
|
-
}
|
|
477
|
-
system_list[i].menuTree = []
|
|
478
|
-
for (let j = 0; j < menuTree.length; j++) {
|
|
479
|
-
if (system_list[i].NO === menuTree[j].systemNo && menuTree[j].isBackmenu === '1') {
|
|
480
|
-
system_list[i].menuTree.push(menuTree[j])
|
|
481
|
-
}
|
|
482
|
-
}
|
|
429
|
+
async handleChangeSystem() {
|
|
430
|
+
let menuTree = JSON.parse(sessionStorage.getItem('allMenuTree'))
|
|
431
|
+
if (!menuTree) {
|
|
432
|
+
this.getTreeList().finally(async () => {
|
|
433
|
+
let tree = JSON.parse(sessionStorage.getItem('allMenuTree'))
|
|
434
|
+
this.setMenuData(tree)
|
|
435
|
+
})
|
|
436
|
+
} else {
|
|
437
|
+
this.setMenuData(menuTree)
|
|
483
438
|
}
|
|
484
|
-
|
|
485
|
-
this.headerSystem = system_list
|
|
486
|
-
console.log(this.headerSystem)
|
|
487
|
-
},
|
|
488
|
-
clickMenu(row) {
|
|
489
|
-
this.$router.push(row.route)
|
|
490
439
|
},
|
|
440
|
+
setMenuData(menuTree) {
|
|
441
|
+
let system_list = JSON.parse(localStorage.getItem('SYSTEM_LIST'))
|
|
442
|
+
this.headerSystem = system_list.map((system) => {
|
|
443
|
+
const icon =
|
|
444
|
+
{
|
|
445
|
+
CSZHYW: '#n20-icon-zhcsyw',
|
|
446
|
+
CSYWGL: '#n20-icon-bianzu',
|
|
447
|
+
CSFZJC: '#n20-icon-a-bianzu70',
|
|
448
|
+
CSWY: '#n20-icon-a-bianzu69',
|
|
449
|
+
JTZL: '#n20-icon-a-bianzu3',
|
|
450
|
+
JRWG: '#n20-icon-a-bianzu1',
|
|
451
|
+
JTSKYWGK: '#n20-icon-a-bianzu701',
|
|
452
|
+
JTSKSJFX: '#n20-icon-a-bianzu2'
|
|
453
|
+
}[system.NO] || ''
|
|
491
454
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
455
|
+
system.icon = icon
|
|
456
|
+
system.menuTree = menuTree
|
|
457
|
+
?.filter((menu) => menu.systemNo === system.NO && menu.isBackmenu === '0')
|
|
458
|
+
.map((menu) => ({
|
|
459
|
+
...menu,
|
|
460
|
+
icon:
|
|
461
|
+
{
|
|
462
|
+
CSZHYW: '#n20-icon-zhcsyw',
|
|
463
|
+
CSYWGL: '#n20-icon-bianzu',
|
|
464
|
+
CSFZJC: '#n20-icon-a-bianzu70',
|
|
465
|
+
CSWY: '#n20-icon-a-bianzu69',
|
|
466
|
+
JTZL: '#n20-icon-a-bianzu3',
|
|
467
|
+
JRWG: '#n20-icon-a-bianzu1',
|
|
468
|
+
JTSKYWGK: '#n20-icon-a-bianzu701',
|
|
469
|
+
JTSKSJFX: '#n20-icon-a-bianzu2'
|
|
470
|
+
}[menu.NO] || ''
|
|
471
|
+
}))
|
|
472
|
+
return system
|
|
473
|
+
})
|
|
474
|
+
this.showDrawerBox = !this.showDrawerBox
|
|
475
|
+
this.$emit('clickSystem', this.headerSystem, this.showDrawerBox)
|
|
497
476
|
},
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
let { data } = await axios.get(
|
|
501
|
-
`/bems/1.0/menuTree/tree?t=${Date.now()}`,
|
|
502
|
-
{
|
|
503
|
-
resType,
|
|
504
|
-
systemNo
|
|
505
|
-
},
|
|
506
|
-
{ loading: false }
|
|
507
|
-
)
|
|
477
|
+
|
|
478
|
+
async getTreeList(item = {}) {
|
|
479
|
+
let { data } = await axios.get(`/bems/1.0/menuTree/tree?t=${Date.now()}`, item, { loading: false })
|
|
508
480
|
let layoutMenus = siteTree2menus(data || [])
|
|
509
|
-
sessionStorage.setItem('
|
|
481
|
+
sessionStorage.setItem('allMenuTree', JSON.stringify(layoutMenus))
|
|
510
482
|
},
|
|
511
483
|
|
|
512
484
|
handleUser() {
|
|
@@ -603,6 +575,12 @@ export default {
|
|
|
603
575
|
case 'toBack':
|
|
604
576
|
this.toBack()
|
|
605
577
|
break
|
|
578
|
+
case 'dowApp':
|
|
579
|
+
this.dowApp()
|
|
580
|
+
break
|
|
581
|
+
case 'openHelp':
|
|
582
|
+
this.openHelp()
|
|
583
|
+
break
|
|
606
584
|
default:
|
|
607
585
|
this.$emit('custom-event', { type: c })
|
|
608
586
|
break
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
custom-class="header-menu-drawer"
|
|
5
|
-
:with-header="false"
|
|
6
|
-
:appendToBody="true"
|
|
7
|
-
direction="ttb"
|
|
8
|
-
size="45%"
|
|
9
|
-
>
|
|
10
|
-
<div class="pointer flex-box flex-wrap">
|
|
2
|
+
<div class="pointer menu">
|
|
3
|
+
<div class="flex-box flex-wrap menu_drawer_box">
|
|
11
4
|
<div v-for="(item, i) in menus" :key="i" class="menu-system-item">
|
|
12
5
|
<div class="flex-box flex-v" @click="clickSystem(item)">
|
|
13
6
|
<svg
|
|
@@ -16,62 +9,78 @@
|
|
|
16
9
|
>
|
|
17
10
|
<use :xlink:href="item.icon"></use>
|
|
18
11
|
</svg>
|
|
19
|
-
<span class="m-l-s">{{ item.NAME }}</span>
|
|
12
|
+
<span class="m-l-s menu-system-item_title">{{ item.NAME }}</span>
|
|
20
13
|
</div>
|
|
21
14
|
<div v-if="item.menuTree.length" class="flex-box flex-wrap menu-system-child">
|
|
22
|
-
<div
|
|
23
|
-
|
|
15
|
+
<div
|
|
16
|
+
v-for="(row, i) in item.menuTree"
|
|
17
|
+
:key="i"
|
|
18
|
+
class="menu-first-item"
|
|
19
|
+
@click="clickMenu(row, item.menuTree)"
|
|
20
|
+
>
|
|
21
|
+
<span class="menu-first-item_title">{{ row.title }}</span>
|
|
24
22
|
</div>
|
|
25
23
|
</div>
|
|
26
24
|
</div>
|
|
27
25
|
</div>
|
|
28
|
-
</
|
|
26
|
+
</div>
|
|
29
27
|
</template>
|
|
30
28
|
|
|
31
29
|
<script>
|
|
30
|
+
import axios from '../../../utils/axios.js'
|
|
31
|
+
import { siteTree2menus } from '../../LoginTemporary/utils'
|
|
32
32
|
export default {
|
|
33
33
|
name: 'MenuDrawer',
|
|
34
34
|
props: {
|
|
35
35
|
menus: {
|
|
36
36
|
type: Array,
|
|
37
37
|
default: () => []
|
|
38
|
-
},
|
|
39
|
-
visible: {
|
|
40
|
-
type: Boolean,
|
|
41
|
-
default: false
|
|
42
|
-
},
|
|
43
|
-
callback: {
|
|
44
|
-
type: Function,
|
|
45
|
-
default: () => {}
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
computed: {
|
|
49
|
-
drawer: {
|
|
50
|
-
get() {
|
|
51
|
-
return this.visible
|
|
52
|
-
},
|
|
53
|
-
set(val) {
|
|
54
|
-
this.$emit('update:visible', val)
|
|
55
|
-
}
|
|
56
38
|
}
|
|
57
39
|
},
|
|
58
40
|
methods: {
|
|
41
|
+
async getTreeList(item) {
|
|
42
|
+
let { data } = await axios.get(
|
|
43
|
+
`/bems/1.0/menuTree/tree?t=${Date.now()}`,
|
|
44
|
+
{
|
|
45
|
+
resType: 1,
|
|
46
|
+
systemNo: item.NO
|
|
47
|
+
},
|
|
48
|
+
{ loading: false }
|
|
49
|
+
)
|
|
50
|
+
let layoutMenus = siteTree2menus(data || [])
|
|
51
|
+
sessionStorage.setItem('menuTree', JSON.stringify(layoutMenus))
|
|
52
|
+
},
|
|
59
53
|
async clickSystem(item) {
|
|
60
|
-
|
|
54
|
+
await this.getTreeList(item)
|
|
61
55
|
window.localStorage.setItem('pageInSystemNo', item.NO)
|
|
62
56
|
// 切换系统的时候清除缓存的页签
|
|
63
57
|
window.sessionStorage.removeItem('tab-list')
|
|
64
58
|
let { base = '/' } = this.$router.options
|
|
65
59
|
if (!/\/$/.test(base)) base += '/'
|
|
66
|
-
|
|
67
60
|
window.location.href = window.location.origin + base + 'dashboard/workplace'
|
|
68
61
|
},
|
|
69
|
-
clickMenu(row) {
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
async clickMenu(row, MenuTre) {
|
|
63
|
+
let pageInSystemNo = window.localStorage.getItem('pageInSystemNo')
|
|
64
|
+
window.localStorage.setItem('pageInType', 'toFront')
|
|
65
|
+
if (pageInSystemNo === row.systemNo) {
|
|
66
|
+
if (row?.children?.length) {
|
|
67
|
+
this.$router.push(row.children[0].route)
|
|
68
|
+
} else {
|
|
69
|
+
this.$router.push(row.route)
|
|
70
|
+
}
|
|
72
71
|
} else {
|
|
73
|
-
|
|
72
|
+
window.localStorage.setItem('pageInSystemNo', row.systemNo)
|
|
73
|
+
window.sessionStorage.setItem('menuTree', JSON.stringify(MenuTre))
|
|
74
|
+
// 切换系统的时候清除缓存的页签
|
|
75
|
+
window.sessionStorage.removeItem('tab-list')
|
|
76
|
+
if (row?.children?.length) {
|
|
77
|
+
window.location.href =
|
|
78
|
+
window.location.origin + row.children[0].route + `?token=${window.sessionStorage.getItem('token')}`
|
|
79
|
+
} else {
|
|
80
|
+
window.location.href = window.location.origin + row.route + `?token=${window.sessionStorage.getItem('token')}`
|
|
81
|
+
}
|
|
74
82
|
}
|
|
83
|
+
this.$emit('update:visible', false)
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
86
|
}
|
|
@@ -7,11 +7,13 @@
|
|
|
7
7
|
:operation-status="operationStatus"
|
|
8
8
|
:before-logout="beforeLogout"
|
|
9
9
|
:after-logout="afterLogout"
|
|
10
|
+
@clickSystem="clickSystem"
|
|
10
11
|
@custom-event="(par) => $emit('custom-event', par)"
|
|
11
12
|
>
|
|
12
13
|
<slot slot="header-ectad" name="header-ectad"></slot>
|
|
13
14
|
<slot slot="header-dropdown" name="header-dropdown"></slot>
|
|
14
15
|
</headerWrap>
|
|
16
|
+
<menuDrawer :class="showDrawerBox ? 'show_drawer' : ''" :menus="systemMenu"></menuDrawer>
|
|
15
17
|
<asideNav :menus="menusC" :active-nav="activeNavC" :collapse.sync="collapse" @menu-click="menuClick" />
|
|
16
18
|
<tabsNav
|
|
17
19
|
class="tabs-nav-wrap"
|
|
@@ -43,13 +45,15 @@ import { setRela } from '../../utils/relaNo'
|
|
|
43
45
|
import asideNav from './AsideNav/index.vue'
|
|
44
46
|
import headerWrap from './HeaderWrap/indexN.vue'
|
|
45
47
|
import tabsNav from './TabsNav/index.vue'
|
|
48
|
+
import menuDrawer from './HeaderWrap/menuDrawer.vue'
|
|
46
49
|
|
|
47
50
|
export default {
|
|
48
51
|
name: 'Layout',
|
|
49
52
|
components: {
|
|
50
53
|
asideNav,
|
|
51
54
|
headerWrap,
|
|
52
|
-
tabsNav
|
|
55
|
+
tabsNav,
|
|
56
|
+
menuDrawer
|
|
53
57
|
},
|
|
54
58
|
filters: {
|
|
55
59
|
keyF({ path, query = {} }) {
|
|
@@ -109,7 +113,8 @@ export default {
|
|
|
109
113
|
clientM,
|
|
110
114
|
clientHeight: document.documentElement.offsetHeight - headerH - tabsH - 1 * clientM,
|
|
111
115
|
collapse: window.localStorage.getItem('aside-nav-collapse') === 'true',
|
|
112
|
-
|
|
116
|
+
showDrawerBox: false,
|
|
117
|
+
systemMenu: [],
|
|
113
118
|
menusC: [],
|
|
114
119
|
menuList: [],
|
|
115
120
|
tabList: [],
|
|
@@ -190,6 +195,10 @@ export default {
|
|
|
190
195
|
refreshTab && this.tabRefresh(refreshTab)
|
|
191
196
|
}
|
|
192
197
|
},
|
|
198
|
+
clickSystem(menu, drawerVisible) {
|
|
199
|
+
this.showDrawerBox = drawerVisible
|
|
200
|
+
this.systemMenu = menu
|
|
201
|
+
},
|
|
193
202
|
getCollapse() {
|
|
194
203
|
this.collapse = window.localStorage.getItem('aside-nav-collapse') === 'true'
|
|
195
204
|
},
|
|
Binary file
|