diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 487e718a..3879a517 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -80,6 +80,7 @@ @import 'views/administration/AdministrationTabs'; @import 'views/administration/Appearance.scss'; +@import 'views/administration/License.scss'; @import 'views/system/Plugin'; diff --git a/src/assets/css/components/views/administration/License.scss b/src/assets/css/components/views/administration/License.scss new file mode 100644 index 00000000..44e5fade --- /dev/null +++ b/src/assets/css/components/views/administration/License.scss @@ -0,0 +1,61 @@ +.license{ + height: 100%; + .license-form { + padding-top:40px; + padding-left:100px; + background-color: white; + position: relative; + display: flex; + flex-direction: column; + height: 100%; + .license-file { + display: flex; + flex-direction: row; + height: 100%; + margin-top: 3px; + .license__btn { + height: 30px; + min-width: 74px; + color: white; + background-color: #38ACD2; + border: none; + border-radius: 4px; + outline: none; + font-size: 14px; + cursor: pointer; + transition: background-color linear .2s, color linear .1s; + } + .license__btn:hover:not(.footer__btn--disabled) { + background-color: lighten(#38ACD2, 10%); + } + .license__btn--light { + background-color: #F5F6F7; + border: 1px solid $--border-color-primary; + color: #333; + } + .license__btn.license__btn--light:hover:not(.license__btn--disabled) { + background-color: white; + border-color: lighten(#38ACD2, 40%); + color: #38ACD2; + } + .license__btn--disabled { + opacity: .6; + cursor: default; + } + } + + .el-form .el-form-item { + margin-bottom: 0; + padding:4px 0; + font-size: 14px!important; + .el-form-item__label { + color: #262626 !important; + font-weight: bold; + } + .el-form-item__content { + color: #262626 !important; + font-weight: 400; + } + } + } +} diff --git a/src/assets/css/font/iconfont.css b/src/assets/css/font/iconfont.css index 26368608..ee6ebcf7 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=1703561754372') format('woff2'), - url('iconfont.woff?t=1703561754372') format('woff'), - url('iconfont.ttf?t=1703561754372') format('truetype'); + src: url('iconfont.woff2?t=1706606024800') format('woff2'), + url('iconfont.woff?t=1706606024800') format('woff'), + url('iconfont.ttf?t=1706606024800') format('truetype'); } .cn-icon { @@ -13,6 +13,26 @@ -moz-osx-font-smoothing: grayscale; } +.cn-icon-license:before { + content: "\e666"; +} + +.cn-icon-base-station:before { + content: "\e6cf"; +} + +.cn-icon-home:before { + content: "\e6d0"; +} + +.cn-icon-company:before { + content: "\e6d1"; +} + +.cn-icon-pedestrian:before { + content: "\e6d2"; +} + .cn-icon-system:before { content: "\e6cc"; } @@ -373,7 +393,7 @@ content: "\e7b4"; } -.cn-icon-a-GeneralSettings:before { +.cn-icon-general-setting:before { content: "\e7b5"; } diff --git a/src/assets/css/font/iconfont.js b/src/assets/css/font/iconfont.js index 199fc777..168a3b5d 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 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)) +window._iconfont_svg_string_2614877='',function(l){var a=(a=document.getElementsByTagName("script"))[a.length-1],c=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var h,o,i,m,v,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(){var a,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(){"complete"==m.readyState&&(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); \ No newline at end of file diff --git a/src/assets/css/font/iconfont.ttf b/src/assets/css/font/iconfont.ttf index 28f9f036..382b4382 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.woff b/src/assets/css/font/iconfont.woff index b45e84f0..c969aa7c 100644 Binary files a/src/assets/css/font/iconfont.woff and b/src/assets/css/font/iconfont.woff differ diff --git a/src/assets/css/font/iconfont.woff2 b/src/assets/css/font/iconfont.woff2 index 8556437a..10b6a9ae 100644 Binary files a/src/assets/css/font/iconfont.woff2 and b/src/assets/css/font/iconfont.woff2 differ diff --git a/src/permission.js b/src/permission.js index ec18ccb7..f260b3d2 100644 --- a/src/permission.js +++ b/src/permission.js @@ -179,6 +179,8 @@ export function handleComponent (code) { return () => import('@/views/administration/OperationLog') case 'appearance': return () => import('@/views/administration/Appearance') + case 'license': + return () => import('@/views/administration/License') case 'I18N': return () => import('@/views/administration/I18n') case 'system': diff --git a/src/utils/api.js b/src/utils/api.js index bd5880da..d54c5b82 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -15,6 +15,8 @@ export const api = { logout: '/logout', pin: 'sys/user/pin', appearance: '/sys/appearance', + license: '/sys/license', + downloadLicenseC2v: '/sys/license/download', permissions: '/sys/user/permissions', operationLog: '/sys/log', login: '/sys/login', diff --git a/src/views/administration/License.vue b/src/views/administration/License.vue new file mode 100644 index 00000000..5f3f421e --- /dev/null +++ b/src/views/administration/License.vue @@ -0,0 +1,148 @@ + + + + + + {{licenseObject.type}} + + + {{licenseObject.organization}} + + + {{licenseObject.supportId}} + + + {{licenseObject.dateIssued}} + + + {{licenseObject.dateExpires}} + + + + + {{$t('license.download')}} + + + + {{$t('license.upload')}} + + + + + + + + + +