diff --git a/backend/src/main/java/io/metersphere/service/ProjectService.java b/backend/src/main/java/io/metersphere/service/ProjectService.java index 95b64a776b075b885d7dcea7a8b26765958b0989..cd1df1f0e7c43d2717a324026aa6fd873d2ecc18 100644 --- a/backend/src/main/java/io/metersphere/service/ProjectService.java +++ b/backend/src/main/java/io/metersphere/service/ProjectService.java @@ -130,13 +130,15 @@ public class ProjectService { } private void checkProjectExist (Project project) { - ProjectExample example = new ProjectExample(); - example.createCriteria() - .andNameEqualTo(project.getName()) - .andWorkspaceIdEqualTo(SessionUtils.getCurrentWorkspaceId()) - .andIdNotEqualTo(project.getId()); - if (projectMapper.selectByExample(example).size() > 0) { - MSException.throwException(Translator.get("project_name_already_exists")); + if (project.getName() != null) { + ProjectExample example = new ProjectExample(); + example.createCriteria() + .andNameEqualTo(project.getName()) + .andWorkspaceIdEqualTo(SessionUtils.getCurrentWorkspaceId()) + .andIdNotEqualTo(project.getId()); + if (projectMapper.selectByExample(example).size() > 0) { + MSException.throwException(Translator.get("project_name_already_exists")); + } } } diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java index a2ff41200d5e898c52951569427ccb0695d387e1..ca4743eff9c74528897bf3be616c5ec9e27d1362 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java @@ -97,13 +97,15 @@ public class TestCaseService { } private void checkTestCaseExist (TestCaseWithBLOBs testCase) { - TestCaseExample example = new TestCaseExample(); - example.createCriteria() - .andNameEqualTo(testCase.getName()) - .andProjectIdEqualTo(testCase.getProjectId()) - .andIdNotEqualTo(testCase.getId()); - if (testCaseMapper.selectByExample(example).size() > 0) { - MSException.throwException(Translator.get("test_case_already_exists")); + if (testCase.getName() != null) { + TestCaseExample example = new TestCaseExample(); + example.createCriteria() + .andNameEqualTo(testCase.getName()) + .andProjectIdEqualTo(testCase.getProjectId()) + .andIdNotEqualTo(testCase.getId()); + if (testCaseMapper.selectByExample(example).size() > 0) { + MSException.throwException(Translator.get("test_case_already_exists")); + } } } diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index ed18d8fa9bb8e2deb247e1c2e93af15dffd159a3..df1ea35dd2580de648113eaf51f892d44f55c966 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -95,13 +95,15 @@ public class TestPlanService { } private void checkTestPlanExist (TestPlan testPlan) { - TestPlanExample example = new TestPlanExample(); - example.createCriteria() - .andNameEqualTo(testPlan.getName()) - .andWorkspaceIdEqualTo(SessionUtils.getCurrentWorkspaceId()) - .andIdNotEqualTo(testPlan.getId()); - if (testPlanMapper.selectByExample(example).size() > 0) { - MSException.throwException(Translator.get("plan_name_already_exists")); + if (testPlan.getName() != null) { + TestPlanExample example = new TestPlanExample(); + example.createCriteria() + .andNameEqualTo(testPlan.getName()) + .andWorkspaceIdEqualTo(SessionUtils.getCurrentWorkspaceId()) + .andIdNotEqualTo(testPlan.getId()); + if (testPlanMapper.selectByExample(example).size() > 0) { + MSException.throwException(Translator.get("plan_name_already_exists")); + } } } diff --git a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue index 6145eabf2b798fc88272e694b9c213e29a7cd2d8..37bbdeebe1588a2b7d5ef39fdadf01e8d027a092 100644 --- a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue @@ -232,11 +232,23 @@ } }, methods: { - handleClose(done) { + listenGoBack() { + //监听浏览器返回操作,关闭该对话框 + if (window.history && window.history.pushState) { + history.pushState(null, null, document.URL); + window.addEventListener('popstate', this.goBack, false); + } + }, + goBack() { + this.handleClose(); + }, + handleClose() { + //移除监听,防止监听其他页面 + window.removeEventListener('popstate', this.goBack, false); this.showDialog = false; }, cancel() { - this.showDialog = false; + this.handleClose(); this.$emit('refreshTable'); }, statusChange(status) { @@ -299,6 +311,7 @@ }, openTestCaseEdit(testCase) { this.showDialog = true; + this.listenGoBack(); this.initData(testCase); }, initTest() { diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue index ad2aa547f43bc4cee0da543e1812afb56615220f..a303bfb5bfa9e9ef3465d4da2e4c832298ac6905 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportTemplateEdit.vue @@ -91,6 +91,16 @@ } }, methods: { + listenGoBack() { + //监听浏览器返回操作,关闭该对话框 + if (window.history && window.history.pushState) { + history.pushState(null, null, document.URL); + window.addEventListener('popstate', this.goBack, false); + } + }, + goBack() { + this.handleClose(); + }, open(id, isReport) { if (isReport) { this.isReport = isReport; @@ -112,6 +122,7 @@ this.initComponents(); } this.showDialog = true; + this.listenGoBack(); }, initComponents() { this.componentMap.forEach((value, key) =>{ @@ -134,6 +145,7 @@ }); }, handleClose() { + window.removeEventListener('popstate', this.goBack, false); this.showDialog = false; }, change(evt) { @@ -221,7 +233,7 @@ } this.$post(url + this.type, param, () =>{ this.$success(this.$t('commons.save_success')); - this.showDialog = false; + this.handleClose(); this.$emit('refresh'); }); }, diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue index ad79e5fd144c142cd747d9e21ae2f7fd7d9254ca..87f9250ba0364ee7188a0992fe7b4ff37b32ede2 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TestCaseReportView.vue @@ -78,12 +78,23 @@ } }, methods: { + listenGoBack() { + //监听浏览器返回操作,关闭该对话框 + if (window.history && window.history.pushState) { + history.pushState(null, null, document.URL); + window.addEventListener('popstate', this.goBack, false); + } + }, + goBack() { + this.handleClose(); + }, open(id) { if (id) { this.reportId = id; } this.getReport(); this.showDialog = true; + this.listenGoBack(); }, getReport() { this.result = this.$get('/case/report/get/' + this.reportId, response => { @@ -113,6 +124,7 @@ }); }, handleClose() { + window.removeEventListener('popstate', this.goBack, false); this.showDialog = false; }, handleEdit() {