@lambo-design/shared 1.0.0-beta.6 → 1.0.0-beta.60
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 +2 -1
- package/config/themes/atrovirens/atrovirens.css +252 -0
- package/config/themes/atrovirens/atrovirens.css.map +1 -0
- package/config/themes/{gold/default.less → atrovirens/atrovirens.less} +89 -74
- package/config/themes/atrovirens/var.less +331 -0
- package/config/themes/default/default.css +252 -241
- package/config/themes/default/default.css.map +1 -0
- package/config/themes/default/default.less +89 -74
- package/config/themes/default/var.less +25 -4
- package/config/themes/eap/eap.css +252 -0
- package/config/themes/eap/eap.css.map +1 -0
- package/config/themes/{lime/default.less → eap/eap.less} +89 -74
- package/config/themes/eap/var.less +332 -0
- package/config/themes/gold/{default.css → gold.css} +252 -241
- package/config/themes/gold/gold.css.map +1 -0
- package/config/themes/gold/gold.less +334 -0
- package/config/themes/gold/var.css +0 -0
- package/config/themes/gold/var.css.map +0 -0
- package/config/themes/gold/var.less +23 -4
- package/config/themes/index.js +10 -2
- package/config/themes/lime/{default.css → lime.css} +252 -241
- package/config/themes/lime/lime.css.map +1 -0
- package/config/themes/lime/lime.less +334 -0
- package/config/themes/lime/var.less +22 -4
- package/config/themes/orange/orange.css +252 -0
- package/config/themes/orange/orange.css.map +1 -0
- package/config/themes/orange/orange.less +334 -0
- package/config/themes/orange/var.less +332 -0
- package/config/themes/red/red.css +252 -0
- package/config/themes/red/red.css.map +1 -0
- package/config/themes/red/red.less +334 -0
- package/config/themes/red/var.less +331 -0
- package/config/themes/theme-atrovirens.js +262 -0
- package/config/themes/theme-default.js +17 -7
- package/config/themes/theme-eap.js +262 -0
- package/config/themes/theme-gold.js +18 -8
- package/config/themes/theme-lime.js +18 -8
- package/config/themes/theme-orange.js +264 -0
- package/config/themes/theme-red.js +263 -0
- package/directives/index.js +23 -0
- package/directives/module/draggable.js +56 -0
- package/directives/module/permission.js +49 -0
- package/index.js +3 -1
- package/package.json +6 -4
- package/plugin/index.js +12 -0
- package/plugin/module/date-format.js +30 -0
- package/plugin/module/loading.js +26 -0
- package/plugin/module/warn-handler.js +11 -0
- package/utils/ajax/interceptors.js +13 -6
- package/utils/assist.js +88 -79
- package/utils/date.js +0 -27
- package/utils/excel.js +25 -15
- package/utils/menu/index.js +35 -2
- package/utils/platform.js +44 -10
- package/utils/vxetable/index.js +25 -0
package/utils/assist.js
CHANGED
|
@@ -1,79 +1,88 @@
|
|
|
1
|
-
// deepCopy
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
'[object
|
|
33
|
-
'[object
|
|
34
|
-
'[object
|
|
35
|
-
'[object
|
|
36
|
-
'[object
|
|
37
|
-
'[object
|
|
38
|
-
'[object
|
|
39
|
-
'[object
|
|
40
|
-
'[object
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
1
|
+
// deepCopy
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export function deepCopy(data) {
|
|
5
|
+
let i;
|
|
6
|
+
const t = typeOf(data);
|
|
7
|
+
let o;
|
|
8
|
+
|
|
9
|
+
if (t === 'array') {
|
|
10
|
+
o = [];
|
|
11
|
+
} else if (t === 'object') {
|
|
12
|
+
o = {};
|
|
13
|
+
} else {
|
|
14
|
+
return data;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (t === 'array') {
|
|
18
|
+
for (i = 0; i < data.length; i++) {
|
|
19
|
+
o.push(deepCopy(data[i]));
|
|
20
|
+
}
|
|
21
|
+
} else if (t === 'object') {
|
|
22
|
+
for (i in data) {
|
|
23
|
+
o[i] = deepCopy(data[i]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return o;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function typeOf(obj) {
|
|
30
|
+
const toString = Object.prototype.toString;
|
|
31
|
+
const map = {
|
|
32
|
+
'[object Boolean]': 'boolean',
|
|
33
|
+
'[object Number]': 'number',
|
|
34
|
+
'[object String]': 'string',
|
|
35
|
+
'[object Function]': 'function',
|
|
36
|
+
'[object Array]': 'array',
|
|
37
|
+
'[object Date]': 'date',
|
|
38
|
+
'[object RegExp]': 'regExp',
|
|
39
|
+
'[object Undefined]': 'undefined',
|
|
40
|
+
'[object Null]': 'null',
|
|
41
|
+
'[object Object]': 'object'
|
|
42
|
+
};
|
|
43
|
+
return map[toString.call(obj)];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function operateBtn(vm, h, currentRow, operationName, operation, type, permission) {
|
|
47
|
+
return h('Button', {
|
|
48
|
+
props: {
|
|
49
|
+
type: type,
|
|
50
|
+
size: "small",
|
|
51
|
+
ghost: true,
|
|
52
|
+
},
|
|
53
|
+
directives: [(permission === '' || permission === null) ? '' : {
|
|
54
|
+
name: "permission",
|
|
55
|
+
value: permission
|
|
56
|
+
}],
|
|
57
|
+
style: {
|
|
58
|
+
margin: '0 2px'
|
|
59
|
+
},
|
|
60
|
+
on: {
|
|
61
|
+
'click': () => {
|
|
62
|
+
operation(vm, currentRow);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}, operationName);
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function operateHref(vm, h, currentRow, operationName, operation, type, permission) {
|
|
70
|
+
return h('a', {
|
|
71
|
+
style: {
|
|
72
|
+
margin: '0 4px'
|
|
73
|
+
},
|
|
74
|
+
directives: [(permission === '' || permission === null) ? '' : {
|
|
75
|
+
name: "permission",
|
|
76
|
+
value: permission
|
|
77
|
+
}],
|
|
78
|
+
on: {
|
|
79
|
+
'click': () => {
|
|
80
|
+
operation(vm, currentRow);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, operationName);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function isJson(arg) {
|
|
87
|
+
return typeof (arg) == "object" && Object.prototype.toString.call(arg).toLowerCase() == "[object object]" && !arg.length
|
|
88
|
+
};
|
package/utils/date.js
CHANGED
|
@@ -4,33 +4,6 @@ import config from '../config/config'
|
|
|
4
4
|
* 本项目已集成 moment.js (http://momentjs.cn/),推荐使用 moment.js
|
|
5
5
|
*/
|
|
6
6
|
import moment from "moment";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 对Date的扩展,将 Date 转化为指定格式的String
|
|
10
|
-
* 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
|
|
11
|
-
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
|
|
12
|
-
* 例:
|
|
13
|
-
* (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
|
|
14
|
-
* (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
|
|
15
|
-
*/
|
|
16
|
-
Date.prototype.Format = function (fmt) {
|
|
17
|
-
let o = {
|
|
18
|
-
"M+": this.getMonth() + 1, //月份
|
|
19
|
-
"d+": this.getDate(), //日
|
|
20
|
-
"H+": this.getHours(), //小时
|
|
21
|
-
"m+": this.getMinutes(), //分
|
|
22
|
-
"s+": this.getSeconds(), //秒
|
|
23
|
-
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
|
|
24
|
-
"S": this.getMilliseconds() //毫秒
|
|
25
|
-
};
|
|
26
|
-
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
27
|
-
for (let k in o)
|
|
28
|
-
if (new RegExp("(" + k + ")").test(fmt)){
|
|
29
|
-
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
|
|
30
|
-
}
|
|
31
|
-
return fmt;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
7
|
export function timestampToTime(timestamp) {
|
|
35
8
|
let date = new Date(timestamp);
|
|
36
9
|
let Y = date.getFullYear() + '-';
|
package/utils/excel.js
CHANGED
|
@@ -15,7 +15,9 @@ const typeRules = {
|
|
|
15
15
|
'index': 'index',
|
|
16
16
|
'select': 'select',
|
|
17
17
|
'selection': 'selection',
|
|
18
|
-
'single-selection': 'single-selection'
|
|
18
|
+
'single-selection': 'single-selection',
|
|
19
|
+
'checkbox': 'checkbox',
|
|
20
|
+
'radio': 'radio'
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
function auto_width(ws, data) {
|
|
@@ -127,7 +129,7 @@ function add_style(ws, title) {
|
|
|
127
129
|
Object.keys(ws).forEach(item => {
|
|
128
130
|
if (/^[A-Z]+\d+$/.test(item)) {
|
|
129
131
|
var alphabet = item.replace(/[^a-z]+/ig, "");
|
|
130
|
-
if (colhash.indexOf(alphabet)
|
|
132
|
+
if (colhash.indexOf(alphabet) === -1) {
|
|
131
133
|
colhash.push(alphabet)
|
|
132
134
|
for (var i = 1; i <= rowSum; i++) {
|
|
133
135
|
if (!ws.hasOwnProperty(alphabet + i)) {
|
|
@@ -141,7 +143,7 @@ function add_style(ws, title) {
|
|
|
141
143
|
}
|
|
142
144
|
})
|
|
143
145
|
|
|
144
|
-
let
|
|
146
|
+
let titleStyle = {
|
|
145
147
|
border: {
|
|
146
148
|
left: {style: 'thin', color: {rgb: "000000"}},
|
|
147
149
|
top: {style: 'thin', color: {rgb: "000000"}},
|
|
@@ -177,14 +179,14 @@ function add_style(ws, title) {
|
|
|
177
179
|
*/
|
|
178
180
|
var reg = new RegExp("^[A-Z]+[1 -" + title.length + "]$", "gim");
|
|
179
181
|
if (reg.test(item)) {
|
|
180
|
-
ws[item].s =
|
|
182
|
+
ws[item].s = titleStyle
|
|
181
183
|
} else
|
|
182
184
|
|
|
183
185
|
/**
|
|
184
186
|
* 表体样式: 垂直居中,边框
|
|
185
187
|
*/
|
|
186
188
|
if (/^[A-Z]+\d+$/.test(item)) {
|
|
187
|
-
if (parseInt(item.replace(/[^0-9]/ig, "")) % 2
|
|
189
|
+
if (parseInt(item.replace(/[^0-9]/ig, "")) % 2 === 0) {
|
|
188
190
|
ws[item].s = bodyStyle
|
|
189
191
|
} else {
|
|
190
192
|
ws[item].s = bodyPairStyle
|
|
@@ -203,9 +205,9 @@ function add_style(ws, title) {
|
|
|
203
205
|
function title_filter(data) {
|
|
204
206
|
let filterData = deepCopy(data);
|
|
205
207
|
for (var i = 0; i < filterData.length; i++) {
|
|
206
|
-
if ((filterData[i].hasOwnProperty('type') && filterData[i].type
|
|
208
|
+
if ((filterData[i].hasOwnProperty('type') && filterData[i].type !== undefined && filterData[i].type === typeRules[filterData[i].type]) ||
|
|
207
209
|
// !filterData[i].hasOwnProperty('title') ||
|
|
208
|
-
filterData[i].title
|
|
210
|
+
filterData[i].title === titleRules[filterData[i].title]) {
|
|
209
211
|
filterData.splice(i, 1)
|
|
210
212
|
i--
|
|
211
213
|
}
|
|
@@ -217,9 +219,9 @@ function title_el_filter(data) {
|
|
|
217
219
|
let filterData = deepCopy(data);
|
|
218
220
|
|
|
219
221
|
for (var i = 0; i < filterData.length; i++) {
|
|
220
|
-
if ((filterData[i].hasOwnProperty('property') && filterData[i].property
|
|
222
|
+
if ((filterData[i].hasOwnProperty('property') && filterData[i].property === typeRules[filterData[i].property]) ||
|
|
221
223
|
// !filterData[i].hasOwnProperty('title') ||
|
|
222
|
-
filterData[i].label
|
|
224
|
+
filterData[i].label === titleRules[filterData[i].label]) {
|
|
223
225
|
filterData.splice(i, 1)
|
|
224
226
|
i--
|
|
225
227
|
}
|
|
@@ -451,18 +453,26 @@ export const export_array_to_excel = ({key, data, title, filename, spanColumns,
|
|
|
451
453
|
merge_content(ws, data, spanColumns, title.length)
|
|
452
454
|
add_style(ws, title)
|
|
453
455
|
XLSX.utils.book_append_sheet(wb, ws, filename);
|
|
454
|
-
|
|
456
|
+
if(format === 'csv'){
|
|
457
|
+
XLSX.writeFile(wb, filename + '.' + format,{
|
|
458
|
+
// 要生成的文件类型
|
|
459
|
+
bookType: "csv",
|
|
460
|
+
// // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
|
|
461
|
+
bookSST: false});
|
|
462
|
+
}else{
|
|
463
|
+
XLSX.writeFileXLSX(wb, filename + '.' + format);
|
|
464
|
+
}
|
|
455
465
|
}
|
|
456
466
|
|
|
457
467
|
function s2ab(s) {
|
|
458
468
|
if (typeof ArrayBuffer !== 'undefined') {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
for (
|
|
469
|
+
let buf = new ArrayBuffer(s.length);
|
|
470
|
+
let view = new Uint8Array(buf);
|
|
471
|
+
for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
|
|
462
472
|
return buf;
|
|
463
473
|
} else {
|
|
464
|
-
|
|
465
|
-
for (
|
|
474
|
+
let buf = new Array(s.length);
|
|
475
|
+
for (let i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
|
|
466
476
|
return buf;
|
|
467
477
|
}
|
|
468
478
|
}
|
package/utils/menu/index.js
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 判断是否存在路由
|
|
3
|
+
* @param $router
|
|
4
|
+
* @param name
|
|
5
|
+
* @returns {*|boolean}
|
|
6
|
+
*/
|
|
7
|
+
export const hasRoute = ($router, name) => {
|
|
8
|
+
let routes = $router.getRoutes();
|
|
9
|
+
let res = routes.filter(item => item.name === name)
|
|
10
|
+
return res && res.length > 0
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 判断是否存在路由并且页面存在
|
|
14
|
+
* @param $router
|
|
15
|
+
* @param path
|
|
16
|
+
* @returns {*|boolean}
|
|
17
|
+
*/
|
|
18
|
+
export const hasRoutePath = ($router, path) => {
|
|
19
|
+
if ($router && path) {
|
|
20
|
+
let routes = $router.getRoutes();
|
|
21
|
+
if (path.trim().startsWith("dida/")) {
|
|
22
|
+
path = path.trim().replace("dida/","");
|
|
23
|
+
if (!path.startsWith("/")) {
|
|
24
|
+
path = "/" + path;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
let res = routes.filter(item => item.path === path)
|
|
28
|
+
return res && res.length > 0
|
|
29
|
+
}
|
|
30
|
+
return false
|
|
31
|
+
}
|
|
1
32
|
/**
|
|
2
33
|
* 动态生成菜单
|
|
3
34
|
* @param permissionList
|
|
@@ -33,7 +64,7 @@ const listToMenuTree = (list, menuTree, pageNode, parentId, crumbs, root, appId)
|
|
|
33
64
|
return;
|
|
34
65
|
}
|
|
35
66
|
list.forEach(item => {
|
|
36
|
-
if (item.appId == appId) {
|
|
67
|
+
if (item.appId == appId && (!item.hasOwnProperty("hideInMenu") || (item.hasOwnProperty("hideInMenu") && !item.hideInMenu))) {
|
|
37
68
|
// 判断是否为父级菜单
|
|
38
69
|
if (item.pid === parentId) {
|
|
39
70
|
if (item.type === 1 || item.type === 2) {
|
|
@@ -43,7 +74,9 @@ const listToMenuTree = (list, menuTree, pageNode, parentId, crumbs, root, appId)
|
|
|
43
74
|
title: item.label,
|
|
44
75
|
icon: item.icon,
|
|
45
76
|
crumbs: [...crumbs],
|
|
46
|
-
activeName: item.name
|
|
77
|
+
activeName: item.name,
|
|
78
|
+
notCache: item.notCache ? true : false,
|
|
79
|
+
hideInMenu: item.hideInMenu ? true : false
|
|
47
80
|
},
|
|
48
81
|
type: item.type,
|
|
49
82
|
pid: item.pid,
|
package/utils/platform.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
export const TOKEN_KEY = 'v8-token'
|
|
1
|
+
export const TOKEN_KEY = 'lambo-token'
|
|
3
2
|
|
|
4
3
|
export const COOKIE_KEY = 'lambo-sso-key'
|
|
5
4
|
|
|
5
|
+
export const SSO_TOKEN_KEY = 'lambo-sso-token'
|
|
6
|
+
|
|
6
7
|
export function objEqual(obj1, obj2) {
|
|
7
8
|
const keysArr1 = Object.keys(obj1)
|
|
8
9
|
const keysArr2 = Object.keys(obj2)
|
|
@@ -152,14 +153,20 @@ export const showTitle = (item, vm) => {
|
|
|
152
153
|
/**
|
|
153
154
|
* @description 本地存储和获取标签导航列表
|
|
154
155
|
*/
|
|
155
|
-
export const setTagNavListInLocalstorage = list => {
|
|
156
|
-
|
|
156
|
+
export const setTagNavListInLocalstorage = (list , key) => {
|
|
157
|
+
if (!key) {
|
|
158
|
+
key = 'LD-tagNavList';
|
|
159
|
+
}
|
|
160
|
+
localStorage[key] = JSON.stringify(list)
|
|
157
161
|
}
|
|
158
162
|
/**
|
|
159
163
|
* @returns {Array} 其中的每个元素只包含路由原信息中的name, path, meta三项
|
|
160
164
|
*/
|
|
161
|
-
export const getTagNavListFromLocalstorage = () => {
|
|
162
|
-
|
|
165
|
+
export const getTagNavListFromLocalstorage = (key) => {
|
|
166
|
+
if (!key) {
|
|
167
|
+
key = 'LD-tagNavList';
|
|
168
|
+
}
|
|
169
|
+
const list = localStorage[key]
|
|
163
170
|
return list ? JSON.parse(list) : []
|
|
164
171
|
}
|
|
165
172
|
|
|
@@ -357,7 +364,7 @@ export const routeEqual = (route1, route2) => {
|
|
|
357
364
|
const params2 = route2.params || {}
|
|
358
365
|
const query1 = route1.query || {}
|
|
359
366
|
const query2 = route2.query || {}
|
|
360
|
-
return (route1.name === route2.name)
|
|
367
|
+
return (route1.name === route2.name) && objEqual(params1, params2) && objEqual(query1, query2)
|
|
361
368
|
}
|
|
362
369
|
|
|
363
370
|
/**
|
|
@@ -421,8 +428,11 @@ export const setTitle = (configTitle,routeItem, vm) => {
|
|
|
421
428
|
window.document.title = resTitle
|
|
422
429
|
}
|
|
423
430
|
|
|
424
|
-
export const getUrlParams = () => {
|
|
425
|
-
|
|
431
|
+
export const getUrlParams = (url) => {
|
|
432
|
+
if (!url){
|
|
433
|
+
url = location.search;
|
|
434
|
+
}
|
|
435
|
+
//const url = location.search; //获取url中"?"符后的字串
|
|
426
436
|
const theRequest = new Object();
|
|
427
437
|
if (url.indexOf("?") != -1) {
|
|
428
438
|
const str = url.substr(1);
|
|
@@ -561,4 +571,28 @@ export const getPreviousTagIndex = (tagList, name) => {
|
|
|
561
571
|
}
|
|
562
572
|
}
|
|
563
573
|
return count;
|
|
564
|
-
}
|
|
574
|
+
};
|
|
575
|
+
|
|
576
|
+
export const getDelTagIndex = (tagList, name) => {
|
|
577
|
+
let count = 1;
|
|
578
|
+
if (tagList && name) {
|
|
579
|
+
for (let i = 1 ;i < tagList.length; i++) {
|
|
580
|
+
let item = tagList[i];
|
|
581
|
+
if (item.name !== name) {
|
|
582
|
+
return count;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
return count;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
export const turnToPage = (vm, name ,url) =>{
|
|
590
|
+
if (window.top && window.top.location.href != window.location.href) {
|
|
591
|
+
sessionStorage.removeItem('activeName')
|
|
592
|
+
window.parent.location.href = url;
|
|
593
|
+
} else {
|
|
594
|
+
vm.$router.push({
|
|
595
|
+
name: name
|
|
596
|
+
})
|
|
597
|
+
}
|
|
598
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const setParentRefs = (parentVm, targetVm, refKey) => {
|
|
2
|
+
let hasFind = false;
|
|
3
|
+
if (parentVm.$refs) {
|
|
4
|
+
//遍历父组件的refs里注册的组件
|
|
5
|
+
Object.entries(parentVm.$refs).forEach(([parentKey, parentValue]) => {
|
|
6
|
+
//找到targetVm组件
|
|
7
|
+
if (parentValue === targetVm) {
|
|
8
|
+
hasFind = true;
|
|
9
|
+
//遍历targetVm组件上注册的refKey组件
|
|
10
|
+
Object.entries(targetVm.$refs[refKey]).forEach(([key, value])=>{
|
|
11
|
+
//找到refKey组件methods里面的function
|
|
12
|
+
if(key.charAt(0) !== '$'
|
|
13
|
+
&& key.charAt(0) !== '_'
|
|
14
|
+
&& typeof value == 'function'){
|
|
15
|
+
//将function添加到targetVm组件
|
|
16
|
+
parentVm.$refs[parentKey][key] = value
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
if (!hasFind && parentVm.$parent) {
|
|
23
|
+
setParentRefs(parentVm.$parent, targetVm, refKey)
|
|
24
|
+
}
|
|
25
|
+
}
|