@lambo-design/shared 1.0.0-beta.236 → 1.0.0-beta.239
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/config/config.js +51 -51
- package/config/env.js +4 -4
- package/config/index.js +7 -7
- package/config/themes/atrovirens/atrovirens.less +667 -667
- package/config/themes/atrovirens/var.less +674 -674
- package/config/themes/blue/blue.less +669 -669
- package/config/themes/blue/var.less +677 -677
- package/config/themes/blue-white/blue-white.less +669 -669
- package/config/themes/blue-white/var.less +676 -676
- package/config/themes/blue-white-tight/blue-white-tight.less +672 -672
- package/config/themes/blue-white-tight/var.less +677 -677
- package/config/themes/danqing/danqing.css +4 -4
- package/config/themes/danqing/danqing.css.map +1 -1
- package/config/themes/danqing/danqing.less +668 -668
- package/config/themes/danqing/danqing.wxss +572 -572
- package/config/themes/danqing/var.less +679 -679
- package/config/themes/deep/deep.less +669 -669
- package/config/themes/deep/var.less +677 -677
- package/config/themes/default/default.less +671 -671
- package/config/themes/default/var.less +677 -677
- package/config/themes/eap/eap.less +671 -671
- package/config/themes/eap/var.less +677 -677
- package/config/themes/gold/gold.less +671 -671
- package/config/themes/gold/var.less +677 -677
- package/config/themes/index.js +28 -28
- package/config/themes/lime/lime.less +671 -671
- package/config/themes/lime/var.less +678 -678
- package/config/themes/orange/orange.less +671 -671
- package/config/themes/orange/var.less +678 -678
- package/config/themes/red/red.less +671 -671
- package/config/themes/red/var.less +677 -677
- package/config/themes/theme-atrovirens.js +558 -558
- package/config/themes/theme-blue.js +558 -558
- package/config/themes/theme-bw.js +558 -558
- package/config/themes/theme-bwt.js +559 -559
- package/config/themes/theme-danqing.js +558 -558
- package/config/themes/theme-deep.js +558 -558
- package/config/themes/theme-default.js +558 -558
- package/config/themes/theme-eap.js +558 -558
- package/config/themes/theme-gold.js +558 -558
- package/config/themes/theme-lime.js +558 -558
- package/config/themes/theme-orange.js +559 -559
- package/config/themes/theme-red.js +558 -558
- package/config/themes/theme-white.js +557 -557
- package/config/themes/white/var.less +675 -675
- package/config/themes/white/white.less +668 -668
- package/directives/index.js +23 -23
- package/directives/module/draggable.js +56 -56
- package/directives/module/permission.js +49 -49
- package/directives/module/print.js +1 -1
- package/directives/module/vue-print-nb/README.md +63 -63
- package/directives/module/vue-print-nb/print.js +94 -94
- package/directives/module/vue-print-nb/printarea.js +532 -532
- package/index.js +10 -10
- package/nstyles/common.less +197 -197
- package/nstyles/components/404.less +46 -46
- package/nstyles/components/button.less +34 -34
- package/nstyles/components/date-picker.less +37 -37
- package/nstyles/components/drawer.less +20 -20
- package/nstyles/components/dropdown.less +18 -18
- package/nstyles/components/excel-flow.less +72 -72
- package/nstyles/components/form.less +313 -303
- package/nstyles/components/index.less +23 -23
- package/nstyles/components/layout/collect.less +10 -10
- package/nstyles/components/layout/detail-view.less +107 -107
- package/nstyles/components/layout/full-screen.less +7 -7
- package/nstyles/components/layout/index.less +7 -7
- package/nstyles/components/layout/other-menu.less +142 -142
- package/nstyles/components/layout/page-view.less +101 -101
- package/nstyles/components/layout/sider-trigger.less +41 -41
- package/nstyles/components/layout/tags-nav.less +113 -113
- package/nstyles/components/modal.less +85 -85
- package/nstyles/components/n-button.less +131 -131
- package/nstyles/components/n-image-preview.less +131 -131
- package/nstyles/components/n-model/index.less +19 -19
- package/nstyles/components/n-model/report-index.less +43 -43
- package/nstyles/components/n-panel.less +40 -40
- package/nstyles/components/n-picker.less +37 -37
- package/nstyles/components/n-sign.less +17 -17
- package/nstyles/components/n-tooltip.less +10 -10
- package/nstyles/components/panel.less +31 -31
- package/nstyles/components/select.less +3 -3
- package/nstyles/components/sign.less +27 -27
- package/nstyles/components/table.less +315 -315
- package/nstyles/components/tree.less +158 -158
- package/nstyles/components/upload.less +164 -164
- package/nstyles/index.less +5 -5
- package/nstyles/reset.less +65 -65
- package/nstyles/third/ag.less +174 -174
- package/nstyles/third/index.less +11 -11
- package/nstyles/third/view-design.less +366 -366
- package/nstyles/variables/base.less +143 -143
- package/nstyles/variables/index.less +4 -4
- package/nstyles/variables/theme/default/button.less +7 -7
- package/nstyles/variables/theme/default/common.less +57 -57
- package/nstyles/variables/theme/default/index.less +7 -7
- package/nstyles/variables/theme/default/layout.less +40 -40
- package/nstyles/variables/theme/default/table.less +37 -37
- package/nstyles/variables/theme/default/tag.less +3 -3
- package/nstyles/variables/theme/default/upload.less +3 -3
- package/nstyles/variables/theme/index.less +13 -13
- package/nstyles/variables/theme/small/button.less +7 -7
- package/nstyles/variables/theme/small/common.less +39 -39
- package/nstyles/variables/theme/small/index.less +5 -5
- package/nstyles/variables/theme/small/layout.less +21 -21
- package/nstyles/variables/theme/small/table.less +17 -17
- package/nstyles/variables/theme/small/tag.less +3 -3
- package/package.json +1 -1
- package/plugin/index.js +12 -12
- package/plugin/module/date-format.js +30 -30
- package/plugin/module/loading.js +26 -26
- package/plugin/module/warn-handler.js +11 -11
- package/styles/variables.less +21 -21
- package/utils/ajax/cacheconf.js +19 -19
- package/utils/ajax/content-type.js +30 -30
- package/utils/ajax/index.js +12 -12
- package/utils/ajax/interceptors.js +97 -97
- package/utils/assist.js +147 -147
- package/utils/base64.js +126 -126
- package/utils/blob.js +47 -47
- package/utils/bus.js +3 -3
- package/utils/crypto/index.js +48 -48
- package/utils/crypto/md5.js +152 -152
- package/utils/crypto/sm3.js +235 -235
- package/utils/date.js +381 -381
- package/utils/dict/built-in-dict.js +20 -20
- package/utils/dict/index.js +167 -167
- package/utils/dom.js +38 -38
- package/utils/event.js +72 -72
- package/utils/excel.js +655 -655
- package/utils/file.js +19 -19
- package/utils/form/validate.js +29 -29
- package/utils/half-year.js +68 -68
- package/utils/index.js +41 -41
- package/utils/json.js +29 -29
- package/utils/lodop.js +165 -165
- package/utils/menu/before-close.js +17 -17
- package/utils/menu/index.js +395 -395
- package/utils/mime_type.js +67 -67
- package/utils/modelerUtil.js +227 -227
- package/utils/n/api.js +22 -22
- package/utils/n/date.js +57 -57
- package/utils/n/index.js +9 -9
- package/utils/n/is-type.js +176 -176
- package/utils/n/number.js +144 -144
- package/utils/n/permission-cache.js +11 -11
- package/utils/n/reuqest/axiosN.js +17 -17
- package/utils/n/reuqest/content-type.js +19 -19
- package/utils/n/reuqest/interceptors.js +95 -95
- package/utils/n/reuqest/url-params.js +12 -12
- package/utils/n/storage.js +51 -51
- package/utils/n/token.js +51 -51
- package/utils/n/user-cache.js +11 -11
- package/utils/n/user.js +34 -34
- package/utils/n/uuid.js +16 -16
- package/utils/n-generator-routers.js +208 -208
- package/utils/n-router.js +205 -205
- package/utils/n-theme.js +30 -30
- package/utils/number.js +180 -180
- package/utils/oss.js +57 -57
- package/utils/platform.js +1334 -1334
- package/utils/quarter.js +58 -58
- package/utils/storage.js +198 -198
- package/utils/style.js +24 -24
- package/utils/theme.js +138 -138
- package/utils/transfer-queue.js +7 -7
- package/utils/transform.js +179 -0
- package/utils/type.js +102 -102
- package/utils/util.js +795 -795
- package/utils/validator.js +181 -181
- package/utils/vxetable/index.js +25 -25
- package/utils/zoomScroll.js +9 -9
package/utils/n-router.js
CHANGED
|
@@ -1,205 +1,205 @@
|
|
|
1
|
-
// import { config } from '@indfnd/utils'
|
|
2
|
-
|
|
3
|
-
const hasChild = (item) => {
|
|
4
|
-
return item.children && item.children.length
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @param {Array} target 目标数组
|
|
9
|
-
* @param {Array} arr 需要查询的数组
|
|
10
|
-
* @description 判断要查询的数组是否至少有一个元素包含在目标数组中
|
|
11
|
-
*/
|
|
12
|
-
const hasOneOf = (targetArr, arr) => {
|
|
13
|
-
return targetArr.some((_) => arr.includes(_))
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const showThisMenuEle = (item, access) => {
|
|
17
|
-
if (item.meta && item.meta.access && item.meta.access.length) {
|
|
18
|
-
if (hasOneOf(item.meta.access, access)) return true
|
|
19
|
-
else return false
|
|
20
|
-
} else return true
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @param {Number} times 回调函数需要执行的次数
|
|
25
|
-
* @param {Function} callback 回调函数
|
|
26
|
-
*/
|
|
27
|
-
const doCustomTimes = (times, callback) => {
|
|
28
|
-
let i = -1
|
|
29
|
-
while (++i < times) {
|
|
30
|
-
callback(i)
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const getRouteTitleHandled = (route) => {
|
|
35
|
-
let router = { ...route }
|
|
36
|
-
let meta = { ...route.meta }
|
|
37
|
-
let title = ''
|
|
38
|
-
if (meta.title) {
|
|
39
|
-
if (typeof meta.title === 'function') {
|
|
40
|
-
meta.__titleIsFunction__ = true
|
|
41
|
-
title = meta.title(router)
|
|
42
|
-
} else title = meta.title
|
|
43
|
-
}
|
|
44
|
-
meta.title = title
|
|
45
|
-
router.meta = meta
|
|
46
|
-
return router
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @description 根据当前跳转的路由设置显示在浏览器标签的title
|
|
51
|
-
* 标签名字不允许改变,固定为 营销业务一体化平台
|
|
52
|
-
* @param {Object} routeItem 路由对象
|
|
53
|
-
*/
|
|
54
|
-
export const setTitle = (/*routeItem*/) => {
|
|
55
|
-
// const pageTitle = getRouteTitleHandled(routeItem).meta.title
|
|
56
|
-
// window.document.title = pageTitle ? `${config.title} - ${pageTitle}` : config.title
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @param {Array} list 通过路由列表得到菜单列表
|
|
61
|
-
* @returns {Array}
|
|
62
|
-
*/
|
|
63
|
-
export const getMenuByRouter = (list, access) => {
|
|
64
|
-
let res = []
|
|
65
|
-
_forEach(list, (item) => {
|
|
66
|
-
if (!item.meta || (item.meta && !item.meta.hideInMenu)) {
|
|
67
|
-
let obj = {
|
|
68
|
-
icon: (item.meta && item.meta.icon) || '',
|
|
69
|
-
name: item.name,
|
|
70
|
-
meta: item.meta,
|
|
71
|
-
}
|
|
72
|
-
if (
|
|
73
|
-
(hasChild(item) || (item.meta && item.meta.showAlways)) &&
|
|
74
|
-
showThisMenuEle(item, access)
|
|
75
|
-
) {
|
|
76
|
-
obj.children = getMenuByRouter(item.children, access)
|
|
77
|
-
}
|
|
78
|
-
if (item.meta && item.meta.href) obj.href = item.meta.href
|
|
79
|
-
if (showThisMenuEle(item, access)) res.push(obj)
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
|
-
return res
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @param {Array} routeMetched 当前路由metched
|
|
87
|
-
* @returns {Array}
|
|
88
|
-
*/
|
|
89
|
-
export const getBreadCrumbList = (route, homeRoute) => {
|
|
90
|
-
let homeItem = { ...homeRoute, icon: homeRoute.meta.icon }
|
|
91
|
-
const { crumbs } = route.meta
|
|
92
|
-
if (crumbs && crumbs.length > 0) {
|
|
93
|
-
crumbs.forEach((item) => {
|
|
94
|
-
item.meta = {
|
|
95
|
-
title: item.title,
|
|
96
|
-
}
|
|
97
|
-
if (item.type === 2) {
|
|
98
|
-
item.to = item.name
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
let breadCrumbList = [{ ...homeItem, to: homeRoute.name }]
|
|
103
|
-
if (crumbs && crumbs.length > 0) {
|
|
104
|
-
breadCrumbList = breadCrumbList.concat(crumbs)
|
|
105
|
-
}
|
|
106
|
-
return breadCrumbList
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export const showTitle = (item) => {
|
|
110
|
-
return item.meta.title
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* @description 本地存储和获取标签导航列表
|
|
115
|
-
*/
|
|
116
|
-
export const setTagNavListInLocalstorage = (list) => {
|
|
117
|
-
sessionStorage.tagNaveList = JSON.stringify(list)
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @returns {Array} 其中的每个元素只包含路由原信息中的name, path, meta三项
|
|
121
|
-
*/
|
|
122
|
-
export const getTagNavListFromLocalstorage = () => {
|
|
123
|
-
const list = sessionStorage.tagNaveList
|
|
124
|
-
return list ? JSON.parse(list) : []
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* @param {Array} routers 路由列表数组
|
|
129
|
-
* @description 用于找到路由列表中name为home的对象
|
|
130
|
-
*/
|
|
131
|
-
export const getHomeRoute = (routers, homeRouteName = 'home') => {
|
|
132
|
-
let i = -1
|
|
133
|
-
let len = routers.length
|
|
134
|
-
let homeRoute = {}
|
|
135
|
-
while (++i < len) {
|
|
136
|
-
let item = routers[i]
|
|
137
|
-
if (item.children && item.children.length) {
|
|
138
|
-
let res = getHomeRoute(item.children, homeRouteName)
|
|
139
|
-
if (res.name) return res
|
|
140
|
-
} else {
|
|
141
|
-
if (item.name === homeRouteName) homeRoute = item
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return homeRoute
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* @param {Array} list 标签列表
|
|
149
|
-
* @param {String} name 当前关闭的标签的name
|
|
150
|
-
*/
|
|
151
|
-
export const getNextRoute = (list, route) => {
|
|
152
|
-
let res = {}
|
|
153
|
-
if (list.length === 2) {
|
|
154
|
-
res = getHomeRoute(list)
|
|
155
|
-
} else {
|
|
156
|
-
const index = list.findIndex((item) => routeEqual(item, route))
|
|
157
|
-
if (index === list.length - 1) res = list[list.length - 2]
|
|
158
|
-
else res = list[index + 1]
|
|
159
|
-
}
|
|
160
|
-
return res
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* 判断打开的标签列表里是否已存在这个新添加的路由对象
|
|
165
|
-
*/
|
|
166
|
-
export const routeHasExist = (tagNavList, routeItem) => {
|
|
167
|
-
let len = tagNavList.length
|
|
168
|
-
let res = false
|
|
169
|
-
doCustomTimes(len, (index) => {
|
|
170
|
-
if (routeEqual(tagNavList[index], routeItem)) res = true
|
|
171
|
-
})
|
|
172
|
-
return res
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* @description 根据name/params/query判断两个路由对象是否相等
|
|
177
|
-
* @param {*} route1 路由对象
|
|
178
|
-
* @param {*} route2 路由对象
|
|
179
|
-
*/
|
|
180
|
-
export const routeEqual = (route1, route2) => {
|
|
181
|
-
return route1.name === route2.name
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* @param {*} list 现有标签导航列表
|
|
186
|
-
* @param {*} newRoute 新添加的路由原信息对象
|
|
187
|
-
* @description 如果该newRoute已经存在则不再添加
|
|
188
|
-
*/
|
|
189
|
-
export const getNewTagList = (list, newRoute) => {
|
|
190
|
-
const { name, path, meta } = newRoute
|
|
191
|
-
let newList = [...list]
|
|
192
|
-
if (newList.findIndex((item) => item.name === name) >= 0) return newList
|
|
193
|
-
else newList.push({ name, path, meta })
|
|
194
|
-
return newList
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function _forEach(arr, fn) {
|
|
198
|
-
if (!arr.length || !fn) return
|
|
199
|
-
let i = -1
|
|
200
|
-
let len = arr.length
|
|
201
|
-
while (++i < len) {
|
|
202
|
-
let item = arr[i]
|
|
203
|
-
fn(item, i, arr)
|
|
204
|
-
}
|
|
205
|
-
}
|
|
1
|
+
// import { config } from '@indfnd/utils'
|
|
2
|
+
|
|
3
|
+
const hasChild = (item) => {
|
|
4
|
+
return item.children && item.children.length
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @param {Array} target 目标数组
|
|
9
|
+
* @param {Array} arr 需要查询的数组
|
|
10
|
+
* @description 判断要查询的数组是否至少有一个元素包含在目标数组中
|
|
11
|
+
*/
|
|
12
|
+
const hasOneOf = (targetArr, arr) => {
|
|
13
|
+
return targetArr.some((_) => arr.includes(_))
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const showThisMenuEle = (item, access) => {
|
|
17
|
+
if (item.meta && item.meta.access && item.meta.access.length) {
|
|
18
|
+
if (hasOneOf(item.meta.access, access)) return true
|
|
19
|
+
else return false
|
|
20
|
+
} else return true
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @param {Number} times 回调函数需要执行的次数
|
|
25
|
+
* @param {Function} callback 回调函数
|
|
26
|
+
*/
|
|
27
|
+
const doCustomTimes = (times, callback) => {
|
|
28
|
+
let i = -1
|
|
29
|
+
while (++i < times) {
|
|
30
|
+
callback(i)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const getRouteTitleHandled = (route) => {
|
|
35
|
+
let router = { ...route }
|
|
36
|
+
let meta = { ...route.meta }
|
|
37
|
+
let title = ''
|
|
38
|
+
if (meta.title) {
|
|
39
|
+
if (typeof meta.title === 'function') {
|
|
40
|
+
meta.__titleIsFunction__ = true
|
|
41
|
+
title = meta.title(router)
|
|
42
|
+
} else title = meta.title
|
|
43
|
+
}
|
|
44
|
+
meta.title = title
|
|
45
|
+
router.meta = meta
|
|
46
|
+
return router
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @description 根据当前跳转的路由设置显示在浏览器标签的title
|
|
51
|
+
* 标签名字不允许改变,固定为 营销业务一体化平台
|
|
52
|
+
* @param {Object} routeItem 路由对象
|
|
53
|
+
*/
|
|
54
|
+
export const setTitle = (/*routeItem*/) => {
|
|
55
|
+
// const pageTitle = getRouteTitleHandled(routeItem).meta.title
|
|
56
|
+
// window.document.title = pageTitle ? `${config.title} - ${pageTitle}` : config.title
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @param {Array} list 通过路由列表得到菜单列表
|
|
61
|
+
* @returns {Array}
|
|
62
|
+
*/
|
|
63
|
+
export const getMenuByRouter = (list, access) => {
|
|
64
|
+
let res = []
|
|
65
|
+
_forEach(list, (item) => {
|
|
66
|
+
if (!item.meta || (item.meta && !item.meta.hideInMenu)) {
|
|
67
|
+
let obj = {
|
|
68
|
+
icon: (item.meta && item.meta.icon) || '',
|
|
69
|
+
name: item.name,
|
|
70
|
+
meta: item.meta,
|
|
71
|
+
}
|
|
72
|
+
if (
|
|
73
|
+
(hasChild(item) || (item.meta && item.meta.showAlways)) &&
|
|
74
|
+
showThisMenuEle(item, access)
|
|
75
|
+
) {
|
|
76
|
+
obj.children = getMenuByRouter(item.children, access)
|
|
77
|
+
}
|
|
78
|
+
if (item.meta && item.meta.href) obj.href = item.meta.href
|
|
79
|
+
if (showThisMenuEle(item, access)) res.push(obj)
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
return res
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @param {Array} routeMetched 当前路由metched
|
|
87
|
+
* @returns {Array}
|
|
88
|
+
*/
|
|
89
|
+
export const getBreadCrumbList = (route, homeRoute) => {
|
|
90
|
+
let homeItem = { ...homeRoute, icon: homeRoute.meta.icon }
|
|
91
|
+
const { crumbs } = route.meta
|
|
92
|
+
if (crumbs && crumbs.length > 0) {
|
|
93
|
+
crumbs.forEach((item) => {
|
|
94
|
+
item.meta = {
|
|
95
|
+
title: item.title,
|
|
96
|
+
}
|
|
97
|
+
if (item.type === 2) {
|
|
98
|
+
item.to = item.name
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
let breadCrumbList = [{ ...homeItem, to: homeRoute.name }]
|
|
103
|
+
if (crumbs && crumbs.length > 0) {
|
|
104
|
+
breadCrumbList = breadCrumbList.concat(crumbs)
|
|
105
|
+
}
|
|
106
|
+
return breadCrumbList
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export const showTitle = (item) => {
|
|
110
|
+
return item.meta.title
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @description 本地存储和获取标签导航列表
|
|
115
|
+
*/
|
|
116
|
+
export const setTagNavListInLocalstorage = (list) => {
|
|
117
|
+
sessionStorage.tagNaveList = JSON.stringify(list)
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @returns {Array} 其中的每个元素只包含路由原信息中的name, path, meta三项
|
|
121
|
+
*/
|
|
122
|
+
export const getTagNavListFromLocalstorage = () => {
|
|
123
|
+
const list = sessionStorage.tagNaveList
|
|
124
|
+
return list ? JSON.parse(list) : []
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @param {Array} routers 路由列表数组
|
|
129
|
+
* @description 用于找到路由列表中name为home的对象
|
|
130
|
+
*/
|
|
131
|
+
export const getHomeRoute = (routers, homeRouteName = 'home') => {
|
|
132
|
+
let i = -1
|
|
133
|
+
let len = routers.length
|
|
134
|
+
let homeRoute = {}
|
|
135
|
+
while (++i < len) {
|
|
136
|
+
let item = routers[i]
|
|
137
|
+
if (item.children && item.children.length) {
|
|
138
|
+
let res = getHomeRoute(item.children, homeRouteName)
|
|
139
|
+
if (res.name) return res
|
|
140
|
+
} else {
|
|
141
|
+
if (item.name === homeRouteName) homeRoute = item
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return homeRoute
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @param {Array} list 标签列表
|
|
149
|
+
* @param {String} name 当前关闭的标签的name
|
|
150
|
+
*/
|
|
151
|
+
export const getNextRoute = (list, route) => {
|
|
152
|
+
let res = {}
|
|
153
|
+
if (list.length === 2) {
|
|
154
|
+
res = getHomeRoute(list)
|
|
155
|
+
} else {
|
|
156
|
+
const index = list.findIndex((item) => routeEqual(item, route))
|
|
157
|
+
if (index === list.length - 1) res = list[list.length - 2]
|
|
158
|
+
else res = list[index + 1]
|
|
159
|
+
}
|
|
160
|
+
return res
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* 判断打开的标签列表里是否已存在这个新添加的路由对象
|
|
165
|
+
*/
|
|
166
|
+
export const routeHasExist = (tagNavList, routeItem) => {
|
|
167
|
+
let len = tagNavList.length
|
|
168
|
+
let res = false
|
|
169
|
+
doCustomTimes(len, (index) => {
|
|
170
|
+
if (routeEqual(tagNavList[index], routeItem)) res = true
|
|
171
|
+
})
|
|
172
|
+
return res
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @description 根据name/params/query判断两个路由对象是否相等
|
|
177
|
+
* @param {*} route1 路由对象
|
|
178
|
+
* @param {*} route2 路由对象
|
|
179
|
+
*/
|
|
180
|
+
export const routeEqual = (route1, route2) => {
|
|
181
|
+
return route1.name === route2.name
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @param {*} list 现有标签导航列表
|
|
186
|
+
* @param {*} newRoute 新添加的路由原信息对象
|
|
187
|
+
* @description 如果该newRoute已经存在则不再添加
|
|
188
|
+
*/
|
|
189
|
+
export const getNewTagList = (list, newRoute) => {
|
|
190
|
+
const { name, path, meta } = newRoute
|
|
191
|
+
let newList = [...list]
|
|
192
|
+
if (newList.findIndex((item) => item.name === name) >= 0) return newList
|
|
193
|
+
else newList.push({ name, path, meta })
|
|
194
|
+
return newList
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function _forEach(arr, fn) {
|
|
198
|
+
if (!arr.length || !fn) return
|
|
199
|
+
let i = -1
|
|
200
|
+
let len = arr.length
|
|
201
|
+
while (++i < len) {
|
|
202
|
+
let item = arr[i]
|
|
203
|
+
fn(item, i, arr)
|
|
204
|
+
}
|
|
205
|
+
}
|
package/utils/n-theme.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import classnames from 'classnames'
|
|
2
|
-
import config from "@lambo-design/shared/config/config"
|
|
3
|
-
|
|
4
|
-
export const THEME_KEY = 'ind-theme'
|
|
5
|
-
export const THEME_LIST = ['ind-default-theme', 'ind-small-theme']
|
|
6
|
-
const defaultTheme = 'ind-small-theme' //'ind-default-theme'
|
|
7
|
-
|
|
8
|
-
export function getDefaultTheme() {
|
|
9
|
-
return /*getLocalStorage(THEME_KEY) ||*/ defaultTheme
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function doChangeTheme(theme) {
|
|
13
|
-
const body = document.getElementsByTagName('body') && document.getElementsByTagName('body')[0]
|
|
14
|
-
if (body) {
|
|
15
|
-
let cls = (body.className && body.className.split(' ')) || []
|
|
16
|
-
const nowCls = cls.reduce((rlt, item) => ({ ...rlt, [item]: true }), {
|
|
17
|
-
'ind-theme': true,
|
|
18
|
-
'ind-default-theme': true,
|
|
19
|
-
'ibp-mode': !config.showMenus,
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
let removeCls = {}
|
|
23
|
-
const nowTheme = body.getAttribute(THEME_KEY)
|
|
24
|
-
if (nowTheme && nowTheme !== defaultTheme) {
|
|
25
|
-
removeCls = { [nowTheme]: false }
|
|
26
|
-
}
|
|
27
|
-
body.setAttribute(THEME_KEY, theme)
|
|
28
|
-
body.className = classnames({ ...nowCls, ...removeCls }, theme)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
import classnames from 'classnames'
|
|
2
|
+
import config from "@lambo-design/shared/config/config"
|
|
3
|
+
|
|
4
|
+
export const THEME_KEY = 'ind-theme'
|
|
5
|
+
export const THEME_LIST = ['ind-default-theme', 'ind-small-theme']
|
|
6
|
+
const defaultTheme = 'ind-small-theme' //'ind-default-theme'
|
|
7
|
+
|
|
8
|
+
export function getDefaultTheme() {
|
|
9
|
+
return /*getLocalStorage(THEME_KEY) ||*/ defaultTheme
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function doChangeTheme(theme) {
|
|
13
|
+
const body = document.getElementsByTagName('body') && document.getElementsByTagName('body')[0]
|
|
14
|
+
if (body) {
|
|
15
|
+
let cls = (body.className && body.className.split(' ')) || []
|
|
16
|
+
const nowCls = cls.reduce((rlt, item) => ({ ...rlt, [item]: true }), {
|
|
17
|
+
'ind-theme': true,
|
|
18
|
+
'ind-default-theme': true,
|
|
19
|
+
'ibp-mode': !config.showMenus,
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
let removeCls = {}
|
|
23
|
+
const nowTheme = body.getAttribute(THEME_KEY)
|
|
24
|
+
if (nowTheme && nowTheme !== defaultTheme) {
|
|
25
|
+
removeCls = { [nowTheme]: false }
|
|
26
|
+
}
|
|
27
|
+
body.setAttribute(THEME_KEY, theme)
|
|
28
|
+
body.className = classnames({ ...nowCls, ...removeCls }, theme)
|
|
29
|
+
}
|
|
30
|
+
}
|