diff --git a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue index 4f36e4862..c877d5f4f 100644 --- a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue +++ b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue @@ -21,7 +21,7 @@
diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index fc82c971b..870133746 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -76,6 +76,7 @@ const cn = { createProject: '新增系统', createEndpoint: '新增 Endpoint', batchEndpoint: '批量修改Endpoint', + batchAddEndpoint: '批量新增 Endpoint', createAsset: '新增资产', createAlertRule: '新增告警规则', createAlertSilence: '新增告警规则', @@ -144,7 +145,8 @@ const cn = { tempPrev: '模板预览', silenceAlert: '告警静默', quickSilent: '快速静默', - configEndpoint: '配置' + configEndpoint: '配置', + generate: '生产' }, setup: { step0: '欢迎', @@ -1298,6 +1300,7 @@ const cn = { editEndpoint: '修改 Endpoint', createEndpoint: '新增 Endpoint', batchEndpoint: '批量 Endpoint', + batchAddEndpoint: '批量新增 Endpoint', endpointName: 'Endpoint name', name: '名称' }, diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index 3a1c7202e..cdc47cd73 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -82,6 +82,7 @@ const en = { createProject: 'New project', createEndpoint: 'New endpoint', batchEndpoint: 'Batch modify endpoint', + batchAddEndpoint: 'Batch new endpoint', createAsset: 'New asset', createAlertRule: 'New alert rule', createAlertSilence: 'New alert silence', @@ -149,7 +150,8 @@ const en = { tempPrev: 'Template preview', silenceAlert: 'silence alert', quickSilent: 'Quick silent', - configEndpoint: 'Config' + configEndpoint: 'Config', + generate: 'Generate' }, pageSize: '/page', setup: { @@ -1297,7 +1299,8 @@ const en = { asset: 'Asset', editEndpoint: 'Edit endpoint', createEndpoint: 'New endpoint', - batchEndpoint: 'Batch Endpoint', + batchEndpoint: 'Batch endpoint', + batchAddEndpoint: 'Batch new endpoint', endpointName: 'Endpoint', name: 'Name', tip: { diff --git a/nezha-fronted/src/components/common/popBox/selectWalk.vue b/nezha-fronted/src/components/common/popBox/selectWalk.vue index dca948dfc..8eb1b1b7e 100644 --- a/nezha-fronted/src/components/common/popBox/selectWalk.vue +++ b/nezha-fronted/src/components/common/popBox/selectWalk.vue @@ -134,6 +134,7 @@ export default { diff --git a/nezha-fronted/src/components/common/project/L5/CanvasProps.vue b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue index c90498d5e..363914cf2 100644 --- a/nezha-fronted/src/components/common/project/L5/CanvasProps.vue +++ b/nezha-fronted/src/components/common/project/L5/CanvasProps.vue @@ -2495,4 +2495,7 @@ export default { /deep/ .metric-selector-title { background: #fff !important; } +/deep/ .el-collapse-item__arrow.el-icon-arrow-right{ + display: inline-block !important; +} diff --git a/nezha-fronted/src/components/common/project/topology.scss b/nezha-fronted/src/components/common/project/topology.scss index 7900b4093..5c4bd792d 100644 --- a/nezha-fronted/src/components/common/project/topology.scss +++ b/nezha-fronted/src/components/common/project/topology.scss @@ -1,11 +1,14 @@ -/deep/ .el-collapse-item .is-active .nz-icon-caret-right{ +/deep/ .el-collapse-item__arrow.el-icon-arrow-right{ + display: none !important; +} +/deep/ .el-collapse-item .is-active .nz-icon-arrow-right{ transform: rotate(90deg); color: #FA901C; } /deep/ .el-collapse-item .title-delete{ display: none; } -/deep/ .el-collapse-item .nz-icon-caret-right{ +/deep/ .el-collapse-item .nz-icon-arrow-right{ transition: transform .3s; color: #BEBEBE; margin-right: 5px; @@ -14,7 +17,7 @@ .el-collapse-item__header{ color: #FA901C; } - .nz-icon-caret-right{ + .nz-icon-arrow-right{ color: #FA901C; } .title-delete{ diff --git a/nezha-fronted/src/components/common/project/topologyL5.vue b/nezha-fronted/src/components/common/project/topologyL5.vue index 25d41896b..03022c3c0 100644 --- a/nezha-fronted/src/components/common/project/topologyL5.vue +++ b/nezha-fronted/src/components/common/project/topologyL5.vue @@ -21,7 +21,7 @@
diff --git a/nezha-fronted/src/components/common/rightBox/batchAddEndpoint.vue b/nezha-fronted/src/components/common/rightBox/batchAddEndpoint.vue new file mode 100644 index 000000000..a4f6f1c33 --- /dev/null +++ b/nezha-fronted/src/components/common/rightBox/batchAddEndpoint.vue @@ -0,0 +1,426 @@ + + + diff --git a/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue b/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue index aa2897ee4..b2f227455 100644 --- a/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue +++ b/nezha-fronted/src/components/common/rightBox/editEndpointBoxNew.vue @@ -30,7 +30,7 @@ - + @@ -48,52 +48,6 @@ - - -
SNMP settings
-
- - - -
{{$t('project.module.walk')}}
-
- - - - - - - -
- - - - - - -
- - - - - -
{{ $t("overall.configEndpoint") }} @@ -123,7 +77,6 @@ key-field="id" show-field="name" title="ChartSearch" - @values="(data) => {editEndpoint.chartIds = data.map(d => d.id).join(',')}" >
@@ -158,10 +111,10 @@ - +
-
{{$t('project.module.walk')}}
+
{{$t('project.module.walk')}}
@@ -193,7 +146,7 @@ - +
@@ -301,42 +254,42 @@ - + - + - + - + - + @@ -524,6 +477,7 @@ import pipelineSelect from './pipelineSelect' import selectWalk from '../popBox/selectWalk' import editRigthBox from '../mixin/editRigthBox' import VueTagsInput from '@johmun/vue-tags-input' +import project from "@/components/page/monitor/project/project"; export default { name: 'editEndpointBoxNew', @@ -555,6 +509,7 @@ export default { walkData: [], chartTempList: [], activeName: 'Basic', + activeNameLogs: ['Basic'], expandedWalkData: [], language: localStorage.getItem('nz-language'), radio: 'password', @@ -572,7 +527,8 @@ export default { showAllBasicOption: false, rules: { name: [ - { validator: this.optionType === 'batch' ? '' : noSpecialChar, trigger: 'change' } + { validator: this.optionType === 'batch' ? '' : noSpecialChar, trigger: 'change' }, + { required: true, message: this.$t('validate.required'), trigger: 'change' } ], assetId: [ { required: !(this.optionType === 'batch'), message: this.$t('validate.required'), trigger: 'change' } @@ -675,10 +631,10 @@ export default { methods: { port: port, selectWalk (walk) { - if (this.editEndpoint.walk.indexOf(walk) != -1) { - this.editEndpoint.walk.splice(this.editEndpoint.walk.indexOf(walk), 1) + if (this.editEndpoint.configs[0].config.walk.indexOf(walk) != -1) { + this.editEndpoint.configs[0].config.walk.splice(this.editEndpoint.configs[0].config.walk.indexOf(walk), 1) } else { - this.editEndpoint.walk.push(walk) + this.editEndpoint.configs[0].config.walk.push(walk) } }, // 从mibData里取得oid对应的mib名称 @@ -725,7 +681,7 @@ export default { }, removeWalk (walk) { - this.editEndpoint.walk.splice(this.editEndpoint.walk.indexOf(walk), 1) + this.editEndpoint.configs[0].config.walk.splice(this.editEndpoint.configs[0].config.walk.indexOf(walk), 1) this.$refs.selectWalk.$refs.walkTree.setChecked(walk, false) }, @@ -886,23 +842,22 @@ export default { } }, logsBasicTypeChange (i) { - const type = this.editEndpoint.configs[1].config[i].basic.type + const type = this.editEndpoint.configs[1].config[i].type if (type === 'file') { - this.editEndpoint.configs[1].config[i].basic = { - type, - fileName: '' - } + this.editModule.configs[1].config[i].fileName = '' + delete this.editModule.configs[1].config[i].unit + delete this.editModule.configs[1].config[i].appName + delete this.editModule.configs[1].config[i].listenAddress } else if (type === 'journal') { - this.editEndpoint.configs[1].config[i].basic = { - type, - unit: '' - } + delete this.editModule.configs[1].config[i].fileName + this.editModule.configs[1].config[i].unit = '' + delete this.editModule.configs[1].config[i].appName + delete this.editModule.configs[1].config[i].listenAddress } else if (type === 'syslog') { - this.editEndpoint.configs[1].config[i].basic = { - type, - appName: '', - listenAddress: '' - } + delete this.editModule.configs[1].config[i].fileName + delete this.editModule.configs[1].config[i].unit + this.editModule.configs[1].config[i].appName = '' + this.editModule.configs[1].config[i].listenAddress = '' } }, /* 获取project列表 */ @@ -915,6 +870,10 @@ export default { }, changeProject () { this.getModuleList() + if (this.editEndpoint.moduleId) { + this.editEndpoint.moduleId = '' + this.$refs.moduleForm.clearValidate('moduleId') + } }, /* 获取module列表 */ getModuleList () { @@ -1142,10 +1101,18 @@ export default { if (this.disabled) { return } - if (this.editEndpoint.moduleId && this.editEndpoint.assetId && (JSON.stringify(this.editEndpoint.configs) === JSON.stringify(this.blankObject.configs))) { + if (this.editEndpoint.moduleId && this.editEndpoint.assetId) { this.$post('/monitor/endpoint/render', { moduleIds: this.editEndpoint.moduleId, assetIds: this.editEndpoint.assetId }).then(res => { console.log(res) - this.editEndpoint.configs = res.data.list[0].configs + if (JSON.stringify(this.editEndpoint.configs) === JSON.stringify(this.blankObject.configs)) { + this.editEndpoint.configs = res.data.list[0].configs + } + if (!this.editEndpoint.name) { + this.editEndpoint.name = res.data.list[0].name + } + if (!this.editEndpoint.chartIds) { + this.editEndpoint.chartIds = res.data.list[0].chartIds + } }) } } @@ -1174,6 +1141,7 @@ export default { handler (n, o) { this.isEdit = true this.editEndpoint = JSON.parse(JSON.stringify(n)) + this.getModuleList() this.activeName = 'Basic' this.activeNameLogs = this.editEndpoint.configs[1].config.map(() => 'Basic') this.logsCopyValue = this.editEndpoint.configs[1].config.map(() => '') @@ -1186,7 +1154,7 @@ export default { } if (n.type && n.type.toLowerCase() == 'snmp') { this.$refs.selectWalk.show() - for (let i = 0; i < this.editEndpoint.walk.length; i++) { + for (let i = 0; i < this.editEndpoint.configs[0].config.walk.length; i++) { this.expandedWalkData.push(this.editEndpoint.configs[0].config.walk[i].substring(0, this.editEndpoint.configs[0].config.walk[i].lastIndexOf('.'))) } } @@ -1398,6 +1366,8 @@ export default { .nz-icon-arrow-down{ display: inline-block; transition: transform .3s; + color: #BDBDBD; + font-size: 12px; } .nz-icon-arrow-down.is-active{ transform: rotate( diff --git a/nezha-fronted/src/components/common/rightBox/moduleBox.vue b/nezha-fronted/src/components/common/rightBox/moduleBox.vue index 80816ffa0..82c7d8c8e 100644 --- a/nezha-fronted/src/components/common/rightBox/moduleBox.vue +++ b/nezha-fronted/src/components/common/rightBox/moduleBox.vue @@ -111,10 +111,10 @@ - +
-
{{$t('project.module.walk')}}
+
{{$t('project.module.walk')}}
@@ -146,7 +146,7 @@ - +
@@ -254,42 +254,42 @@ - + - + - + - + - + @@ -622,10 +622,10 @@ export default { methods: { port: port, selectWalk (walk) { - if (this.editModule.walk.indexOf(walk) != -1) { - this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1) + if (this.editModule.configs[0].config.walk.indexOf(walk) != -1) { + this.editModule.configs[0].config.walk.splice(this.editModule.configs[0].config.walk.indexOf(walk), 1) } else { - this.editModule.walk.push(walk) + this.editModule.configs[0].config.walk.push(walk) } }, // 从mibData里取得oid对应的mib名称 @@ -672,7 +672,7 @@ export default { }, removeWalk (walk) { - this.editModule.walk.splice(this.editModule.walk.indexOf(walk), 1) + this.editModule.configs[0].config.walk.splice(this.editModule.configs[0].config.walk.indexOf(walk), 1) this.$refs.selectWalk.$refs.walkTree.setChecked(walk, false) }, @@ -915,10 +915,8 @@ export default { this.activeNameLogs.push('Basic') this.logsCopyValue.push('') this.editModule.configs[1].config.push({ - basic: { - type: 'file', - fileName: '' - }, + type: 'file', + fileName: '', labels: '', labelModule: [{ key: '', value: '' }], pipeline: [] @@ -930,23 +928,22 @@ export default { } }, logsBasicTypeChange (i) { - const type = this.editModule.configs[1].config[i].basic.type + const type = this.editModule.configs[1].config[i].type if (type === 'file') { - this.editModule.configs[1].config[i].basic = { - type, - fileName: '' - } + this.editModule.configs[1].config[i].fileName = '' + delete this.editModule.configs[1].config[i].unit + delete this.editModule.configs[1].config[i].appName + delete this.editModule.configs[1].config[i].listenAddress } else if (type === 'journal') { - this.editModule.configs[1].config[i].basic = { - type, - unit: '' - } + delete this.editModule.configs[1].config[i].fileName + this.editModule.configs[1].config[i].unit = '' + delete this.editModule.configs[1].config[i].appName + delete this.editModule.configs[1].config[i].listenAddress } else if (type === 'syslog') { - this.editModule.configs[1].config[i].basic = { - type, - appName: '', - listenAddress: '' - } + delete this.editModule.configs[1].config[i].fileName + delete this.editModule.configs[1].config[i].unit + this.editModule.configs[1].config[i].appName = '' + this.editModule.configs[1].config[i].listenAddress = '' } }, copyValue () { @@ -1117,7 +1114,7 @@ export default { } if (n.type && n.type.toLowerCase() == 'snmp') { this.$refs.selectWalk.show() - for (let i = 0; i < this.editModule.walk.length; i++) { + for (let i = 0; i < this.editModule.configs[0].config.walk.length; i++) { this.expandedWalkData.push(this.editModule.configs[0].config.walk[i].substring(0, this.editModule.configs[0].config.walk[i].lastIndexOf('.'))) } } @@ -1329,6 +1326,8 @@ export default { .nz-icon-arrow-down{ display: inline-block; transition: transform .3s; + color: #BDBDBD; + font-size: 12px; } .nz-icon-arrow-down.is-active{ transform: rotate( diff --git a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue index f5831cce4..3bb656cc2 100644 --- a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue +++ b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue @@ -35,6 +35,9 @@ + +
{{$t('overall.batchAdd')}}
+
@@ -79,6 +82,9 @@ + + +
@@ -91,6 +97,7 @@ import dataListMixin from '@/components/common/mixin/dataList' import endpointTable from '@/components/common/table/settings/endpointTable' import EditEndpointBoxNew from '@/components/common/rightBox/editEndpointBoxNew' import batchModifyEndpoint from '@/components/common/rightBox/batchModifyEndpoint' +import batchAddEndpoint from '@/components/common/rightBox/batchAddEndpoint' import clickSearch from '@/components/common/labelFilter/clickSearch' import topToolMoreOptions from '@/components/common/popBox/topToolMoreOptions' import alertSilenceBox from '@/components/common/rightBox/alertSilenceBox' @@ -106,7 +113,8 @@ export default { clickSearch, batchModifyEndpoint, topToolMoreOptions, - alertSilenceBox + alertSilenceBox, + batchAddEndpoint }, mixins: [dataListMixin], data () { @@ -145,10 +153,8 @@ export default { { type: 'logs', config: [{ - basic: { - type: 'file', - fileName: '' - }, + type: 'file', + fileName: '', labels: '', labelModule: [{ key: '', value: '' }], pipeline: [] @@ -213,7 +219,8 @@ export default { rightBox: { editShow: false, show: false, - batchModify: false + batchModify: false, + batchAdd: false, }, titleSearch: {}, titleSearchList: { @@ -302,6 +309,13 @@ export default { this.getTableData() } }, + closeRightBatchAdd (refresh) { + this.rightBox.batchAdd = false + if (refresh) { + this.delFlag = true + this.getTableData() + } + }, getTableData () { this.$set(this.searchLabel, 'pageNo', this.pageObj.pageNo) this.$set(this.searchLabel, 'pageSize', this.pageObj.pageSize) @@ -366,6 +380,9 @@ export default { return } this.rightBox.batchModify = true + }, + batchAdd () { + this.rightBox.batchAdd = true } }, computed: { diff --git a/nezha-fronted/src/components/page/monitor/module/moduleList.vue b/nezha-fronted/src/components/page/monitor/module/moduleList.vue index da59ed340..3a8f17126 100644 --- a/nezha-fronted/src/components/page/monitor/module/moduleList.vue +++ b/nezha-fronted/src/components/page/monitor/module/moduleList.vue @@ -125,10 +125,8 @@ export default { { type: 'logs', config: [{ - basic: { - type: 'file', - fileName: '' - }, + type: 'file', + fileName: '', labels: '', labelModule: [{ key: '', value: '' }], pipeline: [] @@ -230,7 +228,7 @@ export default { } if (JSON.stringify(this.object.configs[0].config.params) !== '{}' && this.object.configs[0].config.params) { Object.keys(this.object.configs[0].config.params).forEach(key => { - this.object.paramObj.push({ key, value: this.object.configs[0].params[key] }) + this.object.paramObj.push({ key, value: this.object.configs[0].config.params[key] }) }) } else { this.object.paramObj.push({ key: '', value: [] })