diff --git a/nezha-fronted/src/assets/css/common/rightBoxCommon.scss b/nezha-fronted/src/assets/css/common/rightBoxCommon.scss new file mode 100644 index 000000000..2f2b8f839 --- /dev/null +++ b/nezha-fronted/src/assets/css/common/rightBoxCommon.scss @@ -0,0 +1,186 @@ +.right-box, .right-sub-box { + display: flex; + flex-direction: column; + position: fixed; + right: 0; + top: 50px; + padding: 0; + height: calc(100% - 50px); + width: 700px; + box-shadow: 0 0 5px #ccc; + background-color: white; + z-index: 410; + + .el-date-editor { + .el-input__inner { + padding-left: 32px; + } + } +} + +.right-box__header { + display: flex; + justify-content: space-between; + align-items: center; + height: 60px; + padding: 0 20px; + border-bottom: 1px solid $--right-box-border-color; + box-sizing: border-box; + + .header__title { + font-size: 16px; + font-weight: bold; + color: #333; + } + .header__operation { + i { + color: #999; + font-size: 14px; + } + } +} + +.right-box__container { + height: calc(100% - 130px); + padding: 0 30px; + overflow-x: hidden; + overflow-y: auto; + + .el-input__inner { + padding: 0 10px; + border-radius: $--primary-border-radius; + border: 1px solid $--right-box-border-color; + } + .el-form { + padding-top: 20px; + + .el-form-item { + margin-bottom: 16px; + + .el-form-item__label { + padding-bottom: 6px; + font-size: 14px; + line-height: 16px; + color: #666; + } + + .el-input__inner:hover { + border-color: darken($--right-box-border-color, 10%); + } + .el-input__inner:focus { + border-color: darken($--right-box-border-color, 20%); + } + } + .el-form-item.is-error .el-input__inner, .el-form-item.is-error .el-input__inner:focus, .el-form-item.is-error .el-textarea__inner, .el-form-item.is-error .el-textarea__inner:focus, .el-message-box__input input.invalid, .el-message-box__input input.invalid:focus { + border-color: #F56C6C + } + + .form__sub-title { + padding: 0 10px; + margin-bottom: 20px; + line-height: 32px; + font-size: 14px; + font-weight: bold; + color: #555; + background-color: #F6F6F6; + } + /* 虚线框类型的form-item */ + .form__dotted-item { + padding: 10px 10px 6px 10px; + margin-bottom: 10px; + border: 1px dashed $--primary-border-color; + border-radius: $--primary-border-radius; + + .el-form-item { + margin-bottom: 0; + + .el-form-item__label { + width: 100%; + } + .form__labels-label { + display: flex; + justify-content: space-between; + } + } + } + .form__create-btn { + margin-bottom: 20px; + width: 300px; + height: 28px; + border: 1px solid var(--theme-color-light-71); + border-radius: $--primary-border-radius; + background-color: var(--theme-color-light-98); + + i { + color: var(--theme-color); + } + } + .form__flex-container { + display: flex; + justify-content: center; + align-items: center; + } + } +} + +.right-box__footer { + display: flex; + align-items: center; + justify-content: center; + height: 70px; + box-shadow: -3px 0 8px -3px rgba(205,205,205,0.77); + + .footer__btn { + margin: 0 15px; + height: 30px; + min-width: 74px; + padding: 0 15px; + color: white; + background-color: var(--theme-color); + border: none; + border-radius: 4px; + outline: none; + box-sizing: border-box; + font-size: 14px; + cursor: pointer; + transition: background-color linear .2s, color linear .1s; + } + .footer__btn:hover:not(.footer__btn--disabled) { + background-color: var(--theme-color-light-20); + } + .footer__btn--light { + background-color: white; + border: 1px solid $--primary-border-color; + color: #333; + } + .footer__btn.footer__btn--light:hover:not(.footer__btn--disabled) { + background-color: white; + border-color: var(--theme-color-light-50); + color: var(--theme-color); + } + .footer__btn--disabled { + opacity: .6; + cursor: default; + } +} +/* 隐藏label新增按钮处级联选择器的input */ +.hide-casc-input { + position: relative; + + .hide-input { + position: absolute; + top: 0; + width: 300px; + opacity: 0; + } +} +.label__multi-text { + display: flex; + justify-content: space-between; +} +.right-box__select { + width: 100%; +} +.right-box-select-dropdown { + width: 625px; +} diff --git a/nezha-fronted/src/assets/css/theme.scss b/nezha-fronted/src/assets/css/theme.scss index 724a0d5d6..63be4c51b 100644 --- a/nezha-fronted/src/assets/css/theme.scss +++ b/nezha-fronted/src/assets/css/theme.scss @@ -1,11 +1,24 @@ :root { - --theme-color: #FA901C; // 默认主题色 + --theme-color: #FA901C; // 默认主题色,下方深化、浅化的色值默认值是写死的;用户自定义修改主题色后,由js计算新值 + --theme-color-dark-10: #E18219; // 默认主题色 深10% + --theme-color-light-10: #FA9B33; // 默认主题色 浅10% + --theme-color-light-20: #FBA649; // 默认主题色 浅20% + --theme-color-light-30: #FBB160; // 默认主题色 浅30% + --theme-color-light-40: #FBBC77; // 默认主题色 浅40% + --theme-color-light-50: #FCC88D; // 默认主题色 浅50% + --theme-color-light-60: #FCD4A4; // 默认主题色 浅60% + --theme-color-light-71: #FFDFBD; // 默认主题色 浅71% + --theme-color-light-80: #FFEAD2; // 默认主题色 浅80% + --theme-color-light-90: #FFF5E8; // 默认主题色 浅90% + --theme-color-light-98: #FFFCF8; // 默认主题色 浅98% } $--theme-color: var(--theme-color); // 主题色 $--primary-border-color: #DEDEDE; $--primary-border-radius: 2px; +$--right-box-border-color: #E7EAED; + /* 按钮 */ $--button-border-radius: $--primary-border-radius; // 按钮圆角 diff --git a/nezha-fronted/src/assets/stylus/main.scss b/nezha-fronted/src/assets/stylus/main.scss index 23608ee90..a3de12421 100644 --- a/nezha-fronted/src/assets/stylus/main.scss +++ b/nezha-fronted/src/assets/stylus/main.scss @@ -964,32 +964,31 @@ li{ /* end--右侧内容*/ /* begin--右侧弹框*/ -.right-box, .right-sub-box { +/*.right-box, */.right-sub-box { position: fixed; top: 50px; right: 0; z-index: 410; box-shadow: 0 0 15px #ccc; background-color: white; - padding: 0 0 0 15px; height: calc(100% - 50px); } /*此处自定义弹框尺寸,不同功能可能需要的尺寸不一样,需自行添加*/ -.right-box-menu ,.right-box-role ,.right-box-account, .right-box-prom, .right-box-alert-config, .right-box-project, .right-box-module, .right-box-cabinet, +/*.right-box-menu ,.right-box-role ,.right-box-account, .right-box-prom, .right-box-alert-config, .right-box-project, .right-box-module, .right-box-cabinet, .right-box-edit-endpoint, .right-box-panel, .right-box-dc, .right-box-model, .right-box-mib, .right-box-asset, .right-box-add-chart, .right-box-asset-type, .right-box-asset-state , .right-box-credential{ width: 850px; -} +}*/ .right-box-chart .el-input__inner, .right-box-chart input { background-color: white; } -.right-box-add-endpoint { +/*.right-box-add-endpoint { width: 850px; } .right-box-add-endpoint.right-box-add-endpoint-snmp { width: 850px; -} +}*/ .snmp-form { .el-form-item__content { margin-left: 10px !important; @@ -1016,12 +1015,6 @@ li{ top: 21px; transform: translateX(-50%); } -.right-box .el-input__inner { - background-color: white; -} -.right-box .el-form-item__label { - line-height: 30px; -} .right-box-line { margin-bottom: 18px; background-color: #DCDFE6; diff --git a/nezha-fronted/src/components/common/js/constants.js b/nezha-fronted/src/components/common/js/constants.js index 272d78248..7aea1d0d9 100644 --- a/nezha-fronted/src/components/common/js/constants.js +++ b/nezha-fronted/src/components/common/js/constants.js @@ -78,7 +78,54 @@ export const asset = { { value: 1, label: i18n.t('asset.inStock') }, { value: 2, label: i18n.t('asset.notInStock') }, { value: 3, label: i18n.t('asset.suspended') } - ] + ], + authProtocolOptions: [ + { value: 0, label: 'Non' }, + { value: 1, label: 'SSH' }, + { value: 2, label: 'TELNET' } + ], + authProtocolData: { + non: 0, + ssh: 1, + telnet: 2 + }, + authTypeOptions: [ + { value: 1, label: 'Username' }, + { value: 2, label: 'Key' } + ], + authTypeData: { + username: 1, + key: 2 + }, + editTypeOptions: [ + { value: 1, label: i18n.t('overall.account') }, + { value: 2, label: 'Label' }, + { value: 3, label: i18n.t('asset.state') }, + { value: 4, label: i18n.t('asset.snmpCredential') } + ], + editTypeData: { + account: 1, + label: 2, + state: 3, + snmpCredential: 4 + }, + labelTypeData: { + TEXT: 'TEXT', + MULTITEXT: 'MULTITEXT', + TEXTAREA: 'TEXTAREA', + RADIO: 'RADIO', + CHECKBOX: 'CHECKBOX', + SELECT: 'SELECT', + INTEGER: 'INTEGER', + DOUBLE: 'DOUBLE', + DATETIME: 'DATETIME', + EMAIL: 'EMAIL' + }, + labelSubTypeData: { + date: 'date', + time: 'time', + dateTime: 'dateTime' + } } export const alertMessage = { @@ -170,6 +217,7 @@ export const fromRoute = { asset: 'asset', assetType: 'assetType', assetState: 'assetState', + assetLabel: 'assetLabel', expressionTemplate: 'expressionTemplate', user: 'user', agent: 'agent', diff --git a/nezha-fronted/src/components/common/mixin/table.js b/nezha-fronted/src/components/common/mixin/table.js index 914089ca7..5ecb43168 100644 --- a/nezha-fronted/src/components/common/mixin/table.js +++ b/nezha-fronted/src/components/common/mixin/table.js @@ -23,7 +23,7 @@ export default { } }, methods: { - tableOperation ([command, row]) { + tableOperation ([command, row, param]) { switch (command) { case 'edit': { this.$emit('edit', row) @@ -37,6 +37,14 @@ export default { this.$emit('showBottomBox', 'record', row) break } + case 'cli': { + this.$emit('cli', row) + break + } + case 'copy': { + this.$emit('copy', row) + break + } default: break } diff --git a/nezha-fronted/src/components/common/nzTransfer.vue b/nezha-fronted/src/components/common/nzTransfer.vue new file mode 100644 index 000000000..2ada5bea8 --- /dev/null +++ b/nezha-fronted/src/components/common/nzTransfer.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/nezha-fronted/src/components/common/popBox/selectAssetType.vue b/nezha-fronted/src/components/common/popBox/selectAssetType.vue index 63a26b195..d53ae05ce 100644 --- a/nezha-fronted/src/components/common/popBox/selectAssetType.vue +++ b/nezha-fronted/src/components/common/popBox/selectAssetType.vue @@ -1,5 +1,5 @@