xs-common-plugins 1.0.6 → 1.0.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/README.md +19 -1
- package/package.json +1 -1
- package/src/App.vue +11 -11
- package/src/common/createMenuId.js +7 -7
- package/src/common/uploadImgToBase64.js +12 -12
- package/src/common/utils.js +95 -95
- package/src/components/Breadcrumb/index.vue +81 -81
- package/src/components/Col_TableCell/data.js +4 -4
- package/src/components/Col_TableCell/index.scss +77 -77
- package/src/components/Col_TableCell/index.vue +43 -43
- package/src/components/Col_TableCell/methods.js +19 -19
- package/src/components/Hamburger/index.vue +44 -44
- package/src/components/ReportCmp/data.js +3 -3
- package/src/components/ReportCmp/index.scss +29 -29
- package/src/components/ReportCmp/index.vue +76 -76
- package/src/components/ReportCmp/methods.js +30 -30
- package/src/components/Search/cascader/data.js +3 -3
- package/src/components/Search/cascader/index.scss +17 -17
- package/src/components/Search/cascader/index.vue +96 -96
- package/src/components/Search/cascader/methods.js +41 -41
- package/src/components/Search/data.js +5 -5
- package/src/components/Search/hk_cascader/index.vue +104 -104
- package/src/components/Search/hk_cascader_qudao/index.vue +94 -94
- package/src/components/Search/index.vue +406 -404
- package/src/components/Search/methods.js +86 -86
- package/src/components/Search/product_option/data.js +3 -3
- package/src/components/Search/product_option/index.scss +68 -68
- package/src/components/Search/product_option/index.vue +419 -419
- package/src/components/Search/product_option/methods.js +46 -46
- package/src/components/Search/select/data.js +3 -3
- package/src/components/Search/select/index.scss +2 -2
- package/src/components/Search/select/index.vue +114 -114
- package/src/components/Search/select/methods.js +51 -51
- package/src/components/Search_filter/data.js +5 -5
- package/src/components/Search_filter/index.vue +88 -88
- package/src/components/Search_filter/methods.js +43 -43
- package/src/components/TableCmp/data.js +3 -3
- package/src/components/TableCmp/index.scss +22 -22
- package/src/components/TableCmp/index.vue +98 -98
- package/src/components/TableCmp/methods.js +35 -35
- package/src/components/home/BarChart.vue +118 -118
- package/src/components/home/LineChart.vue +146 -146
- package/src/components/home/Panel.vue +135 -135
- package/src/components/home/PanelGroup.vue +146 -146
- package/src/components/home/PieChart.vue +81 -81
- package/src/components/home/RaddarChart.vue +119 -119
- package/src/components/home/TabLayout.vue +88 -88
- package/src/components/home/TableList.vue +158 -158
- package/src/components/home/Teng.vue +248 -248
- package/src/components/home/TransactionTable.vue +49 -49
- package/src/components/home/mixins/resize.js +55 -55
- package/src/components/im/index.vue +155 -156
- package/src/components/im/methods.js +25 -25
- package/src/components/image-singleUpload/data.js +3 -3
- package/src/components/image-singleUpload/index.scss +26 -26
- package/src/components/image-singleUpload/index.vue +56 -56
- package/src/components/image-singleUpload/methods.js +30 -30
- package/src/components/image-upload/data.js +7 -7
- package/src/components/image-upload/index.vue +41 -41
- package/src/components/image-upload/methods.js +80 -80
- package/src/components/multiple-image-upload/data.js +11 -11
- package/src/components/multiple-image-upload/index.scss +8 -8
- package/src/components/multiple-image-upload/index.vue +63 -63
- package/src/components/multiple-image-upload/methods.js +45 -45
- package/src/components/pro-upload/data.js +3 -3
- package/src/components/pro-upload/index.scss +4 -4
- package/src/components/pro-upload/index.vue +89 -89
- package/src/components/pro-upload/methods.js +86 -86
- package/src/components/report_set/index.scss +44 -44
- package/src/components/report_set/index.vue +153 -153
- package/src/components/search-page/src/index.scss +5 -5
- package/src/components/search-page/src/index.vue +76 -76
- package/src/components/search-page/src/methods.js +36 -36
- package/src/mixin/dialog.js +31 -31
- package/src/mixin/dlg.js +46 -46
- package/src/mixin/newDialog.js +19 -19
- package/src/mixin/report.js +82 -82
- package/src/mixin/table.js +93 -93
- package/src/mixin/tableCell/colTableCell_analysis.js +103 -103
- package/src/mixin/upload.js +22 -22
- package/src/mixin/vmodel.js +26 -26
- package/src/plugins/im/components/chat/index.vue +1 -0
- package/src/plugins/im/components/chat/methods.js +1 -1
- package/src/plugins/im/components/conversation-list/index.css +91 -91
- package/src/plugins/im/components/conversation-list/index.json +3 -3
- package/src/plugins/im/components/conversation-list/index.vue +89 -89
- package/src/plugins/im/components/loading/loading.css +69 -69
- package/src/plugins/im/components/loading/loading.json +3 -3
- package/src/plugins/im/components/loading/loading.vue +14 -14
- package/src/plugins/im/components/msg-image/index.json +3 -3
- package/src/plugins/im/components/msg-text/index.json +3 -3
- package/src/plugins/im/components/msg-text/index.vue +24 -24
- package/src/plugins/im/im-plug-in/Protobuf-2.3.7.min.js +1 -1
- package/src/plugins/im/im-plug-in/RongCallLib-3.1.5.min.js +74 -74
- package/src/plugins/im/im-plug-in/RongIMLib-4.1.0.js +17420 -17420
- package/src/plugins/im/im-plug-in/init.js +216 -216
- package/src/plugins/im/im-plug-in/qiniu.js +266 -266
- package/src/plugins/im/im-plug-in/send-data.js +431 -431
- package/src/plugins/im/im-plug-in/upload.js +232 -232
- package/src/plugins/im/lib/RongIMEmoji-2.2.6.js +332 -332
- package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.js +11635 -11635
- package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.min.js +6 -6
- package/src/plugins/im/utils/underscore-1.8.3.js +1531 -1531
- package/src/plugins/im/utils/utils.js +149 -149
- package/src/plugins/row-col-cmp/colCmp/data.js +3 -3
- package/src/plugins/row-col-cmp/colCmp/index.scss +50 -50
- package/src/plugins/row-col-cmp/colCmp/index.vue +53 -53
- package/src/plugins/row-col-cmp/colCmp/methods.js +25 -25
- package/src/plugins/row-col-cmp/rowCmp/data.js +3 -3
- package/src/plugins/row-col-cmp/rowCmp/index.scss +3 -3
- package/src/plugins/row-col-cmp/rowCmp/index.vue +43 -43
- package/src/plugins/row-col-cmp/rowCmp/methods.js +29 -29
- package/src/router/index.js +43 -43
- package/src/store/getters.js +13 -13
- package/src/store/index.js +58 -58
- package/src/store/modules/app.js +55 -55
- package/src/store/modules/settings.js +28 -28
- package/src/store/modules/user.js +94 -94
- package/src/store/modules/widgetdata.js +42 -42
- package/src/styles/element-ui.scss +49 -49
- package/src/styles/index.scss +0 -1
- package/src/styles/mixin.scss +28 -28
- package/src/styles/sidebar.scss +210 -210
- package/src/styles/table.scss +7 -8
- package/src/styles/transition.scss +48 -48
- package/src/styles/variables.scss +25 -25
- package/src/utils/get-page-title.js +10 -10
- package/src/utils/global-config.js +15 -15
- package/src/utils/index.js +332 -332
- package/src/utils/localStorage.js +21 -21
- package/src/utils/validate.js +20 -20
- package/src/views/layout/components/AllSearch/index.vue +44 -44
- package/src/views/layout/components/AppMain.vue +50 -50
- package/src/views/layout/components/Sidebar/FixiOSBug.js +26 -26
- package/src/views/layout/components/Sidebar/Item.vue +28 -28
- package/src/views/layout/components/Sidebar/Link.vue +34 -34
- package/src/views/layout/components/Sidebar/Logo.vue +79 -79
- package/src/views/layout/components/Sidebar/SidebarItem.vue +67 -67
- package/src/views/layout/components/Sidebar/index.vue +114 -114
- package/src/views/layout/components/index.js +3 -3
- package/src/views/layout/index.vue +105 -105
package/README.md
CHANGED
|
@@ -219,4 +219,22 @@
|
|
|
219
219
|
```
|
|
220
220
|
1.0.6
|
|
221
221
|
1. 处理 登录后 菜单权限推送两次的问题
|
|
222
|
-
```
|
|
222
|
+
```
|
|
223
|
+
```
|
|
224
|
+
1.0.7
|
|
225
|
+
1. 融云聊天功能剔除已读消息
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
1.0.8
|
|
230
|
+
1. 调整融云聊天功能appId
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
1.0.9
|
|
235
|
+
1. 新增Search组件input元素change事件回调
|
|
236
|
+
```
|
|
237
|
+
```
|
|
238
|
+
1.0.10
|
|
239
|
+
1. 新增Search组件input元素change事件回调
|
|
240
|
+
```
|
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div id="app">
|
|
3
|
-
<router-view />
|
|
4
|
-
<router-view name="websocket" />
|
|
5
|
-
</div>
|
|
6
|
-
</template>
|
|
7
|
-
|
|
8
|
-
<script>
|
|
9
|
-
|
|
10
|
-
</script>
|
|
11
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<div id="app">
|
|
3
|
+
<router-view />
|
|
4
|
+
<router-view name="websocket" />
|
|
5
|
+
</div>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
12
|
<style lang="scss" src="./styles/table.scss"></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import md5 from "js-md5";
|
|
2
|
-
import { getConfig } from "@/utils/global-config";
|
|
3
|
-
export function createMenuId(_fullPath) {
|
|
4
|
-
return md5(getConfig("CLIENT_ID") + ":" + _fullPath);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import md5 from "js-md5";
|
|
2
|
+
import { getConfig } from "@/utils/global-config";
|
|
3
|
+
export function createMenuId(_fullPath) {
|
|
4
|
+
return md5(getConfig("CLIENT_ID") + ":" + _fullPath);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function uploadImgToBase64(file) {
|
|
2
|
-
return new Promise((resolve, reject) => {
|
|
3
|
-
if (!window.FileReader) {
|
|
4
|
-
console.error('抱歉,您的浏览器不支持 FileReader API!')
|
|
5
|
-
}
|
|
6
|
-
const reader = new FileReader()
|
|
7
|
-
reader.readAsDataURL(file)
|
|
8
|
-
reader.onload = function () { // 图片转base64完成后返回reader对象
|
|
9
|
-
resolve(reader)
|
|
10
|
-
}
|
|
11
|
-
reader.onerror = reject
|
|
12
|
-
})
|
|
1
|
+
export function uploadImgToBase64(file) {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
if (!window.FileReader) {
|
|
4
|
+
console.error('抱歉,您的浏览器不支持 FileReader API!')
|
|
5
|
+
}
|
|
6
|
+
const reader = new FileReader()
|
|
7
|
+
reader.readAsDataURL(file)
|
|
8
|
+
reader.onload = function () { // 图片转base64完成后返回reader对象
|
|
9
|
+
resolve(reader)
|
|
10
|
+
}
|
|
11
|
+
reader.onerror = reject
|
|
12
|
+
})
|
|
13
13
|
}
|
package/src/common/utils.js
CHANGED
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
export function isPlainObject(val) {
|
|
2
|
-
return toString.call(val) === "[object Object]";
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
export function isArray(val) {
|
|
6
|
-
return toString.call(val) === "[object Array]";
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* 获取指定的URL参数值
|
|
11
|
-
* URL:http://www.quwan.com/index?name=tyler
|
|
12
|
-
* 参数:paramName URL参数
|
|
13
|
-
* 调用方法:getParam("name")
|
|
14
|
-
* 返回值:tyler
|
|
15
|
-
*/
|
|
16
|
-
export function getParam(name) {
|
|
17
|
-
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
|
18
|
-
var reg_rewrite = new RegExp("(^|/)" + name + "/([^/]*)(/|$)", "i");
|
|
19
|
-
var r = window.location.search.substr(1).match(reg);
|
|
20
|
-
var q = window.location.pathname.substr(1).match(reg_rewrite);
|
|
21
|
-
if (r != null) {
|
|
22
|
-
return unescape(r[2]);
|
|
23
|
-
} else if (q != null) {
|
|
24
|
-
return unescape(q[2]);
|
|
25
|
-
} else {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function getQuery(_url, name) {
|
|
31
|
-
let search = _url ? _url : window.location.search;
|
|
32
|
-
if (search) {
|
|
33
|
-
const KEY_REDIRECT = "?";
|
|
34
|
-
const startIndex = window.location.href.indexOf(KEY_REDIRECT);
|
|
35
|
-
search = window.location.href.substring(startIndex + 1);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
var vars = search.split("&");
|
|
39
|
-
for (var i = 0; i < vars.length; i++) {
|
|
40
|
-
var pair = vars[i].split("=");
|
|
41
|
-
if (pair[0] == name) {
|
|
42
|
-
return pair[1];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
export function checkedBoxRe(val, enumName, target) {
|
|
48
|
-
let attr = "";
|
|
49
|
-
let sourceList =
|
|
50
|
-
(target.OrgEnum && target.OrgEnum[enumName]) || target.$orgEnum[enumName];
|
|
51
|
-
const arr = sourceList.slice(0, -1).map(item => {
|
|
52
|
-
return item.Id;
|
|
53
|
-
});
|
|
54
|
-
arr.forEach((item, index) => {
|
|
55
|
-
if ((val & item) > 0) {
|
|
56
|
-
attr += sourceList[index].Text + ",";
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
if (attr.length > 0) {
|
|
60
|
-
attr = attr.substr(0, attr.length - 1);
|
|
61
|
-
}
|
|
62
|
-
return attr;
|
|
63
|
-
} /*节流函数,通过控制每次事件执行的时间间隔控制短时间多次执行方法
|
|
64
|
-
handler:要执行的方法
|
|
65
|
-
wait:每次点击事件执行的时间间隔(毫秒)
|
|
66
|
-
*/
|
|
67
|
-
export function throttle(handler, wait = 1000) {
|
|
68
|
-
var lastTime = 0;
|
|
69
|
-
var self = this,
|
|
70
|
-
arg = arguments;
|
|
71
|
-
|
|
72
|
-
return function() {
|
|
73
|
-
var nowTime = new Date().getTime();
|
|
74
|
-
if (nowTime - lastTime > wait) {
|
|
75
|
-
handler.apply(self, arg);
|
|
76
|
-
lastTime = nowTime;
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/*防抖函数,通过推迟每次事件执行的时间来减少不必要的查询
|
|
82
|
-
handler:要执行的方法
|
|
83
|
-
delay:每次事件执行的推迟时间(毫秒)
|
|
84
|
-
*/
|
|
85
|
-
export function debounce(handler, delay) {
|
|
86
|
-
var timer;
|
|
87
|
-
return function() {
|
|
88
|
-
var self = this,
|
|
89
|
-
arg = arguments;
|
|
90
|
-
clearTimeout(timer);
|
|
91
|
-
timer = setTimeout(function() {
|
|
92
|
-
handler.apply(self, arg);
|
|
93
|
-
}, delay);
|
|
94
|
-
};
|
|
95
|
-
}
|
|
1
|
+
export function isPlainObject(val) {
|
|
2
|
+
return toString.call(val) === "[object Object]";
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function isArray(val) {
|
|
6
|
+
return toString.call(val) === "[object Array]";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 获取指定的URL参数值
|
|
11
|
+
* URL:http://www.quwan.com/index?name=tyler
|
|
12
|
+
* 参数:paramName URL参数
|
|
13
|
+
* 调用方法:getParam("name")
|
|
14
|
+
* 返回值:tyler
|
|
15
|
+
*/
|
|
16
|
+
export function getParam(name) {
|
|
17
|
+
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
|
18
|
+
var reg_rewrite = new RegExp("(^|/)" + name + "/([^/]*)(/|$)", "i");
|
|
19
|
+
var r = window.location.search.substr(1).match(reg);
|
|
20
|
+
var q = window.location.pathname.substr(1).match(reg_rewrite);
|
|
21
|
+
if (r != null) {
|
|
22
|
+
return unescape(r[2]);
|
|
23
|
+
} else if (q != null) {
|
|
24
|
+
return unescape(q[2]);
|
|
25
|
+
} else {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function getQuery(_url, name) {
|
|
31
|
+
let search = _url ? _url : window.location.search;
|
|
32
|
+
if (search) {
|
|
33
|
+
const KEY_REDIRECT = "?";
|
|
34
|
+
const startIndex = window.location.href.indexOf(KEY_REDIRECT);
|
|
35
|
+
search = window.location.href.substring(startIndex + 1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var vars = search.split("&");
|
|
39
|
+
for (var i = 0; i < vars.length; i++) {
|
|
40
|
+
var pair = vars[i].split("=");
|
|
41
|
+
if (pair[0] == name) {
|
|
42
|
+
return pair[1];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
export function checkedBoxRe(val, enumName, target) {
|
|
48
|
+
let attr = "";
|
|
49
|
+
let sourceList =
|
|
50
|
+
(target.OrgEnum && target.OrgEnum[enumName]) || target.$orgEnum[enumName];
|
|
51
|
+
const arr = sourceList.slice(0, -1).map(item => {
|
|
52
|
+
return item.Id;
|
|
53
|
+
});
|
|
54
|
+
arr.forEach((item, index) => {
|
|
55
|
+
if ((val & item) > 0) {
|
|
56
|
+
attr += sourceList[index].Text + ",";
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
if (attr.length > 0) {
|
|
60
|
+
attr = attr.substr(0, attr.length - 1);
|
|
61
|
+
}
|
|
62
|
+
return attr;
|
|
63
|
+
} /*节流函数,通过控制每次事件执行的时间间隔控制短时间多次执行方法
|
|
64
|
+
handler:要执行的方法
|
|
65
|
+
wait:每次点击事件执行的时间间隔(毫秒)
|
|
66
|
+
*/
|
|
67
|
+
export function throttle(handler, wait = 1000) {
|
|
68
|
+
var lastTime = 0;
|
|
69
|
+
var self = this,
|
|
70
|
+
arg = arguments;
|
|
71
|
+
|
|
72
|
+
return function() {
|
|
73
|
+
var nowTime = new Date().getTime();
|
|
74
|
+
if (nowTime - lastTime > wait) {
|
|
75
|
+
handler.apply(self, arg);
|
|
76
|
+
lastTime = nowTime;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/*防抖函数,通过推迟每次事件执行的时间来减少不必要的查询
|
|
82
|
+
handler:要执行的方法
|
|
83
|
+
delay:每次事件执行的推迟时间(毫秒)
|
|
84
|
+
*/
|
|
85
|
+
export function debounce(handler, delay) {
|
|
86
|
+
var timer;
|
|
87
|
+
return function() {
|
|
88
|
+
var self = this,
|
|
89
|
+
arg = arguments;
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
timer = setTimeout(function() {
|
|
92
|
+
handler.apply(self, arg);
|
|
93
|
+
}, delay);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-breadcrumb class="app-breadcrumb" separator="/">
|
|
3
|
-
<transition-group name="breadcrumb">
|
|
4
|
-
<el-breadcrumb-item v-for="(item) in levelList" :key="item.path">
|
|
5
|
-
<span
|
|
6
|
-
v-if="!item.redirect"
|
|
7
|
-
class="no-redirect"
|
|
8
|
-
>{{ item.meta.title }}</span>
|
|
9
|
-
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
|
10
|
-
</el-breadcrumb-item>
|
|
11
|
-
</transition-group>
|
|
12
|
-
</el-breadcrumb>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script>
|
|
16
|
-
import pathToRegexp from "path-to-regexp";
|
|
17
|
-
|
|
18
|
-
export default {
|
|
19
|
-
data() {
|
|
20
|
-
return {
|
|
21
|
-
levelList: null,
|
|
22
|
-
};
|
|
23
|
-
},
|
|
24
|
-
watch: {
|
|
25
|
-
$route() {
|
|
26
|
-
this.getBreadcrumb();
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
created() {
|
|
30
|
-
this.getBreadcrumb();
|
|
31
|
-
},
|
|
32
|
-
methods: {
|
|
33
|
-
getBreadcrumb() {
|
|
34
|
-
// only show routes with meta.title
|
|
35
|
-
let matched = this.$route.matched.filter(
|
|
36
|
-
(item) => item.meta && item.meta.title
|
|
37
|
-
);
|
|
38
|
-
const first = matched[0];
|
|
39
|
-
this.levelList = matched.filter(
|
|
40
|
-
(item) => item.meta && item.meta.title && item.meta.breadcrumb !== false
|
|
41
|
-
);
|
|
42
|
-
},
|
|
43
|
-
isDashboard(route) {
|
|
44
|
-
const name = route && route.name;
|
|
45
|
-
if (!name) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
return (
|
|
49
|
-
name.trim().toLocaleLowerCase() === "Dashboard".toLocaleLowerCase()
|
|
50
|
-
);
|
|
51
|
-
},
|
|
52
|
-
pathCompile(path) {
|
|
53
|
-
const { params } = this.$route;
|
|
54
|
-
var toPath = pathToRegexp.compile(path);
|
|
55
|
-
return toPath(params);
|
|
56
|
-
},
|
|
57
|
-
handleLink(item) {
|
|
58
|
-
const { redirect, path } = item;
|
|
59
|
-
if (redirect) {
|
|
60
|
-
this.$router.push(redirect);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.$router.push(this.pathCompile(path));
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
</script>
|
|
68
|
-
|
|
69
|
-
<style lang="scss" scoped>
|
|
70
|
-
.app-breadcrumb.el-breadcrumb {
|
|
71
|
-
display: inline-block;
|
|
72
|
-
font-size: 14px;
|
|
73
|
-
line-height: 50px;
|
|
74
|
-
margin-left: 8px;
|
|
75
|
-
|
|
76
|
-
.no-redirect {
|
|
77
|
-
color: #97a8be;
|
|
78
|
-
cursor: text;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<el-breadcrumb class="app-breadcrumb" separator="/">
|
|
3
|
+
<transition-group name="breadcrumb">
|
|
4
|
+
<el-breadcrumb-item v-for="(item) in levelList" :key="item.path">
|
|
5
|
+
<span
|
|
6
|
+
v-if="!item.redirect"
|
|
7
|
+
class="no-redirect"
|
|
8
|
+
>{{ item.meta.title }}</span>
|
|
9
|
+
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
|
|
10
|
+
</el-breadcrumb-item>
|
|
11
|
+
</transition-group>
|
|
12
|
+
</el-breadcrumb>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script>
|
|
16
|
+
import pathToRegexp from "path-to-regexp";
|
|
17
|
+
|
|
18
|
+
export default {
|
|
19
|
+
data() {
|
|
20
|
+
return {
|
|
21
|
+
levelList: null,
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
watch: {
|
|
25
|
+
$route() {
|
|
26
|
+
this.getBreadcrumb();
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
created() {
|
|
30
|
+
this.getBreadcrumb();
|
|
31
|
+
},
|
|
32
|
+
methods: {
|
|
33
|
+
getBreadcrumb() {
|
|
34
|
+
// only show routes with meta.title
|
|
35
|
+
let matched = this.$route.matched.filter(
|
|
36
|
+
(item) => item.meta && item.meta.title
|
|
37
|
+
);
|
|
38
|
+
const first = matched[0];
|
|
39
|
+
this.levelList = matched.filter(
|
|
40
|
+
(item) => item.meta && item.meta.title && item.meta.breadcrumb !== false
|
|
41
|
+
);
|
|
42
|
+
},
|
|
43
|
+
isDashboard(route) {
|
|
44
|
+
const name = route && route.name;
|
|
45
|
+
if (!name) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return (
|
|
49
|
+
name.trim().toLocaleLowerCase() === "Dashboard".toLocaleLowerCase()
|
|
50
|
+
);
|
|
51
|
+
},
|
|
52
|
+
pathCompile(path) {
|
|
53
|
+
const { params } = this.$route;
|
|
54
|
+
var toPath = pathToRegexp.compile(path);
|
|
55
|
+
return toPath(params);
|
|
56
|
+
},
|
|
57
|
+
handleLink(item) {
|
|
58
|
+
const { redirect, path } = item;
|
|
59
|
+
if (redirect) {
|
|
60
|
+
this.$router.push(redirect);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.$router.push(this.pathCompile(path));
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
</script>
|
|
68
|
+
|
|
69
|
+
<style lang="scss" scoped>
|
|
70
|
+
.app-breadcrumb.el-breadcrumb {
|
|
71
|
+
display: inline-block;
|
|
72
|
+
font-size: 14px;
|
|
73
|
+
line-height: 50px;
|
|
74
|
+
margin-left: 8px;
|
|
75
|
+
|
|
76
|
+
.no-redirect {
|
|
77
|
+
color: #97a8be;
|
|
78
|
+
cursor: text;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export default () => {
|
|
2
|
-
return {
|
|
3
|
-
copyClass: false
|
|
4
|
-
}
|
|
1
|
+
export default () => {
|
|
2
|
+
return {
|
|
3
|
+
copyClass: false
|
|
4
|
+
}
|
|
5
5
|
};
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
.Col_TableCell-wrapper {
|
|
2
|
-
.group {
|
|
3
|
-
&.abs {
|
|
4
|
-
position: relative;
|
|
5
|
-
border: solid 1px #ddd;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
padding: 2px 0px;
|
|
10
|
-
min-height: 24px;
|
|
11
|
-
border-radius: 2px;
|
|
12
|
-
|
|
13
|
-
&+.group {
|
|
14
|
-
margin-top: -1px;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
>div {
|
|
18
|
-
display: flex;
|
|
19
|
-
align-items: center;
|
|
20
|
-
|
|
21
|
-
>.item-main {
|
|
22
|
-
&.abs {
|
|
23
|
-
position: relative;
|
|
24
|
-
|
|
25
|
-
// >span:last-child {
|
|
26
|
-
padding-right: 40px;
|
|
27
|
-
// }
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
display: flex;
|
|
31
|
-
align-items: center;
|
|
32
|
-
line-height: 20px;
|
|
33
|
-
width: 100%;
|
|
34
|
-
|
|
35
|
-
>span {
|
|
36
|
-
display: inline-block;
|
|
37
|
-
|
|
38
|
-
&:first-child {
|
|
39
|
-
|
|
40
|
-
&.label {
|
|
41
|
-
color: #bbb;
|
|
42
|
-
max-width: 110px;
|
|
43
|
-
min-width: 70px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
&.noLabel {
|
|
47
|
-
color: #333;
|
|
48
|
-
min-width: none;
|
|
49
|
-
max-width: none;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&:last-child {
|
|
54
|
-
color: #333;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.copy-btn {
|
|
62
|
-
display: inline-block;
|
|
63
|
-
text-align: center;
|
|
64
|
-
border: solid 1px #bbb;
|
|
65
|
-
border-radius: 2px;
|
|
66
|
-
min-width: 40px;
|
|
67
|
-
cursor: copy;
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.copy-btn-abs {
|
|
72
|
-
position: absolute;
|
|
73
|
-
top: 50%;
|
|
74
|
-
margin-top: -10px;
|
|
75
|
-
right: 2px;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
1
|
+
.Col_TableCell-wrapper {
|
|
2
|
+
.group {
|
|
3
|
+
&.abs {
|
|
4
|
+
position: relative;
|
|
5
|
+
border: solid 1px #ddd;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
padding: 2px 0px;
|
|
10
|
+
min-height: 24px;
|
|
11
|
+
border-radius: 2px;
|
|
12
|
+
|
|
13
|
+
&+.group {
|
|
14
|
+
margin-top: -1px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
>div {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
|
|
21
|
+
>.item-main {
|
|
22
|
+
&.abs {
|
|
23
|
+
position: relative;
|
|
24
|
+
|
|
25
|
+
// >span:last-child {
|
|
26
|
+
padding-right: 40px;
|
|
27
|
+
// }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
line-height: 20px;
|
|
33
|
+
width: 100%;
|
|
34
|
+
|
|
35
|
+
>span {
|
|
36
|
+
display: inline-block;
|
|
37
|
+
|
|
38
|
+
&:first-child {
|
|
39
|
+
|
|
40
|
+
&.label {
|
|
41
|
+
color: #bbb;
|
|
42
|
+
max-width: 110px;
|
|
43
|
+
min-width: 70px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&.noLabel {
|
|
47
|
+
color: #333;
|
|
48
|
+
min-width: none;
|
|
49
|
+
max-width: none;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:last-child {
|
|
54
|
+
color: #333;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.copy-btn {
|
|
62
|
+
display: inline-block;
|
|
63
|
+
text-align: center;
|
|
64
|
+
border: solid 1px #bbb;
|
|
65
|
+
border-radius: 2px;
|
|
66
|
+
min-width: 40px;
|
|
67
|
+
cursor: copy;
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.copy-btn-abs {
|
|
72
|
+
position: absolute;
|
|
73
|
+
top: 50%;
|
|
74
|
+
margin-top: -10px;
|
|
75
|
+
right: 2px;
|
|
76
|
+
}
|
|
77
|
+
}
|