diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index 2c69df328..d26253730 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -138,6 +138,7 @@ const cn = { assetSubTab: '子级 asset', moreOption: '更多选项', copy: '复制', + duplicate: '复制', silence: '静默', labels: '标签', editType: '类型', diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index cfb7f8adb..69b6acb3a 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -144,6 +144,7 @@ const en = { labels: 'Label', moreOption: 'More option', copy: 'Copy', + duplicate: 'Duplicate', silence: 'Silence', editType: 'Type', searchCondition: 'Search condition', diff --git a/nezha-fronted/src/components/common/mixin/dataList.js b/nezha-fronted/src/components/common/mixin/dataList.js index cd84c8181..9ac5c9dc7 100644 --- a/nezha-fronted/src/components/common/mixin/dataList.js +++ b/nezha-fronted/src/components/common/mixin/dataList.js @@ -147,7 +147,12 @@ export default { }) }, copy (u) { - this.object = { ...u, name: 'Copy from ' + u.name, id: '' } + this.object = { ...u, name: u.name + '-copy', id: '' } + if (this.object.name.length > 64) { + const length = this.object.name.length - 64 + console.log(length, this.object.name.length, u.name.length) + this.object.name = u.name.substring(0, u.name.length - length) + '-copy' + } this.rightBox.show = true }, esc () { diff --git a/nezha-fronted/src/components/common/rightBox/alertRuleBox.vue b/nezha-fronted/src/components/common/rightBox/alertRuleBox.vue index e000d23df..63af3fe3d 100644 --- a/nezha-fronted/src/components/common/rightBox/alertRuleBox.vue +++ b/nezha-fronted/src/components/common/rightBox/alertRuleBox.vue @@ -322,7 +322,7 @@ export default { handler (n, o) { this.isEdit = true this.editAlertRule = JSON.parse(JSON.stringify(n)) - if (this.editAlertRule.id) { + if (this.editAlertRule.id || this.editAlertRule.name) { this.expressions = [this.editAlertRule.expr] this.$nextTick(() => { this.expressions.forEach((ex, index) => { diff --git a/nezha-fronted/src/components/common/table/alert/alertRuleTable.vue b/nezha-fronted/src/components/common/table/alert/alertRuleTable.vue index 244983160..fa5b0bcc3 100644 --- a/nezha-fronted/src/components/common/table/alert/alertRuleTable.vue +++ b/nezha-fronted/src/components/common/table/alert/alertRuleTable.vue @@ -72,6 +72,7 @@ {{$t('overall.edit')}} {{$t('overall.delete')}} + {{$t('overall.duplicate')}} {{$t('overall.silenceAlert')}} diff --git a/nezha-fronted/src/components/common/table/alert/alertSilenceTable.vue b/nezha-fronted/src/components/common/table/alert/alertSilenceTable.vue index 55de56b03..97ffcbe5d 100644 --- a/nezha-fronted/src/components/common/table/alert/alertSilenceTable.vue +++ b/nezha-fronted/src/components/common/table/alert/alertSilenceTable.vue @@ -96,6 +96,7 @@ + {{$t('overall.duplicate')}} {{$t('buttons.delete')}} diff --git a/nezha-fronted/src/components/common/table/settings/chartTmplTable.vue b/nezha-fronted/src/components/common/table/settings/chartTmplTable.vue index e3e7589cf..f29288a3d 100644 --- a/nezha-fronted/src/components/common/table/settings/chartTmplTable.vue +++ b/nezha-fronted/src/components/common/table/settings/chartTmplTable.vue @@ -58,6 +58,7 @@ {{$t('overall.edit')}} {{$t('overall.delete')}} + {{$t('overall.duplicate')}} {{$t('overall.syncChart')}} diff --git a/nezha-fronted/src/components/common/table/settings/endpointTable.vue b/nezha-fronted/src/components/common/table/settings/endpointTable.vue index 99c32bc0b..9e875f8f9 100644 --- a/nezha-fronted/src/components/common/table/settings/endpointTable.vue +++ b/nezha-fronted/src/components/common/table/settings/endpointTable.vue @@ -178,6 +178,7 @@ {{$t('overall.edit')}} {{$t('overall.delete')}} + {{$t('overall.duplicate')}} {{$t('overall.silenceAlert')}} diff --git a/nezha-fronted/src/components/common/table/settings/exprTmplTable.vue b/nezha-fronted/src/components/common/table/settings/exprTmplTable.vue index 734a81a9b..5c2e86a85 100644 --- a/nezha-fronted/src/components/common/table/settings/exprTmplTable.vue +++ b/nezha-fronted/src/components/common/table/settings/exprTmplTable.vue @@ -50,7 +50,7 @@ - {{$t('overall.copy')}} + {{$t('overall.duplicate')}} {{$t('overall.delete')}} diff --git a/nezha-fronted/src/components/common/table/settings/moduleTable.vue b/nezha-fronted/src/components/common/table/settings/moduleTable.vue index 61f68e333..2345405d5 100644 --- a/nezha-fronted/src/components/common/table/settings/moduleTable.vue +++ b/nezha-fronted/src/components/common/table/settings/moduleTable.vue @@ -74,6 +74,7 @@ {{$t('overall.edit')}} {{$t('overall.delete')}} + {{$t('overall.duplicate')}} {{$t('overall.syncChart')}} {{$t('overall.silenceAlert')}} diff --git a/nezha-fronted/src/components/common/table/settings/projectTable.vue b/nezha-fronted/src/components/common/table/settings/projectTable.vue index 53899669f..f8698077a 100644 --- a/nezha-fronted/src/components/common/table/settings/projectTable.vue +++ b/nezha-fronted/src/components/common/table/settings/projectTable.vue @@ -74,6 +74,7 @@ {{$t('overall.edit')}} {{$t('overall.delete')}} + {{$t('overall.duplicate')}} {{$t('overall.silenceAlert')}} diff --git a/nezha-fronted/src/components/page/alert/alertRule.vue b/nezha-fronted/src/components/page/alert/alertRule.vue index 42cd1a499..c470496fd 100644 --- a/nezha-fronted/src/components/page/alert/alertRule.vue +++ b/nezha-fronted/src/components/page/alert/alertRule.vue @@ -44,6 +44,7 @@ :table-data="tableData" @del="del" @edit="edit" + @copy="copy" @orderBy="tableDataSort" @queryMessage="queryMessage" @reload="getTableData" @@ -178,7 +179,7 @@ export default { } }) }, - edit (u) { + edit (u, copyFlag) { this.$get(`${this.url}/${u.id}`).then(response => { if (response.code === 200) { this.object = { @@ -186,9 +187,21 @@ export default { method: response.data.method ? response.data.method.split(',').map(item => Number(item)) : [], receiverShow: response.data.receiver ? response.data.receiver.split(',').map(item => Number(item)) : [] } + if (copyFlag) { + this.object.id = '' + this.object.name = this.object.name + '-copy' + if (this.object.name.length > 64) { + const length = this.object.name.length - 64 + console.log(length, this.object.name.length, u.name.length) + this.object.name = u.name.substring(0, u.name.length - length) + '-copy' + } + } this.rightBox.show = true } }) + }, + copy (u) { + this.edit(u, true) } }, mounted () { diff --git a/nezha-fronted/src/components/page/alert/alertSilence.vue b/nezha-fronted/src/components/page/alert/alertSilence.vue index dfcee3a60..2e621f48b 100644 --- a/nezha-fronted/src/components/page/alert/alertSilence.vue +++ b/nezha-fronted/src/components/page/alert/alertSilence.vue @@ -26,6 +26,7 @@ :table-data="tableData" @del="del" @edit="edit" + @copy="copy" @orderBy="tableDataSort" @reload="getTableData" @selectionChange="selectionChange" @@ -181,7 +182,7 @@ export default { this.object = JSON.parse(JSON.stringify(this.blankObject)) this.rightBox.show = true }, - edit (u) { + edit (u, copyFlag) { this.$get(`${this.url}/${u.id}`).then(response => { if (response.code === 200) { this.object = { @@ -190,10 +191,22 @@ export default { startAt: bus.UTCTimeToConfigTimezone(response.data.startAt), endAt: bus.UTCTimeToConfigTimezone(response.data.endAt) } + if (copyFlag) { + this.object.id = '' + this.object.name = this.object.name + '-copy' + if (this.object.name.length > 64) { + const length = this.object.name.length - 64 + console.log(length, this.object.name.length, u.name.length) + this.object.name = u.name.substring(0, u.name.length - length) + '-copy' + } + } this.rightBox.show = true } }) }, + copy (u) { + this.edit(u, true) + }, del (row) { this.$confirm(this.$t('tip.confirmExpired'), { confirmButtonText: this.$t('tip.yes'), diff --git a/nezha-fronted/src/components/page/config/template/chartTemp.vue b/nezha-fronted/src/components/page/config/template/chartTemp.vue index 2091e0b29..73fa60821 100644 --- a/nezha-fronted/src/components/page/config/template/chartTemp.vue +++ b/nezha-fronted/src/components/page/config/template/chartTemp.vue @@ -74,7 +74,7 @@ :table-data="tableData" @del="del" @edit="edit" - @copy="(row) => {copyRow(row, 'exprTmpl')}" + @copy="copy" @orderBy="tableDataSort" @reload="getTableData" @sync="chartBySync" diff --git a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue index 1e3e7987d..c77c151fa 100644 --- a/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue +++ b/nezha-fronted/src/components/page/monitor/endpoint/endpointList.vue @@ -60,6 +60,7 @@ :tableId="tableId" @del="del" @edit="edit" + @copy="copy" @orderBy="tableDataSort" @reload="getTableData" @addSilence="addSilence" @@ -317,9 +318,18 @@ export default { } }, methods: { - edit (row) { + edit (row, copyFlag) { this.$get('monitor/endpoint/' + row.id).then(res => { this.object = JSON.parse(JSON.stringify(res.data)) + if (copyFlag) { + this.object.id = '' + this.object.name = this.object.name + '-copy' + if (this.object.name.length > 64) { + const length = this.object.name.length - 64 + console.log(length, this.object.name.length, row.name.length) + this.object.name = row.name.substring(0, row.name.length - length) + '-copy' + } + } this.object.configs.forEach(item => { item.config = JSON.parse(item.config) }) @@ -393,12 +403,20 @@ export default { this.object.paramObj.push({ key: '', value: [] }) } this.object.assetName = this.object.asset ? this.object.asset.name : '' + this.object.assetId = this.object.asset ? this.object.asset.id + '' : '' this.object.projectId = this.object.project.id this.object.moduleId = this.object.module.id this.object.type = this.object.module.type - this.rightBox.editShow = true + if (copyFlag) { + this.rightBox.show = true + } else { + this.rightBox.editShow = true + } }) }, + copy (u) { + this.edit(u, true) + }, closeRightEditBox (refresh) { this.rightBox.editShow = false this.rightBox.show = false diff --git a/nezha-fronted/src/components/page/monitor/module/moduleList.vue b/nezha-fronted/src/components/page/monitor/module/moduleList.vue index 2eef7d9a7..ab79a070f 100644 --- a/nezha-fronted/src/components/page/monitor/module/moduleList.vue +++ b/nezha-fronted/src/components/page/monitor/module/moduleList.vue @@ -47,6 +47,7 @@ :table-data="tableData" @del="del" @edit="edit" + @copy="copy" @orderBy="tableDataSort" @reload="getTableData" @sync="chartBySync" @@ -200,11 +201,20 @@ export default { } }, methods: { - edit (row) { + edit (row, copyFlag) { this.$get('monitor/module/' + row.id).then(res => { if (res.code === 200) { this.object = JSON.parse(JSON.stringify(res.data)) this.object.configs = JSON.parse(this.object.configs) + if (copyFlag) { + this.object.id = '' + this.object.name = this.object.name + '-copy' + if (this.object.name.length > 64) { + const length = this.object.name.length - 64 + console.log(length, this.object.name.length, row.name.length) + this.object.name = row.name.substring(0, row.name.length - length) + '-copy' + } + } // this.object.configs.walk = this.object.configs.walk ? JSON.parse(JSON.stringify(this.object.configs.walk)) : [] // this.object.port = this.object.configs.port ? JSON.parse(JSON.stringify(this.object.configs.port)) : '' this.object.paramObj = [] @@ -285,6 +295,9 @@ export default { } }) }, + copy (u) { + this.edit(u, true) + }, getTableData () { this.$set(this.searchLabel, 'pageNo', this.pageObj.pageNo) this.$set(this.searchLabel, 'pageSize', this.pageObj.pageSize) diff --git a/nezha-fronted/src/components/page/monitor/project/projectList.vue b/nezha-fronted/src/components/page/monitor/project/projectList.vue index 8bbec1ce2..c55080f98 100644 --- a/nezha-fronted/src/components/page/monitor/project/projectList.vue +++ b/nezha-fronted/src/components/page/monitor/project/projectList.vue @@ -29,6 +29,7 @@ style="padding-right: 0" @del="del" @edit="edit" + @copy = 'copy' @orderBy="tableDataSort" @reload="getTableData" @addSilence="addSilence"