diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 0fee8f34..487e718a 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -81,6 +81,8 @@ @import 'views/administration/AdministrationTabs'; @import 'views/administration/Appearance.scss'; +@import 'views/system/Plugin'; + @import 'views/setting/knowledgeBase'; @import 'views/charts2/entityDetailLine'; @import 'views/charts2/EntityDetailSubscriberKpi.scss'; diff --git a/src/assets/css/components/views/system/Plugin.scss b/src/assets/css/components/views/system/Plugin.scss new file mode 100644 index 00000000..a8fe5573 --- /dev/null +++ b/src/assets/css/components/views/system/Plugin.scss @@ -0,0 +1,46 @@ +.plugin { + font-size: 12px; + color: #353636; + line-height: 14px; + font-weight: 400; + .type-tag { + display: inline-block; + padding: 0 10px; + background-color: #EBF7FA; + color: #046ECA; + box-shadow: 0 2px 4px 0 rgba(51,51,51,0.02); + border-radius: 12px; + } + .plugin-name { + display: flex; + flex-direction: row; + justify-content: left; + align-items: center; + .icon-background { + display:flex; + justify-content: center; + align-items: center; + width:32px; + height:32px; + background: #ECECEC; + border-radius: 4px; + margin-right:6px; + .plugin-name-icon { + width:25px; + height:25px; + color:red; + display:flex; + justify-content: center; + align-items: center; + } + } + } + .two-line { + overflow: hidden; //超出的文本隐藏 + text-overflow: ellipsis; //溢出用省略号显示 + display: -webkit-box; + line-clamp:2 ; + -webkit-line-clamp: 2; // 超出多少行 + -webkit-box-orient: vertical; + } +} diff --git a/src/assets/css/font/iconfont.css b/src/assets/css/font/iconfont.css index 5e1e80c0..26368608 100644 --- a/src/assets/css/font/iconfont.css +++ b/src/assets/css/font/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "cn-icon"; /* Project id 2614877 */ - src: url('iconfont.woff2?t=1701934971951') format('woff2'), - url('iconfont.woff?t=1701934971951') format('woff'), - url('iconfont.ttf?t=1701934971951') format('truetype'); + src: url('iconfont.woff2?t=1703561754372') format('woff2'), + url('iconfont.woff?t=1703561754372') format('woff'), + url('iconfont.ttf?t=1703561754372') format('truetype'); } .cn-icon { @@ -13,6 +13,14 @@ -moz-osx-font-smoothing: grayscale; } +.cn-icon-system:before { + content: "\e6cc"; +} + +.cn-icon-plugin:before { + content: "\e6cd"; +} + .cn-icon-IMSI:before { content: "\e812"; } diff --git a/src/assets/css/font/iconfont.js b/src/assets/css/font/iconfont.js index ffc9ca51..199fc777 100644 --- a/src/assets/css/font/iconfont.js +++ b/src/assets/css/font/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_2614877 = '', (function (l) { var a = (a = document.getElementsByTagName('script'))[a.length - 1]; const c = a.getAttribute('data-injectcss'); var a = a.getAttribute('data-disable-injectsvg'); if (!a) { let h; let o; var i; var m; var v; const z = function (a, c) { c.parentNode.insertBefore(a, c) }; if (c && !l.__iconfont__svg__cssinject__) { l.__iconfont__svg__cssinject__ = !0; try { document.write('') } catch (a) { console && console.log(a) } }h = function () { let a; let c = document.createElement('div'); c.innerHTML = l._iconfont_svg_string_2614877, (c = c.getElementsByTagName('svg')[0]) && (c.setAttribute('aria-hidden', 'true'), c.style.position = 'absolute', c.style.width = 0, c.style.height = 0, c.style.overflow = 'hidden', c = c, (a = document.body).firstChild ? z(c, a.firstChild) : a.appendChild(c)) }, document.addEventListener ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState) ? setTimeout(h, 0) : (o = function () { document.removeEventListener('DOMContentLoaded', o, !1), h() }, document.addEventListener('DOMContentLoaded', o, !1)) : document.attachEvent && (i = h, m = l.document, v = !1, s(), m.onreadystatechange = function () { m.readyState == 'complete' && (m.onreadystatechange = null, t()) }) } function t () { v || (v = !0, i()) } function s () { try { m.documentElement.doScroll('left') } catch (a) { return void setTimeout(s, 50) }t() } }(window)) +window._iconfont_svg_string_2614877 = '', (function (l) { var a = (a = document.getElementsByTagName('script'))[a.length - 1]; const c = a.getAttribute('data-injectcss'); var a = a.getAttribute('data-disable-injectsvg'); if (!a) { let h; let o; var m; var i; var v; const z = function (a, c) { c.parentNode.insertBefore(a, c) }; if (c && !l.__iconfont__svg__cssinject__) { l.__iconfont__svg__cssinject__ = !0; try { document.write('') } catch (a) { console && console.log(a) } }h = function () { let a; let c = document.createElement('div'); c.innerHTML = l._iconfont_svg_string_2614877, (c = c.getElementsByTagName('svg')[0]) && (c.setAttribute('aria-hidden', 'true'), c.style.position = 'absolute', c.style.width = 0, c.style.height = 0, c.style.overflow = 'hidden', c = c, (a = document.body).firstChild ? z(c, a.firstChild) : a.appendChild(c)) }, document.addEventListener ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState) ? setTimeout(h, 0) : (o = function () { document.removeEventListener('DOMContentLoaded', o, !1), h() }, document.addEventListener('DOMContentLoaded', o, !1)) : document.attachEvent && (m = h, i = l.document, v = !1, s(), i.onreadystatechange = function () { i.readyState == 'complete' && (i.onreadystatechange = null, t()) }) } function t () { v || (v = !0, m()) } function s () { try { i.documentElement.doScroll('left') } catch (a) { return void setTimeout(s, 50) }t() } }(window)) diff --git a/src/assets/css/font/iconfont.ttf b/src/assets/css/font/iconfont.ttf index c84bcd81..28f9f036 100644 Binary files a/src/assets/css/font/iconfont.ttf and b/src/assets/css/font/iconfont.ttf differ diff --git a/src/assets/css/font/iconfont.woff2 b/src/assets/css/font/iconfont.woff2 index 9e9f70a9..8556437a 100644 Binary files a/src/assets/css/font/iconfont.woff2 and b/src/assets/css/font/iconfont.woff2 differ diff --git a/src/components/layout/Header.vue b/src/components/layout/Header.vue index 75c96be0..6d5276c7 100644 --- a/src/components/layout/Header.vue +++ b/src/components/layout/Header.vue @@ -132,7 +132,7 @@ :show-close="false" >
-
+
{{ $t(menu.i18n || menu.name) }} diff --git a/src/components/table/setting/knowledgeBaseTableForCard.vue b/src/components/table/setting/knowledgeBaseTableForCard.vue index 63054a68..e9cd49bf 100644 --- a/src/components/table/setting/knowledgeBaseTableForCard.vue +++ b/src/components/table/setting/knowledgeBaseTableForCard.vue @@ -464,7 +464,7 @@ export default { this.myChart.setOption(this.chartOption) }) }, - init (val, show, active, n) { + init () { this.psiphon3Loading = true const endTime = window.$dayJs.tz().valueOf() const params = { diff --git a/src/components/table/system/PluginTable.vue b/src/components/table/system/PluginTable.vue new file mode 100644 index 00000000..8e852796 --- /dev/null +++ b/src/components/table/system/PluginTable.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/mixins/data-list.js b/src/mixins/data-list.js index e5f75b98..6954b836 100644 --- a/src/mixins/data-list.js +++ b/src/mixins/data-list.js @@ -353,7 +353,9 @@ export default { }, dragend () { this.$nextTick(() => { - if (this.$refs.dataTable && this.$refs.dataTable.$refs.dataTable) { + if (this.$refs.dataTable && this.$refs.dataTable.$refs && + this.$refs.dataTable.$refs.dataTable + ) { this.$refs.dataTable.$refs.dataTable.doLayout() } }) diff --git a/src/utils/constants.js b/src/utils/constants.js index fd9682e3..703db5e8 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -57,6 +57,7 @@ export const fromRoute = { dnsServiceInsights: 'dnsServiceInsights', linkMonitor: 'linkMonitor', user: 'user', + plugin: 'plugin', galaxyProxy: 'galaxyProxy', chart: 'chart', cryptocurrency: 'cryptocurrency', diff --git a/src/views/charts2/charts/dnsInsight/DnsTrafficLine.vue b/src/views/charts2/charts/dnsInsight/DnsTrafficLine.vue index 2eb1abb3..7131e297 100644 --- a/src/views/charts2/charts/dnsInsight/DnsTrafficLine.vue +++ b/src/views/charts2/charts/dnsInsight/DnsTrafficLine.vue @@ -208,7 +208,7 @@ export default { } this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initData(this.chartDateObject, val, active, show) } else { this.init(val, show, active) diff --git a/src/views/charts2/charts/entityDetail/EntityDetailLine.vue b/src/views/charts2/charts/entityDetail/EntityDetailLine.vue index 49dd1ae5..36b8b3a2 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailLine.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailLine.vue @@ -255,7 +255,7 @@ export default { const newVal = val ? _.clone(val) : this.metric this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initData(this.chartDateObject, newVal, active, show, n) } else { this.init(val, show, active, n) diff --git a/src/views/charts2/charts/entityDetail/lines/App.vue b/src/views/charts2/charts/entityDetail/lines/App.vue index c7cd159d..d52ade8d 100644 --- a/src/views/charts2/charts/entityDetail/lines/App.vue +++ b/src/views/charts2/charts/entityDetail/lines/App.vue @@ -231,7 +231,7 @@ export default { const newVal = val ? _.clone(val) : this.metric this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initData(this.chartDateObject, newVal, active) } else { this.init(val, active) diff --git a/src/views/charts2/charts/entityDetail/lines/ServiceName.vue b/src/views/charts2/charts/entityDetail/lines/ServiceName.vue index 74337301..78d47371 100644 --- a/src/views/charts2/charts/entityDetail/lines/ServiceName.vue +++ b/src/views/charts2/charts/entityDetail/lines/ServiceName.vue @@ -261,7 +261,7 @@ export default { const newVal = val ? _.clone(val) : this.metric this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initData(this.chartDateObject, newVal, active, show, n) } else { this.init(val, show, active, n) diff --git a/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue b/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue index 8a1a235d..152c43cf 100644 --- a/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue +++ b/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue @@ -229,7 +229,7 @@ export default { const newVal = val ? _.clone(val) : this.metric this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initData(this.chartDateObject, newVal, active, show, n) } else { this.init(val, show, active, n) diff --git a/src/views/charts2/charts/npm/NpmTrafficLine.vue b/src/views/charts2/charts/npm/NpmTrafficLine.vue index 0f9f353f..b402003f 100644 --- a/src/views/charts2/charts/npm/NpmTrafficLine.vue +++ b/src/views/charts2/charts/npm/NpmTrafficLine.vue @@ -200,7 +200,7 @@ export default { } this.toggleLoading(true) try { - if(this.chartDateObject.length > 0) { + if (this.chartDateObject.length > 0) { this.initLineData(this.chartDateObject, val) } else { this.init(val) diff --git a/src/views/system/Index.vue b/src/views/system/Index.vue new file mode 100644 index 00000000..5d87825a --- /dev/null +++ b/src/views/system/Index.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/views/system/Plugin.vue b/src/views/system/Plugin.vue new file mode 100644 index 00000000..964d2774 --- /dev/null +++ b/src/views/system/Plugin.vue @@ -0,0 +1,108 @@ + +