diff --git a/test-test/src/main/java/com/test/test/mapper/TestCaseStepMapper.java b/test-test/src/main/java/com/test/test/mapper/TestCaseStepMapper.java index 9993adf..2783d48 100644 --- a/test-test/src/main/java/com/test/test/mapper/TestCaseStepMapper.java +++ b/test-test/src/main/java/com/test/test/mapper/TestCaseStepMapper.java @@ -68,5 +68,13 @@ public interface TestCaseStepMapper */ public List selectTestCaseStepListByCaseId(Long caseId); + /** + * 根据用例id查询所有用例步骤列表并按照步骤顺序排序 + * + * @param caseId 用例id + * @return 用例步骤集合 + */ + public List selectAllTestCaseStepIdListByCaseId(Long caseId); + int deleteTestCaseStepByCaseId(Long caseId); } diff --git a/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java index 63573a4..97c53a3 100644 --- a/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java +++ b/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java @@ -76,10 +76,20 @@ public class TestCaseStepServiceImpl implements ITestCaseStepService { @Override @Transactional public int insertBatchTestCaseStep(TestCaseStepAddQO qo) { - testCaseStepMapper.deleteTestCaseStepByCaseId(qo.getCaseId()); + List allTestCaseStepIdList = + testCaseStepMapper.selectAllTestCaseStepIdListByCaseId(qo.getCaseId()); int i = 0; for (TestCaseStep testCaseStep1 : qo.getList()) { - i += insertTestCaseStep(testCaseStep1); + if (testCaseStep1.getId() != null) { + allTestCaseStepIdList.remove(testCaseStep1.getId()); + updateTestCaseStep(testCaseStep1); + } else { + insertTestCaseStep(testCaseStep1); + } + i ++; + } + for (Long testCaseStepId : allTestCaseStepIdList) { + deleteTestCaseStepById(testCaseStepId); } return i; } diff --git a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml index 3a94f2d..45d72d7 100644 --- a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml +++ b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml @@ -235,4 +235,9 @@ where case_id = #{caseId} and del_flag = '0' and parent_id is null ORDER BY step_num + + diff --git a/test-ui/src/views/test/case/detail/index.vue b/test-ui/src/views/test/case/detail/index.vue index 0b688bf..228f21f 100644 --- a/test-ui/src/views/test/case/detail/index.vue +++ b/test-ui/src/views/test/case/detail/index.vue @@ -49,11 +49,33 @@ export default { }, saveStep(list) { let p = [] + let index = 1; list.forEach((item) => { item.assertion.pop(); item.assignment.pop(); item.requestHeader.pop(); item.requestParams.pop(); + if (item.stepNum) { + item.stepNum = index; + } + index ++; + let childrenList = item.childrenList; + if (childrenList) { + item.childrenList = null; + let cindex = 1; + childrenList.forEach((children) => { + p.push({ + ...children, + caseId: this.$route.query.id, + stepNum: cindex, + assertion: JSON.stringify(children.assertion), + assignment: JSON.stringify(children.assignment), + requestHeader: JSON.stringify(children.requestHeader), + requestParams: JSON.stringify(children.requestParams) + }); + cindex ++; + }); + } p.push({ ...item, caseId: this.$route.query.id, @@ -63,6 +85,7 @@ export default { requestParams: JSON.stringify(item.requestParams) }); }) + console.log(p) addCaseStep({ caseId: this.$route.query.id, list: p diff --git a/test-ui/src/views/test/case/detail/page1.vue b/test-ui/src/views/test/case/detail/page1.vue index 8724244..ca8d6ad 100644 --- a/test-ui/src/views/test/case/detail/page1.vue +++ b/test-ui/src/views/test/case/detail/page1.vue @@ -179,6 +179,10 @@ export default { type: Array } }, + created() { + // 在这里进行数据预处理 + this.preProcessFormData(); + }, data() { return { activeName: "Headers", @@ -194,6 +198,32 @@ export default { } }, methods: { + preProcessFormData() { + if (typeof this.form.requestHeader === 'string') { + try { + this.form.requestHeader = JSON.parse(this.form.requestHeader); + } catch (e) { + } + } + if (typeof this.form.requestParams === 'string') { + try { + this.form.requestParams = JSON.parse(this.form.requestParams); + } catch (e) { + } + } + if (typeof this.form.assignment === 'string') { + try { + this.form.assignment = JSON.parse(this.form.assignment); + } catch (e) { + } + } + if (typeof this.form.assertion === 'string') { + try { + this.form.assertion = JSON.parse(this.form.assertion); + } catch (e) { + } + } + }, folderHandleSelected(id) { if (id) { this.queryParams.groupId = id; @@ -254,26 +284,22 @@ export default { this.form.apiPort = p.port; this.form.apiProtocol = p.protocol; if (p.header) { - this.form.requestHeader = JSON.parse(p.header); + let newHeader = JSON.parse(p.header); + if (newHeader && newHeader.length > 0) { + this.form.requestHeader = newHeader; + } else { + return; + } this.form.requestHeader.push([{ key: "", value: "", }]) - } else { - this.form.requestHeader = [{ - key: "", - value: "", - }] } } else { this.form.apiHttpId = undefined; this.form.apiHost = undefined; this.form.apiPort = undefined; this.form.apiProtocol = undefined; - this.form.requestHeader = [{ - key: "", - value: "", - }] } }, handleTableEdit(e, flag, scope) { diff --git a/test-ui/src/views/test/case/detail/page3.vue b/test-ui/src/views/test/case/detail/page3.vue index a1c92a7..af1de9f 100644 --- a/test-ui/src/views/test/case/detail/page3.vue +++ b/test-ui/src/views/test/case/detail/page3.vue @@ -65,6 +65,10 @@ export default { }, methods: { handleAdd(type) { + if (!this.form.id) { + this.$modal.msgError("请先保存循环或轮询主步骤再新增子步骤!"); + return; + } this.list.push({ name: "", parentId: this.form.id,