From a64294e86ebcd206efed101247163c5543143870 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Thu, 21 Jan 2021 15:42:07 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96):=20=E8=BF=81=E7=A7=BB=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=8A=A5=E9=94=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/metersphere/api/dto/scenario/Body.java | 17 +++++++++++------ .../service/HistoricalDataUpgradeService.java | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/dto/scenario/Body.java b/backend/src/main/java/io/metersphere/api/dto/scenario/Body.java index de555a7c9f..bbe7959c49 100644 --- a/backend/src/main/java/io/metersphere/api/dto/scenario/Body.java +++ b/backend/src/main/java/io/metersphere/api/dto/scenario/Body.java @@ -3,6 +3,7 @@ package io.metersphere.api.dto.scenario; import io.metersphere.api.dto.scenario.request.BodyFile; import io.metersphere.commons.json.JSONSchemaGenerator; import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; import org.apache.jmeter.protocol.http.util.HTTPFileArg; @@ -81,12 +82,16 @@ public class Body { private HTTPFileArg[] httpFileArgs(String requestId) { List list = new ArrayList<>(); - this.getKvs().stream().filter(KeyValue::isFile).filter(KeyValue::isEnable).forEach(keyValue -> { - setFileArg(list, keyValue.getFiles(), keyValue, requestId); - }); - this.getBinary().stream().filter(KeyValue::isFile).filter(KeyValue::isEnable).forEach(keyValue -> { - setFileArg(list, keyValue.getFiles(), keyValue, requestId); - }); + if (CollectionUtils.isNotEmpty(this.getKvs())) { + this.getKvs().stream().filter(KeyValue::isFile).filter(KeyValue::isEnable).forEach(keyValue -> { + setFileArg(list, keyValue.getFiles(), keyValue, requestId); + }); + } + if (CollectionUtils.isNotEmpty(this.getBinary())) { + this.getBinary().stream().filter(KeyValue::isFile).filter(KeyValue::isEnable).forEach(keyValue -> { + setFileArg(list, keyValue.getFiles(), keyValue, requestId); + }); + } return list.toArray(new HTTPFileArg[0]); } diff --git a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java index 73518b5f92..03d565035c 100644 --- a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java +++ b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java @@ -114,6 +114,7 @@ public class HistoricalDataUpgradeService { } if (request1.getBody() != null && request1.getBody().isOldKV()) { request1.getBody().setType(Body.FORM_DATA); + request1.getBody().setBinary(new ArrayList<>()); } BeanUtils.copyBean(element, request1); ((MsHTTPSamplerProxy) element).setProtocol(RequestType.HTTP); From 96caef2f109e9f67e5c2dbcc3905268445b4fb76 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Thu, 21 Jan 2021 16:53:43 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96):=20=E8=BF=81=E7=A7=BB=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=8A=A5=E9=94=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/HistoricalDataUpgradeService.java | 50 +++++++++++++++---- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java index 03d565035c..d5ed6b340c 100644 --- a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java +++ b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java @@ -18,6 +18,7 @@ import io.metersphere.api.dto.definition.request.sampler.MsJDBCSampler; import io.metersphere.api.dto.definition.request.sampler.MsTCPSampler; import io.metersphere.api.dto.definition.request.timer.MsConstantTimer; import io.metersphere.api.dto.scenario.Body; +import io.metersphere.api.dto.scenario.KeyValue; import io.metersphere.api.dto.scenario.Scenario; import io.metersphere.api.dto.scenario.environment.EnvironmentConfig; import io.metersphere.api.dto.scenario.request.*; @@ -108,13 +109,40 @@ public class HistoricalDataUpgradeService { URL urlObject = new URL(request1.getUrl()); String envPath = StringUtils.equals(urlObject.getPath(), "/") ? "" : urlObject.getPath(); request1.setPath(envPath); + request1.setUrl(null); } catch (Exception ex) { LogUtil.error(ex.getMessage()); } + } else { + request1.setUrl(null); } - if (request1.getBody() != null && request1.getBody().isOldKV()) { - request1.getBody().setType(Body.FORM_DATA); + if (request1.getBody() != null) { request1.getBody().setBinary(new ArrayList<>()); + if (request1.getBody().isOldKV()) { + request1.getBody().setType(Body.FORM_DATA); + } + if ("json".equals(request1.getBody().getFormat())) { + request1.getBody().setType(Body.JSON); + if (CollectionUtils.isEmpty(request1.getHeaders())) { + List headers = new LinkedList<>(); + headers.add(new KeyValue("Content-Type", "application/json")); + request1.setHeaders(headers); + } else { + boolean isJsonType = false; + for (KeyValue keyValue : request1.getHeaders()) { + if ("Content-Type".equals(keyValue.getName())) { + isJsonType = true; + break; + } + } + if (!isJsonType) { + request1.getHeaders().add(new KeyValue("Content-Type", "application/json")); + } + } + } + if ("xml".equals(request1.getBody().getFormat())) { + request1.getBody().setType(Body.XML); + } } BeanUtils.copyBean(element, request1); ((MsHTTPSamplerProxy) element).setProtocol(RequestType.HTTP); @@ -366,14 +394,16 @@ public class HistoricalDataUpgradeService { environmentDTOMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(environments)) { environments.forEach(environment -> { - EnvironmentConfig envConfig = JSONObject.parseObject(environment.getConfig(), EnvironmentConfig.class); - if (CollectionUtils.isNotEmpty(envConfig.getDatabaseConfigs())) { - envConfig.getDatabaseConfigs().forEach(item -> { - EnvironmentDTO dto = new EnvironmentDTO(); - dto.setDatabaseConfig(item); - dto.setEnvironmentId(environment.getId()); - environmentDTOMap.put(item.getId(), dto); - }); + if (environment != null && environment.getConfig() != null) { + EnvironmentConfig envConfig = JSONObject.parseObject(environment.getConfig(), EnvironmentConfig.class); + if (CollectionUtils.isNotEmpty(envConfig.getDatabaseConfigs())) { + envConfig.getDatabaseConfigs().forEach(item -> { + EnvironmentDTO dto = new EnvironmentDTO(); + dto.setDatabaseConfig(item); + dto.setEnvironmentId(environment.getId()); + environmentDTOMap.put(item.getId(), dto); + }); + } } }); } From 0d278cf20bb0e696ae9d033f29e1a4f363324a4a Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Thu, 21 Jan 2021 16:58:57 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96):=20=E8=BF=81=E7=A7=BB=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/service/HistoricalDataUpgradeService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java index d5ed6b340c..489f5b5133 100644 --- a/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java +++ b/backend/src/main/java/io/metersphere/api/service/HistoricalDataUpgradeService.java @@ -321,7 +321,7 @@ public class HistoricalDataUpgradeService { copyDir(dir, BODY_FILE_DIR); } - private void createApiScenarioWithBLOBs(SaveHistoricalDataUpgrade saveHistoricalDataUpgrade, Scenario oldScenario, String scenarioDefinition, ApiScenarioMapper mapper) { + private void createApiScenarioWithBLOBs(SaveHistoricalDataUpgrade saveHistoricalDataUpgrade, Scenario oldScenario, String scenarioDefinition, ApiScenarioMapper mapper, int num) { if (StringUtils.isEmpty(oldScenario.getName())) { oldScenario.setName("默认名称-" + DateUtils.getTimeStr(System.currentTimeMillis())); } @@ -339,7 +339,6 @@ public class HistoricalDataUpgradeService { scenario.setUpdateTime(System.currentTimeMillis()); scenario.setStatus(ScenarioStatus.Underway.name()); scenario.setUserId(SessionUtils.getUserId()); - scenario.setNum(getNextNum(saveHistoricalDataUpgrade.getProjectId())); mapper.updateByPrimaryKeySelective(scenario); } else { scenario = new ApiScenarioWithBLOBs(); @@ -357,7 +356,7 @@ public class HistoricalDataUpgradeService { scenario.setUpdateTime(System.currentTimeMillis()); scenario.setStatus(ScenarioStatus.Underway.name()); scenario.setUserId(SessionUtils.getUserId()); - scenario.setNum(getNextNum(saveHistoricalDataUpgrade.getProjectId())); + scenario.setNum(num); mapper.insert(scenario); } } @@ -371,6 +370,7 @@ public class HistoricalDataUpgradeService { List blobs = apiTestMapper.selectByExampleWithBLOBs(example); SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); ApiScenarioMapper mapper = sqlSession.getMapper(ApiScenarioMapper.class); + int num = getNextNum(saveHistoricalDataUpgrade.getProjectId()); for (ApiTest test : blobs) { // 附件迁移 createBodyFiles(test.getId()); @@ -381,7 +381,8 @@ public class HistoricalDataUpgradeService { for (Scenario scenario : scenarios) { MsScenario scenario1 = createScenario(scenario); String scenarioDefinition = JSON.toJSONString(scenario1); - createApiScenarioWithBLOBs(saveHistoricalDataUpgrade, scenario, scenarioDefinition, mapper); + num++; + createApiScenarioWithBLOBs(saveHistoricalDataUpgrade, scenario, scenarioDefinition, mapper, num); } } } From 5d9cf69916c806eaf3ba2bc6a6280550f0eaccff Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Thu, 21 Jan 2021 17:43:02 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=E5=9C=BA=E6=99=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E7=BC=96=E8=BE=91=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApiAutomationController.java | 6 + .../automation/SaveApiScenarioRequest.java | 13 +++ .../api/service/ApiAutomationService.java | 48 +++++++- .../service/TestPlanScenarioCaseService.java | 12 ++ .../automation/scenario/ApiScenarioList.vue | 110 ++++++++++++++++-- .../api/test/components/jar/JarConfig.vue | 3 +- .../track/case/components/BatchEdit.vue | 17 ++- 7 files changed, 192 insertions(+), 17 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java b/backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java index b460a2c9e0..c23f768f05 100644 --- a/backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java +++ b/backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java @@ -101,6 +101,12 @@ public class ApiAutomationController { return apiAutomationService.run(request); } + @PostMapping("/batch/edit") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public void bathEdit(@RequestBody SaveApiScenarioRequest request) { + apiAutomationService.bathEdit(request); + } + @PostMapping("/getReference") public ReferenceDTO getReference(@RequestBody ApiScenarioRequest request) { return apiAutomationService.getReference(request); diff --git a/backend/src/main/java/io/metersphere/api/dto/automation/SaveApiScenarioRequest.java b/backend/src/main/java/io/metersphere/api/dto/automation/SaveApiScenarioRequest.java index 92f8843220..1f73ee1804 100644 --- a/backend/src/main/java/io/metersphere/api/dto/automation/SaveApiScenarioRequest.java +++ b/backend/src/main/java/io/metersphere/api/dto/automation/SaveApiScenarioRequest.java @@ -19,6 +19,8 @@ public class SaveApiScenarioRequest { private String apiScenarioModuleId; + private String environmentId; + private String modulePath; private String name; @@ -40,4 +42,15 @@ public class SaveApiScenarioRequest { private MsTestElement scenarioDefinition; List bodyUploadIds; + + private List scenarioIds; + + private boolean isSelectAllDate; + + private List filters; + + private List moduleIds; + + private List unSelectIds; + } diff --git a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java index 3b990d587a..2c3c25b5e6 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java @@ -24,10 +24,7 @@ import io.metersphere.base.mapper.ext.ExtTestPlanMapper; import io.metersphere.base.mapper.ext.ExtTestPlanScenarioCaseMapper; import io.metersphere.commons.constants.*; import io.metersphere.commons.exception.MSException; -import io.metersphere.commons.utils.DateUtils; -import io.metersphere.commons.utils.LogUtil; -import io.metersphere.commons.utils.ServiceUtils; -import io.metersphere.commons.utils.SessionUtils; +import io.metersphere.commons.utils.*; import io.metersphere.i18n.Translator; import io.metersphere.job.sechedule.ApiScenarioTestJob; import io.metersphere.service.ScheduleService; @@ -35,6 +32,7 @@ import io.metersphere.track.dto.TestPlanDTO; import io.metersphere.track.request.testcase.ApiCaseRelevanceRequest; import io.metersphere.track.request.testcase.QueryTestPlanRequest; import io.metersphere.track.request.testplan.FileOperationRequest; +import io.metersphere.track.service.TestPlanScenarioCaseService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.ExecutorType; @@ -45,6 +43,7 @@ import org.apache.jorphan.collections.ListedHashTree; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -81,6 +80,9 @@ public class ApiAutomationService { SqlSessionFactory sqlSessionFactory; @Resource private ApiScenarioReportMapper apiScenarioReportMapper; + @Resource + @Lazy + private TestPlanScenarioCaseService testPlanScenarioCaseService; public List list(ApiScenarioRequest request) { request = this.initRequest(request,true,true); @@ -199,6 +201,7 @@ public class ApiAutomationService { public void delete(String id) { //及连删除外键表 this.preDelete(id); + testPlanScenarioCaseService.deleteByScenarioId(id); apiScenarioMapper.deleteByPrimaryKey(id); } @@ -589,6 +592,12 @@ public class ApiAutomationService { return apiScenarioMapper.selectByExample(example); } + public List selectByIdsWithBLOBs(List ids) { + ApiScenarioExample example = new ApiScenarioExample(); + example.createCriteria().andIdIn(ids); + return apiScenarioMapper.selectByExampleWithBLOBs(example); + } + public void createSchedule(Schedule request) { Schedule schedule = scheduleService.buildApiTestSchedule(request); schedule.setJob(ApiScenarioTestJob.class.getName()); @@ -641,4 +650,35 @@ public class ApiAutomationService { dto.setXml(jmx); return dto; } + + public void bathEdit(SaveApiScenarioRequest request) { + if (request.isSelectAllDate()) { + request.setScenarioIds(this.getAllScenarioIdsByFontedSelect( + request.getModuleIds(), request.getName(), request.getProjectId(), request.getFilters(), request.getUnSelectIds())); + } + if (StringUtils.isNotBlank(request.getEnvironmentId())) { + bathEditEnv(request); + return; + } + ApiScenarioExample apiScenarioExample = new ApiScenarioExample(); + apiScenarioExample.createCriteria().andIdIn(request.getScenarioIds()); + ApiScenarioWithBLOBs apiScenarioWithBLOBs = new ApiScenarioWithBLOBs(); + BeanUtils.copyBean(apiScenarioWithBLOBs, request); + apiScenarioWithBLOBs.setUpdateTime(System.currentTimeMillis()); + apiScenarioMapper.updateByExampleSelective( + apiScenarioWithBLOBs, + apiScenarioExample); + } + + public void bathEditEnv(SaveApiScenarioRequest request) { + if (StringUtils.isNotBlank(request.getEnvironmentId())) { + List apiScenarios = selectByIdsWithBLOBs(request.getScenarioIds()); + apiScenarios.forEach(item -> { + JSONObject object = JSONObject.parseObject(item.getScenarioDefinition()); + object.put("environmentId", request.getEnvironmentId()); + item.setScenarioDefinition(JSONObject.toJSONString(object)); + apiScenarioMapper.updateByPrimaryKeySelective(item); + }); + } + } } diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java index 683fe4cee1..e4a081ea73 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java @@ -120,4 +120,16 @@ public class TestPlanScenarioCaseService { request.setPlanId(planId); deleteApiCaseBath(request); } + + public void bathDeleteByScenarioIds(List ids) { + TestPlanApiScenarioExample example = new TestPlanApiScenarioExample(); + example.createCriteria().andApiScenarioIdIn(ids); + testPlanApiScenarioMapper.deleteByExample(example); + } + + public void deleteByScenarioId(String id) { + TestPlanApiScenarioExample example = new TestPlanApiScenarioExample(); + example.createCriteria().andApiScenarioIdEqualTo(id); + testPlanApiScenarioMapper.deleteByExample(example); + } } diff --git a/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue b/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue index c781436248..7d66476206 100644 --- a/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue +++ b/frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue @@ -102,6 +102,12 @@ + + + + @@ -120,10 +126,15 @@ import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton"; import PriorityTableItem from "../../../track/common/tableItems/planview/PriorityTableItem"; import PlanStatusTableItem from "../../../track/common/tableItems/plan/PlanStatusTableItem"; + import BatchEdit from "../../../track/case/components/BatchEdit"; + import {WORKSPACE_ID} from "../../../../../common/js/constants"; + import EnvironmentSelect from "../../definition/components/environment/EnvironmentSelect"; export default { name: "MsApiScenarioList", components: { + EnvironmentSelect, + BatchEdit, PlanStatusTableItem, PriorityTableItem, MsTableSelectAll, @@ -176,13 +187,42 @@ buttons: [ { name: this.$t('api_test.automation.batch_add_plan'), handleClick: this.handleBatchAddCase - }, { + }, + { + name: this.$t('test_track.case.batch_edit_case'), handleClick: this.handleBatchEdit + }, + { name: this.$t('api_test.automation.batch_execute'), handleClick: this.handleBatchExecute - } + }, + + // { + // name: this.$t('test_track.case.batch_move_case'), handleClick: this.handleBatchMove + // } ], isSelectAllDate: false, unSelection: [], selectDataCounts: 0, + typeArr: [ + {id: 'level', name: this.$t('test_track.case.priority')}, + {id: 'status', name: this.$t('test_track.plan.plan_status')}, + {id: 'principal', name: this.$t('api_test.definition.request.responsible'), optionMethod: this.getPrincipalOptions}, + {id: 'environmentId', name: this.$t('api_test.definition.request.run_env'), optionMethod: this.getEnvsOptions}, + ], + valueArr: { + level: [ + {name: 'P0', id: 'P0'}, + {name: 'P1', id: 'P1'}, + {name: 'P2', id: 'P2'}, + {name: 'P3', id: 'P3'} + ], + status: [ + {name: this.$t('test_track.plan.plan_status_prepare'), id: 'Prepare'}, + {name: this.$t('test_track.plan.plan_status_running'), id: 'Underway'}, + {name: this.$t('test_track.plan.plan_status_completed'), id: 'Completed'} + ], + principal: [], + environmentId: [] + }, } }, created() { @@ -279,6 +319,57 @@ handleBatchAddCase() { this.planVisible = true; }, + handleDeleteBatch() { + this.$alert(this.$t('test_track.case.delete_confirm') + "?", '', { + confirmButtonText: this.$t('commons.confirm'), + callback: (action) => { + if (action === 'confirm') { + let ids = Array.from(this.selectRows).map(row => row.id); + this.$post('/test/case/batch/delete', {ids: ids}, () => { + this.selectRows.clear(); + this.$emit("refresh"); + this.$success(this.$t('commons.delete_success')); + // 发送广播,刷新 head 上的最新列表 + }); + } + } + }); + }, + handleBatchEdit() { + this.$refs.batchEdit.open(this.selectDataCounts); + }, + handleBatchMove() { + this.$emit("batchMove", Array.from(this.selectRows).map(row => row.id)); + }, + batchEdit(form) { + let arr = this.selection; + let ids = this.selection; + let param = {}; + param[form.type] = form.value; + this.buildBatchParam(param); + this.$post('/api/automation/batch/edit', param, () => { + this.$success(this.$t('commons.save_success')); + this.search(); + }); + }, + getPrincipalOptions(option) { + let workspaceId = localStorage.getItem(WORKSPACE_ID); + this.$post('/user/ws/member/tester/list', {workspaceId: workspaceId}, response => { + option.push(...response.data); + }); + }, + getEnvsOptions(option) { + this.$get('/api/environment/list/' + this.projectId, response => { + option.push(...response.data); + option.forEach(environment => { + if (!(environment.config instanceof Object)) { + environment.config = JSON.parse(environment.config); + } + environment.name = environment.name + (environment.config.httpConfig.socket ? + (': ' + environment.config.httpConfig.protocol + '://' + environment.config.httpConfig.socket) : ''); + }); + }); + }, addTestPlan(plans) { let obj = {planIds: plans, scenarioIds: this.selection}; @@ -316,18 +407,19 @@ }); } }, + buildBatchParam(param) { + param.scenarioIds = this.selection; + param.projectId = getCurrentProjectID(); + param.selectAllDate = this.isSelectAllDate; + param.unSelectIds = this.unSelection; + param = Object.assign(param, this.condition); + }, handleBatchExecute() { this.infoDb = false; let url = "/api/automation/run/batch"; let run = {}; - let scenarioIds = this.selection; run.id = getUUID(); - run.scenarioIds = scenarioIds; - run.projectId = getCurrentProjectID(); - run.selectAllDate = this.isSelectAllDate; - run.unSelectIds = this.unSelection; - - run = Object.assign(run, this.condition); + this.buildBatchParam(run); this.$post(url, run, response => { let data = response.data; this.runVisible = false; diff --git a/frontend/src/business/components/api/test/components/jar/JarConfig.vue b/frontend/src/business/components/api/test/components/jar/JarConfig.vue index 657a4e772b..3380217048 100644 --- a/frontend/src/business/components/api/test/components/jar/JarConfig.vue +++ b/frontend/src/business/components/api/test/components/jar/JarConfig.vue @@ -9,13 +9,12 @@