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"