feat:ui 升级 (#28)

This commit is contained in:
dagongren
2024-03-29 14:04:04 +08:00
committed by GitHub
parent 597dc2e337
commit 5aa6d29d2b
22 changed files with 1648 additions and 192 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 3857903 */
src: url('iconfont.woff2?t=1706259985234') format('woff2'),
url('iconfont.woff?t=1706259985234') format('woff'),
url('iconfont.ttf?t=1706259985234') format('truetype');
src: url('iconfont.woff2?t=1711618200417') format('woff2'),
url('iconfont.woff?t=1711618200417') format('woff'),
url('iconfont.ttf?t=1711618200417') format('truetype');
}
.iconfont {
@@ -13,11 +13,179 @@
-moz-osx-font-smoothing: grayscale;
}
.a-itsm-refresh1:before {
.Google_Cloud_Platform:before {
content: "\e90b";
}
.Ctyun:before {
content: "\e90c";
}
.Alibaba_Cloud:before {
content: "\e90d";
}
.Azure:before {
content: "\e90e";
}
.ZStack:before {
content: "\e904";
}
.Tencent_Cloud:before {
content: "\e905";
}
.Nutanix:before {
content: "\e906";
}
.OpenStack:before {
content: "\e907";
}
.Huawei_Cloud:before {
content: "\e908";
}
.Bytecloud:before {
content: "\e909";
}
.UCloud:before {
content: "\e90a";
}
.AWS:before {
content: "\e901";
}
.ECloud:before {
content: "\e902";
}
.JDCloud:before {
content: "\e903";
}
.veops-more:before {
content: "\e900";
}
.duose-date:before {
content: "\e8ff";
}
.duose-shishu:before {
content: "\e8fd";
}
.duose-wenben:before {
content: "\e8fe";
}
.duose-json:before {
content: "\e8f7";
}
.duose-fudianshu:before {
content: "\e8f8";
}
.duose-time:before {
content: "\e8f9";
}
.duose-password:before {
content: "\e8fa";
}
.duose-link:before {
content: "\e8fb";
}
.duose-datetime:before {
content: "\e8fc";
}
.veops-setting2:before {
content: "\e8f6";
}
.veops-search:before {
content: "\e8f5";
}
.veops-delete:before {
content: "\e8f4";
}
.veops-refresh:before {
content: "\e8f3";
}
.veops-filter:before {
content: "\e8f2";
}
.veops-reduce:before {
content: "\e8ed";
}
.veops-increase:before {
content: "\e8ee";
}
.veops-configuration_table:before {
content: "\e8ef";
}
.veops-copy:before {
content: "\e8f0";
}
.veops-save:before {
content: "\e8f1";
}
.veops-setting:before {
content: "\e8ec";
}
.veops-default_avatar:before {
content: "\e8ea";
}
.veops-notice:before {
content: "\e8eb";
}
.itsm-quickStart:before {
content: "\e8e9";
}
.itsm-associatedWith:before {
content: "\e8e8";
}
.itsm-folder:before {
content: "\e8e7";
}
.report:before {
content: "\e8e5";
}
.folder:before {
content: "\e8e6";
}
.itsm-refresh:before {
content: "\e8e4";
}
.a-itsm-add_table1:before {
.itsm-add_table:before {
content: "\e8e2";
}

File diff suppressed because one or more lines are too long

View File

@@ -5,17 +5,311 @@
"css_prefix_text": "",
"description": "",
"glyphs": [
{
"icon_id": "39729980",
"name": "Google Cloud Platform",
"font_class": "Google_Cloud_Platform",
"unicode": "e90b",
"unicode_decimal": 59659
},
{
"icon_id": "39729978",
"name": "Ctyun",
"font_class": "Ctyun",
"unicode": "e90c",
"unicode_decimal": 59660
},
{
"icon_id": "39729977",
"name": "Alibaba Cloud",
"font_class": "Alibaba_Cloud",
"unicode": "e90d",
"unicode_decimal": 59661
},
{
"icon_id": "39729976",
"name": "Azure",
"font_class": "Azure",
"unicode": "e90e",
"unicode_decimal": 59662
},
{
"icon_id": "39729985",
"name": "ZStack",
"font_class": "ZStack",
"unicode": "e904",
"unicode_decimal": 59652
},
{
"icon_id": "39729986",
"name": "Tencent Cloud",
"font_class": "Tencent_Cloud",
"unicode": "e905",
"unicode_decimal": 59653
},
{
"icon_id": "39729981",
"name": "Nutanix",
"font_class": "Nutanix",
"unicode": "e906",
"unicode_decimal": 59654
},
{
"icon_id": "39729983",
"name": "OpenStack",
"font_class": "OpenStack",
"unicode": "e907",
"unicode_decimal": 59655
},
{
"icon_id": "39729982",
"name": "Huawei Cloud",
"font_class": "Huawei_Cloud",
"unicode": "e908",
"unicode_decimal": 59656
},
{
"icon_id": "39729979",
"name": "Bytecloud",
"font_class": "Bytecloud",
"unicode": "e909",
"unicode_decimal": 59657
},
{
"icon_id": "39729984",
"name": "UCloud",
"font_class": "UCloud",
"unicode": "e90a",
"unicode_decimal": 59658
},
{
"icon_id": "39729988",
"name": "AWS",
"font_class": "AWS",
"unicode": "e901",
"unicode_decimal": 59649
},
{
"icon_id": "39729989",
"name": "ECloud",
"font_class": "ECloud",
"unicode": "e902",
"unicode_decimal": 59650
},
{
"icon_id": "39729987",
"name": "JDCloud",
"font_class": "JDCloud",
"unicode": "e903",
"unicode_decimal": 59651
},
{
"icon_id": "39713390",
"name": "veops-more",
"font_class": "veops-more",
"unicode": "e900",
"unicode_decimal": 59648
},
{
"icon_id": "39712276",
"name": "duose-date",
"font_class": "duose-date",
"unicode": "e8ff",
"unicode_decimal": 59647
},
{
"icon_id": "39712289",
"name": "duose-shishu",
"font_class": "duose-shishu",
"unicode": "e8fd",
"unicode_decimal": 59645
},
{
"icon_id": "39712286",
"name": "duose-wenben",
"font_class": "duose-wenben",
"unicode": "e8fe",
"unicode_decimal": 59646
},
{
"icon_id": "39712314",
"name": "duose-json",
"font_class": "duose-json",
"unicode": "e8f7",
"unicode_decimal": 59639
},
{
"icon_id": "39712315",
"name": "duose-fudianshu",
"font_class": "duose-fudianshu",
"unicode": "e8f8",
"unicode_decimal": 59640
},
{
"icon_id": "39712312",
"name": "duose-time",
"font_class": "duose-time",
"unicode": "e8f9",
"unicode_decimal": 59641
},
{
"icon_id": "39712313",
"name": "duose-password",
"font_class": "duose-password",
"unicode": "e8fa",
"unicode_decimal": 59642
},
{
"icon_id": "39712311",
"name": "duose-link",
"font_class": "duose-link",
"unicode": "e8fb",
"unicode_decimal": 59643
},
{
"icon_id": "39712310",
"name": "duose-datetime",
"font_class": "duose-datetime",
"unicode": "e8fc",
"unicode_decimal": 59644
},
{
"icon_id": "39705895",
"name": "veops-setting2",
"font_class": "veops-setting2",
"unicode": "e8f6",
"unicode_decimal": 59638
},
{
"icon_id": "39692404",
"name": "veops-search",
"font_class": "veops-search",
"unicode": "e8f5",
"unicode_decimal": 59637
},
{
"icon_id": "39680289",
"name": "veops-delete",
"font_class": "veops-delete",
"unicode": "e8f4",
"unicode_decimal": 59636
},
{
"icon_id": "39677378",
"name": "veops-refresh",
"font_class": "veops-refresh",
"unicode": "e8f3",
"unicode_decimal": 59635
},
{
"icon_id": "39677152",
"name": "veops-filter",
"font_class": "veops-filter",
"unicode": "e8f2",
"unicode_decimal": 59634
},
{
"icon_id": "39677216",
"name": "veops-reduce",
"font_class": "veops-reduce",
"unicode": "e8ed",
"unicode_decimal": 59629
},
{
"icon_id": "39677215",
"name": "veops-increase",
"font_class": "veops-increase",
"unicode": "e8ee",
"unicode_decimal": 59630
},
{
"icon_id": "39677211",
"name": "veops-configuration_table",
"font_class": "veops-configuration_table",
"unicode": "e8ef",
"unicode_decimal": 59631
},
{
"icon_id": "39677210",
"name": "veops-copy",
"font_class": "veops-copy",
"unicode": "e8f0",
"unicode_decimal": 59632
},
{
"icon_id": "39677207",
"name": "veops-save",
"font_class": "veops-save",
"unicode": "e8f1",
"unicode_decimal": 59633
},
{
"icon_id": "39664281",
"name": "veops-setting",
"font_class": "veops-setting",
"unicode": "e8ec",
"unicode_decimal": 59628
},
{
"icon_id": "39664295",
"name": "veops-default_avatar",
"font_class": "veops-default_avatar",
"unicode": "e8ea",
"unicode_decimal": 59626
},
{
"icon_id": "39664288",
"name": "veops-notice",
"font_class": "veops-notice",
"unicode": "e8eb",
"unicode_decimal": 59627
},
{
"icon_id": "39603135",
"name": "quickly_initiate",
"font_class": "itsm-quickStart",
"unicode": "e8e9",
"unicode_decimal": 59625
},
{
"icon_id": "39588554",
"name": "itsm-associated",
"font_class": "itsm-associatedWith",
"unicode": "e8e8",
"unicode_decimal": 59624
},
{
"icon_id": "39517726",
"name": "itsm-folder",
"font_class": "itsm-folder",
"unicode": "e8e7",
"unicode_decimal": 59623
},
{
"icon_id": "39517542",
"name": "report",
"font_class": "report",
"unicode": "e8e5",
"unicode_decimal": 59621
},
{
"icon_id": "39517539",
"name": "folder",
"font_class": "folder",
"unicode": "e8e6",
"unicode_decimal": 59622
},
{
"icon_id": "39123642",
"name": "itsm-refresh (1)",
"font_class": "a-itsm-refresh1",
"font_class": "itsm-refresh",
"unicode": "e8e4",
"unicode_decimal": 59620
},
{
"icon_id": "39123405",
"name": "itsm-add_table (1)",
"font_class": "a-itsm-add_table1",
"font_class": "itsm-add_table",
"unicode": "e8e2",
"unicode_decimal": 59618
},
@@ -1925,7 +2219,7 @@
},
{
"icon_id": "35341667",
"name": "caise-chajian ",
"name": "caise-chajian",
"font_class": "caise-chajian",
"unicode": "e7d2",
"unicode_decimal": 59346

View File

@@ -30,9 +30,9 @@ export function getAuthDataEnable() {
})
}
export function testLDAP(test_type, data) {
export function testLDAP(data) {
return axios({
url: `/common-setting/v1/auth_config/LDAP/test?test_type=${test_type}`,
url: `/common-setting/v1/auth_config/LDAP/test`,
method: 'post',
data,
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -178,7 +178,7 @@
<div v-else :style="{ width: '175px' }"></div>
<template v-if="!disabled">
<a-tooltip :title="$t('copy')">
<a class="operation" @click="handleCopyRule(item)"><ops-icon type="icon-xianxing-copy"/></a>
<a class="operation" @click="handleCopyRule(item)"><ops-icon type="veops-copy"/></a>
</a-tooltip>
<a-tooltip :title="$t('delete')">
<a class="operation" @click="handleDeleteRule(item)"><ops-icon type="icon-xianxing-delete"/></a>

View File

@@ -17,25 +17,29 @@ export default {
getPropertyIcon(attr) {
switch (attr.value_type) {
case '0':
return 'icon-xianxing-shishu'
return 'duose-shishu'
case '1':
return 'icon-xianxing-fudianshu'
return 'duose-fudianshu'
case '2':
if (attr.is_password) {
return 'icon-xianxing-password'
return 'duose-password'
}
if (attr.is_link) {
return 'icon-xianxing-link'
return 'duose-link'
}
return 'icon-xianxing-wenben'
return 'duose-wenben'
case '3':
return 'icon-xianxing-datetime'
return 'duose-datetime'
case '4':
return 'icon-xianxing-date'
return 'duose-date'
case '5':
return 'icon-xianxing-time'
return 'duose-time'
case '6':
return 'icon-xianxing-json'
return 'duose-json'
case '7':
return 'duose-password'
case '8':
return 'duose-link'
}
},
},

View File

@@ -1,7 +1,7 @@
<template>
<a-layout-sider
:class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null]"
width="200px"
width="220px"
:collapsible="collapsible"
v-model="collapsed"
:trigger="null"

View File

@@ -4,7 +4,7 @@
<template #empty>
<slot name="empty">
<div :style="{ paddingTop: '10px' }">
<img :style="{ width: '100px', height: '90px' }" :src="require('@/assets/data_empty.png')" />
<img :style="{ width: '140px', height: '90px' }" :src="require('@/assets/data_empty.png')" />
<div>{{ $t('noData') }}</div>
</div>
</slot>

View File

@@ -64,7 +64,7 @@ export default {
},
triggerColor: {
type: String,
default: '#f0f2f5',
default: '#f7f8fa',
},
},
data() {

View File

@@ -35,7 +35,7 @@ export default {
},
triggerColor: {
type: String,
default: '#F0F5FF',
default: '#f7f8fa',
},
},
data() {
@@ -52,22 +52,22 @@ export default {
</script>
<style lang="less" scoped>
@import '~@/style/static.less';
.two-column-layout {
margin-bottom: -24px;
width: 100%;
.two-column-layout-sidebar {
height: 100%;
padding: 15px 7px;
border-radius: 15px;
overflow-y: auto;
background-color: #fff;
}
.two-column-layout-main {
height: 100%;
padding: 12px;
background-color: #fff;
overflow-y: auto;
border-radius: 15px;
border-radius: @border-radius-box;
}
}
</style>

View File

@@ -110,33 +110,21 @@ export default {
line-height: @layout-header-icon-height;
border-radius: 4px !important;
display: inline-flex;
align-items: flex-end;
align-items: center;
}
> span {
cursor: pointer;
padding: 4px 10px;
margin: 0 5px;
border-radius: 4px;
color: @layout-header-font-color;
height: @layout-header-height;
display: inline-flex;
align-items: center;
&:hover {
background: linear-gradient(0deg, rgba(0, 80, 201, 0.2) 0%, rgba(174, 207, 255, 0.06) 86.76%);
color: @layout-header-font-selected-color;
border-radius: 3px 3px 0px 0px;
}
}
> span:hover,
.top-menu-selected {
background: linear-gradient(0deg, rgba(0, 80, 201, 0.2) 0%, rgba(174, 207, 255, 0.06) 86.76%);
font-weight: bold;
color: @layout-header-font-selected-color;
border-radius: 3px 3px 0px 0px;
border-bottom: 3px solid @layout-header-font-selected-color;
&:hover {
background: linear-gradient(0deg, rgba(0, 80, 201, 0.2) 0%, rgba(174, 207, 255, 0.06) 86.76%);
color: @layout-header-font-selected-color;
border-radius: 3px 3px 0px 0px;
}
}
}

View File

@@ -94,7 +94,7 @@ export default {
return '0'
}
if (this.sidebarOpened) {
return '200px'
return '220px'
}
return '80px'
},
@@ -149,15 +149,6 @@ export default {
this.alive = true
})
},
paddingCalc() {
let left = ''
if (this.sidebarOpened) {
left = this.isDesktop() ? '200px' : '80px'
} else {
left = (this.isMobile() && '0') || (this.fixSidebar && '80px') || '0'
}
return left
},
menuSelect() {
if (!this.isDesktop()) {
this.collapsed = false

View File

@@ -50,7 +50,7 @@ body {
}
.ant-layout {
background-color: #f7f8fa;
background-color: @layout-content-background;
}
.layout.ant-layout {
@@ -161,7 +161,7 @@ body {
transition: width 0.2s;
&.ant-header-side-opened {
width: calc(100% - 200px);
width: calc(100% - 220px);
}
&.ant-header-side-closed {
@@ -411,7 +411,6 @@ body {
// 菜单样式
.sider {
box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
position: relative;
z-index: 10;
min-height: 100vh;
@@ -431,19 +430,9 @@ body {
&.ant-fixed-sidemenu {
position: fixed;
height: 100%;
background: @layout-background-color;
z-index: 99;
}
.ant-menu-dark {
background: @layout-background-color;
.ant-menu-inline.ant-menu-sub {
background: @layout-background-color-light;
box-shadow: none;
}
}
.logo {
position: relative;
height: @layout-header-height;
@@ -478,21 +467,11 @@ body {
&.light {
background-color: #fff;
box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05);
.logo {
background: @layout-header-background;
box-shadow: 1px 1px 0px 0px #e8e8e8;
box-shadow: 0 1px 3px 0px #9eabbe25;
}
// .ant-menu-light {
// .ant-menu-item {
// margin: 0;
// }
// .ant-menu-item-selected {
// background: #0000000a;
// }
// }
}
}
@@ -506,6 +485,9 @@ body {
// 从此处开始
.ops-side-bar.ant-menu {
transition: none;
.ant-menu-item {
text-overflow: initial !important;
}
}
.ops-side-bar.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
background: @layout-sidebar-selected-color;
@@ -525,7 +507,7 @@ body {
}
.ops-side-bar.ant-menu-light {
border-right-color: transparent;
border-right-color: #e8e8e8;
background: @layout-sidebar-color;
background-repeat: no-repeat !important;
background-size: cover;
@@ -538,6 +520,9 @@ body {
display: inline-flex;
align-items: center;
color: @layout-sidebar-font-color;
i {
color: @layout-sidebar-icon-color;
}
}
&:hover {
.scroll {
@@ -590,8 +575,11 @@ body {
.ant-menu-item-selected {
a,
a:hover {
color: @layout-sidebar-font-color;
color: @layout-sidebar-selected-font-color;
font-weight: 600;
i {
color: @layout-sidebar-selected-font-color;
}
}
}
.ant-menu-item::after,
@@ -601,6 +589,9 @@ body {
.ant-menu-submenu {
color: @layout-sidebar-font-color;
i {
color: @layout-sidebar-icon-color;
}
}
.ant-menu-submenu-title:hover {
color: @layout-sidebar-font-color;
@@ -613,8 +604,11 @@ body {
}
.ant-menu-submenu-selected {
> .ant-menu-submenu-title {
color: @layout-sidebar-font-color;
color: @layout-sidebar-selected-font-color;
font-weight: 800;
i {
color: @layout-sidebar-selected-font-color;
}
}
}
.ant-menu-submenu-content .ant-menu-submenu-active .ant-menu-submenu-title {
@@ -852,7 +846,7 @@ body {
.ant-layout-sider {
box-shadow: none;
.ant-layout-sider-children {
background: @primary-color_5;
background: @primary-color_7;
.ant-menu {
display: none;
}
@@ -883,7 +877,7 @@ body {
}
}
.custom-vue-treeselect__control(@bgColor:@primary-color_5,@border:none) {
.custom-vue-treeselect__control(@bgColor:@primary-color_7,@border:none) {
background-color: @bgColor;
border: @border;
}
@@ -956,13 +950,13 @@ body {
//非斑马纹
.ops-unstripe-table {
.vxe-table--border-line {
border: none !important;
// border: none !important;
}
.vxe-table--header-wrapper {
background-color: @primary-color_5 !important;
background-color: @primary-color_6 !important;
}
.vxe-header--row .vxe-header--column:hover {
background: #2f54eb1f !important;
background: @primary-color_3;
}
}
.ops-unstripe-table.vxe-table--render-default.border--full {
@@ -983,7 +977,7 @@ body {
border: none !important;
}
.vxe-table--header-wrapper {
background-color: @primary-color_5 !important;
background-color: @primary-color_6 !important;
}
// .vxe-table--header-wrapper.body--wrapper {
// border-radius: 8px !important;
@@ -1010,19 +1004,19 @@ body {
}
}
.vxe-header--row .vxe-header--column:hover {
background: #2f54eb1f !important;
background: @primary-color_3;
}
}
.ops-input {
.ant-input,
.ant-time-picker-input {
background-color: @primary-color_5;
background-color: @primary-color_7;
border: none;
}
}
.ops-input.ant-input {
background-color: @primary-color_5;
background-color: @primary-color_7;
border: none;
}
.ops-input.ant-input[disabled] {
@@ -1030,14 +1024,6 @@ body {
color: #333;
cursor: default;
}
.ops-input-radius {
.ant-input {
border-radius: 20px;
}
}
.ops-input-radius.ant-input {
border-radius: 20px;
}
// vxe-table checkbox 选中 highlight
.vxe-table--render-default .vxe-body--row.row--checked,
@@ -1110,12 +1096,12 @@ body {
//批量操作
.ops-list-batch-action {
display: inline-block;
background-color: @primary-color_5;
background-color: @primary-color_6;
font-size: 12px;
color: rgba(0, 0, 0, 0.55);
color: @text-color_3;
> span {
display: inline-block;
padding: 4px 8px;
padding: 7px 8px;
cursor: pointer;
&:hover {
color: @primary-color;
@@ -1127,7 +1113,7 @@ body {
}
}
//tab
// card tab
.ops-tab.ant-tabs.ant-tabs-card {
.ant-tabs-card-bar {
margin: 0;
@@ -1147,15 +1133,53 @@ body {
}
}
//button
// line tab
.ops-tab.ant-tabs {
.ant-tabs-bar {
margin-bottom: 20px;
border-bottom: none;
.ant-tabs-nav.ant-tabs-nav-animated,
.ant-tabs-nav.ant-tabs-nav-animated > div:first-child {
border-bottom: 1px solid @border-color-base;
}
.ant-tabs-tab {
color: @text-color_2;
}
.ant-tabs-tab-active {
color: @primary-color;
}
}
}
// button
.ops-button-primary {
background-color: @primary-color_4;
border-color: @primary-color_4;
color: @primary-color;
box-shadow: none;
}
// button
.ops-button-ghost.ant-btn-background-ghost.ant-btn-primary {
background-color: @primary-color_5!important;
border-color: @primary-color_8;
}
.ops-button-ghost.ant-btn-background-ghost.ant-btn-primary[disabled] {
border-color: #d9d9d9;
background-color: @primary-color_7!important;
}
//select
// button
.ant-btn.ant-btn-icon-only {
&:hover > i {
color: @primary-color;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
> i {
color: #d9d9d9;
}
}
// select
.ops-select {
&.white {
.ant-select-selection {
@@ -1173,10 +1197,6 @@ body {
}
}
}
.ant-select-selection {
background-color: @primary-color_5;
border-color: @primary-color_5;
}
}
//dropdown
@@ -1190,9 +1210,7 @@ body {
//modal
.ant-modal-content {
border-radius: 15px;
.ant-modal-header {
border-radius: 15px;
border-bottom: none;
.ant-modal-title {
padding-left: 10px;
@@ -1328,12 +1346,8 @@ body {
border-bottom-color: @primary-color;
}
}
// .ant-menu.ant-menu-light {
// &.ops-menu {
// background-color: white;
// background: none;
// .ant-menu-submenu {
// color: rgba(0, 0, 0, 0.65);
// }
// }
// }
.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected,
.ant-tree li .ant-tree-node-content-wrapper:hover {
background-color: @primary-color_3;
}

View File

@@ -1,41 +1,49 @@
@border-radius-base: 2px; // 组件/浮层圆角
@border-radius-box: 4px; // big box radius
@primary-color: #2f54eb; // 全局主色 六大品牌色
// primary color
@primary-color: #2f54eb;
@primary-color_2: #7f97fa;
@primary-color_3: #d3e3fd;
@primary-color_3: #ebeff8;
@primary-color_4: #e1efff;
@primary-color_5: #f0f5ff;
@primary-color_6: #f9fbff;
@primary-color_7: #f7f8fa;
@primary-color_8: #b1c9ff;
@text-color_1: #1d2119;
// Neutral color
@text-color_1: #1d2129;
@text-color_2: #4e5969;
@text-color_3: #86909c;
@text-color_4: #a5a9bc;
@text-color_5: #cacdd9;
@text-color_6: #e4e7ed;
@text-color_7: #f0f1f5;
@border-color: #e4e7ed;
@func-color_1: #fd4c6a;
@func-color_2: #ff7d00;
@func-color_3: #00b42a;
@func-color_4: #fad337;
@border-color-base: @text-color_6; // 边框色
@scrollbar-color: rgba(47, 122, 235, 0.2);
@layout-content-background: @primary-color_7;
@layout-header-background: #fff;
@layout-header-height: 40px;
@layout-header-icon-height: 34px;
@layout-header-font-color: #020000;
@layout-header-font-selected-color: #2857bc;
@layout-header-font-selected-color: @primary-color;
//dark
@layout-background-color: #182132;
@layout-background-color-light: #262f40;
//light
@layout-background-light-color: #fafafa;
@layout-background-light-color-light: #f0f0f0;
@layout-sidebar-color: #1d264c; //bg
@layout-sidebar-sub-color: #000c37; //bg
@layout-sidebar-selected-color: #3e4a71; //selected bg
@layout-sidebar-arrow-color: rgba(255, 255, 255, 0.6);
@layout-sidebar-font-color: #fff;
@layout-sidebar-disabled-font-color: rgba(255, 255, 255, 0.6);
@layout-sidebar-color: #ffffff; //bg
@layout-sidebar-sub-color: @primary-color_7; //bg
@layout-sidebar-selected-color: @primary-color_5; //selected bg
@layout-sidebar-arrow-color: @text-color_4;
@layout-sidebar-font-color: @text-color_2;
@layout-sidebar-icon-color: @text-color_4;
@layout-sidebar-selected-font-color: @primary-color;
@layout-sidebar-disabled-font-color: @text-color_4;
#custom_colors() {
color_1: #2f54eb; //primary color
@@ -47,7 +55,7 @@
cursor: pointer;
padding: 5px 8px;
background-color: @backgroundColor;
border-radius: 5px;
border-radius: @border-radius-box;
height: 30px;
color: rgba(0, 0, 0, 0.6);
white-space: nowrap;
@@ -57,10 +65,10 @@
cursor: pointer;
padding: 5px 10px;
&:hover {
background-color: @primary-color_5;
background-color: @primary-color_3;
}
}
.ops_popover_item_selected() {
background-color: @primary-color_5;
background-color: @primary-color_3;
color: @primary-color;
}
}

View File

@@ -17,8 +17,12 @@
<a-space>
<a-button :loading="loading" type="primary" @click="handleSave">{{ $t('save') }}</a-button>
<template v-if="item.value === 'LDAP'">
<a-button :loading="loading" ghost type="primary" @click="handleTest('connect')">{{ $t('cs.auth.testConnect') }}</a-button>
<a-button :loading="loading" ghost type="primary" @click="handleTest('login')">{{ $t('cs.auth.testLogin') }}</a-button>
<a-button :loading="loading" ghost type="primary" @click="handleTest('connect')">{{
$t('cs.auth.testConnect')
}}</a-button>
<a-button :loading="loading" ghost type="primary" @click="handleTest('login')">{{
$t('cs.auth.testLogin')
}}</a-button>
</template>
<a-button :loading="loading" @click="handleReset">{{ $t('reset') }}</a-button>
</a-space>
@@ -56,28 +60,28 @@ export default {
computed: {
authList() {
return [
{
value: 'LDAP',
label: 'LDAP',
},
{
value: 'CAS',
label: 'CAS',
},
{
value: 'OAUTH2',
label: 'OAUTH2',
},
{
value: 'OIDC',
label: 'OIDC',
},
{
value: 'AuthCommonConfig',
label: this.$t('cs.auth.common'),
},
]
}
{
value: 'LDAP',
label: 'LDAP',
},
{
value: 'CAS',
label: 'CAS',
},
{
value: 'OAUTH2',
label: 'OAUTH2',
},
{
value: 'OIDC',
label: 'OIDC',
},
{
value: 'AuthCommonConfig',
label: this.$t('cs.auth.common'),
},
]
},
},
methods: {
getAuthDataEnable() {
@@ -129,7 +133,7 @@ export default {
...values,
}
}
testLDAP(type, { data: _data })
testLDAP({ data: _data, test_type: type })
.then((res) => {
this.$message.success(this.$t('cs.auth.testSuccess'))
})

View File

@@ -5,13 +5,7 @@
</div>
<div class="ops-login-right">
<img src="../../assets/logo_oneterm.png" />
<a-form
id="formLogin"
ref="formLogin"
:form="form"
@submit="handleSubmit"
hideRequiredMark
:colon="false">
<a-form id="formLogin" ref="formLogin" :form="form" @submit="handleSubmit" hideRequiredMark :colon="false">
<a-form-item label="用户名/邮箱">
<a-input
size="large"
@@ -51,15 +45,20 @@
class="login-button"
:loading="state.loginBtn"
:disabled="state.loginBtn"
>登录</a-button
>登录</a-button
>
<a-checkbox
v-if="enable_list && enable_list.length === 1 && enable_list[0].auth_type === 'LDAP'"
v-model="auth_with_ldap"
>LDAP</a-checkbox
>
</a-form-item>
</a-form>
<template v-if="_enable_list && _enable_list.length >= 1">
<a-divider style="font-size:14px">其他登录方式</a-divider>
<div style="text-align:center">
<a-divider style="font-size: 14px">其他登录方式</a-divider>
<div style="text-align: center">
<span v-for="(item, index) in _enable_list" :key="item.auth_type">
<ops-icon :type="item.auth_type"/>
<ops-icon :type="item.auth_type" />
<a @click="otherLogin(item.auth_type)">{{ item.auth_type }}</a>
<a-divider v-if="index < _enable_list.length - 1" type="vertical" />
</span>
@@ -93,6 +92,7 @@ export default {
loginType: 0,
smsSendBtn: false,
},
auth_with_ldap: false,
}
},
computed: {
@@ -104,6 +104,18 @@ export default {
return this.enable_list.filter((en) => en.auth_type !== 'LDAP')
},
},
watch: {
enable_list: {
immediate: true,
handler(newVal) {
if (newVal && newVal.length === 1 && newVal[0].auth_type === 'LDAP') {
this.auth_with_ldap = true
} else {
this.auth_with_ldap = false
}
},
},
},
created() {},
async mounted() {
await this.GetAuthDataEnable()
@@ -124,10 +136,12 @@ export default {
handleSubmit(e) {
e.preventDefault()
const {
enable_list,
form: { validateFields },
state,
customActiveKey,
Login,
auth_with_ldap,
} = this
state.loginBtn = true
@@ -141,6 +155,11 @@ export default {
delete loginParams.username
loginParams.username = values.username
loginParams.password = appConfig.useEncryption ? md5(values.password) : values.password
loginParams.auth_with_ldap =
enable_list && enable_list.length === 1 && enable_list[0].auth_type === 'LDAP'
? Number(auth_with_ldap)
: undefined
localStorage.setItem('ops_auth_type', '')
Login({ userInfo: loginParams })
.then((res) => this.loginSuccess(res))