Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
ca26657e
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ca26657e
编写于
3月 17, 2021
作者:
C
chenjianxing
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of github.com:metersphere/metersphere
上级
03818c53
41d7619d
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
74 addition
and
141 deletion
+74
-141
backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java
...o/metersphere/api/controller/ApiAutomationController.java
+1
-1
backend/src/main/java/io/metersphere/api/dto/automation/ApiScenarioDTO.java
...ava/io/metersphere/api/dto/automation/ApiScenarioDTO.java
+2
-0
backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java
...java/io/metersphere/api/service/ApiAutomationService.java
+26
-26
backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml
...a/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml
+0
-2
backend/src/main/java/io/metersphere/track/service/TestCaseReviewScenarioCaseService.java
...here/track/service/TestCaseReviewScenarioCaseService.java
+0
-37
backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java
...etersphere/track/service/TestPlanScenarioCaseService.java
+0
-31
frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue
...ss/components/api/automation/scenario/ApiScenarioList.vue
+3
-11
frontend/src/business/components/api/automation/scenario/testplan/TestPlanList.vue
...ponents/api/automation/scenario/testplan/TestPlanList.vue
+8
-3
frontend/src/business/components/performance/report/PerformanceTestReportList.vue
...mponents/performance/report/PerformanceTestReportList.vue
+2
-6
frontend/src/business/components/performance/report/components/PerformancePressureConfig.vue
...rformance/report/components/PerformancePressureConfig.vue
+3
-3
frontend/src/business/components/performance/router.js
frontend/src/business/components/performance/router.js
+2
-2
frontend/src/business/components/track/case/components/BatchEdit.vue
...c/business/components/track/case/components/BatchEdit.vue
+19
-6
frontend/src/business/components/track/plan/view/comonents/api/RelevanceScenarioList.vue
...s/track/plan/view/comonents/api/RelevanceScenarioList.vue
+5
-2
frontend/src/business/components/track/plan/view/comonents/api/TestCaseScenarioRelevance.vue
...ack/plan/view/comonents/api/TestCaseScenarioRelevance.vue
+1
-5
frontend/src/business/components/track/plan/view/comonents/api/TestPlanApiScenarioList.vue
...track/plan/view/comonents/api/TestPlanApiScenarioList.vue
+2
-6
未找到文件。
backend/src/main/java/io/metersphere/api/controller/ApiAutomationController.java
浏览文件 @
ca26657e
...
...
@@ -86,7 +86,7 @@ public class ApiAutomationController {
}
@GetMapping
(
"/getApiScenario/{id}"
)
public
ApiScenario
getScenarioDefinition
(
@PathVariable
String
id
)
{
public
ApiScenario
DTO
getScenarioDefinition
(
@PathVariable
String
id
)
{
return
apiAutomationService
.
getApiScenario
(
id
);
}
...
...
backend/src/main/java/io/metersphere/api/dto/automation/ApiScenarioDTO.java
浏览文件 @
ca26657e
...
...
@@ -18,4 +18,6 @@ public class ApiScenarioDTO extends ApiScenarioWithBLOBs {
* 场景跨项目ID
*/
private
List
<
String
>
projectIds
;
private
String
caseId
;
}
backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java
浏览文件 @
ca26657e
...
...
@@ -94,42 +94,38 @@ public class ApiAutomationService {
public
List
<
ApiScenarioDTO
>
list
(
ApiScenarioRequest
request
)
{
request
=
this
.
initRequest
(
request
,
true
,
true
);
List
<
ApiScenarioDTO
>
list
=
extApiScenarioMapper
.
list
(
request
);
setApiScenarioProjectIds
(
list
);
return
list
;
}
public
List
<
ApiScenarioDTO
>
listReview
(
ApiScenarioRequest
request
)
{
request
=
this
.
initRequest
(
request
,
true
,
true
);
List
<
ApiScenarioDTO
>
list
=
extApiScenarioMapper
.
listReview
(
request
);
setApiScenarioProjectIds
(
list
);
return
list
;
}
private
void
setApiScenarioProjectIds
(
List
<
ApiScenarioDTO
>
list
)
{
private
void
setApiScenarioProjectIds
(
ApiScenarioDTO
data
)
{
// 如果场景步骤涉及多项目,则把涉及到的项目ID保存在projectIds属性
list
.
forEach
(
data
->
{
List
<
String
>
idList
=
new
ArrayList
<>();
String
definition
=
data
.
getScenarioDefinition
();
if
(
StringUtils
.
isNotBlank
(
definition
))
{
RunDefinitionRequest
d
=
JSON
.
parseObject
(
definition
,
RunDefinitionRequest
.
class
);
if
(
d
!=
null
)
{
Map
<
String
,
String
>
map
=
d
.
getEnvironmentMap
();
if
(
map
!=
null
)
{
if
(
map
.
isEmpty
())
{
List
<
String
>
ids
=
(
List
<
String
>)
JSONPath
.
read
(
definition
,
"$..projectId"
);
idList
.
addAll
(
new
HashSet
<>(
ids
));
}
else
{
Set
<
String
>
set
=
d
.
getEnvironmentMap
().
keySet
();
idList
=
new
ArrayList
<>(
set
);
}
List
<
String
>
idList
=
new
ArrayList
<>();
String
definition
=
data
.
getScenarioDefinition
();
if
(
StringUtils
.
isNotBlank
(
definition
))
{
RunDefinitionRequest
d
=
JSON
.
parseObject
(
definition
,
RunDefinitionRequest
.
class
);
if
(
d
!=
null
)
{
Map
<
String
,
String
>
map
=
d
.
getEnvironmentMap
();
if
(
map
!=
null
)
{
if
(
map
.
isEmpty
())
{
List
<
String
>
ids
=
(
List
<
String
>)
JSONPath
.
read
(
definition
,
"$..projectId"
);
idList
.
addAll
(
new
HashSet
<>(
ids
));
}
else
{
// 兼容历史数据,无EnvironmentMap直接赋值场景所属项目
idList
.
add
(
data
.
getProjectId
()
);
Set
<
String
>
set
=
d
.
getEnvironmentMap
().
keySet
();
idList
=
new
ArrayList
<>(
set
);
}
}
else
{
// 兼容历史数据,无EnvironmentMap直接赋值场景所属项目
idList
.
add
(
data
.
getProjectId
());
}
}
data
.
setProjectIds
(
idList
);
});
}
data
.
setProjectIds
(
idList
);
}
/**
...
...
@@ -333,8 +329,12 @@ public class ApiAutomationService {
}
}
public
ApiScenarioWithBLOBs
getApiScenario
(
String
id
)
{
return
apiScenarioMapper
.
selectByPrimaryKey
(
id
);
public
ApiScenarioDTO
getApiScenario
(
String
id
)
{
ApiScenarioDTO
apiScenarioDTO
=
new
ApiScenarioDTO
();
ApiScenarioWithBLOBs
scenarioWithBLOBs
=
apiScenarioMapper
.
selectByPrimaryKey
(
id
);
BeanUtils
.
copyBean
(
apiScenarioDTO
,
scenarioWithBLOBs
);
setApiScenarioProjectIds
(
apiScenarioDTO
);
return
apiScenarioDTO
;
}
public
List
<
ApiScenarioWithBLOBs
>
getApiScenarios
(
List
<
String
>
ids
)
{
...
...
backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioMapper.xml
浏览文件 @
ca26657e
...
...
@@ -134,7 +134,6 @@
</sql>
<select
id=
"list"
resultMap=
"BaseResultMap"
>
select api_scenario.id, api_scenario.project_id, api_scenario.tags, api_scenario.user_id, api_scenario.num,
api_scenario.scenario_definition,
api_scenario.api_scenario_module_id,api_scenario.module_path, api_scenario.name, api_scenario.level,
api_scenario.status, api_scenario.principal, api_scenario.step_total, api_scenario.follow_people,
api_scenario.last_result,api_scenario.pass_rate,api_scenario.report_id,
...
...
@@ -339,7 +338,6 @@
</select>
<select
id=
"listReview"
resultMap=
"BaseResultMap"
>
select api_scenario.id, api_scenario.project_id, api_scenario.tags, api_scenario.user_id, api_scenario.num,
api_scenario.scenario_definition,
api_scenario.api_scenario_module_id,api_scenario.module_path, api_scenario.name, api_scenario.level,
api_scenario.status, api_scenario.principal, api_scenario.step_total, api_scenario.follow_people,
api_scenario.last_result,api_scenario.pass_rate,api_scenario.report_id,
...
...
backend/src/main/java/io/metersphere/track/service/TestCaseReviewScenarioCaseService.java
浏览文件 @
ca26657e
package
io.metersphere.track.service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONPath
;
import
io.metersphere.api.dto.automation.ApiScenarioDTO
;
import
io.metersphere.api.dto.automation.ApiScenarioRequest
;
import
io.metersphere.api.dto.automation.RunScenarioRequest
;
import
io.metersphere.api.dto.automation.TestPlanScenarioRequest
;
import
io.metersphere.api.dto.definition.RunDefinitionRequest
;
import
io.metersphere.api.service.ApiAutomationService
;
import
io.metersphere.api.service.ApiScenarioReportService
;
import
io.metersphere.base.domain.TestCaseReviewScenario
;
import
io.metersphere.base.domain.TestCaseReviewScenarioExample
;
import
io.metersphere.base.domain.TestPlanApiScenario
;
import
io.metersphere.base.domain.TestPlanApiScenarioExample
;
import
io.metersphere.base.mapper.TestCaseReviewScenarioMapper
;
import
io.metersphere.base.mapper.TestPlanApiScenarioMapper
;
import
io.metersphere.base.mapper.ext.ExtTestCaseReviewScenarioCaseMapper
;
import
io.metersphere.base.mapper.ext.ExtTestPlanScenarioCaseMapper
;
import
io.metersphere.commons.constants.ApiRunMode
;
import
io.metersphere.commons.utils.ServiceUtils
;
import
io.metersphere.track.dto.RelevanceScenarioRequest
;
...
...
@@ -45,46 +39,15 @@ public class TestCaseReviewScenarioCaseService {
request
.
setProjectId
(
null
);
request
.
setOrders
(
ServiceUtils
.
getDefaultOrder
(
request
.
getOrders
()));
List
<
ApiScenarioDTO
>
apiTestCases
=
extTestCaseReviewScenarioCaseMapper
.
list
(
request
);
setApiScenarioProjectIds
(
apiTestCases
);
if
(
CollectionUtils
.
isEmpty
(
apiTestCases
))
{
return
apiTestCases
;
}
return
apiTestCases
;
}
private
void
setApiScenarioProjectIds
(
List
<
ApiScenarioDTO
>
list
)
{
// 如果场景步骤涉及多项目,则把涉及到的项目ID保存在projectIds属性
list
.
forEach
(
data
->
{
List
<
String
>
idList
=
new
ArrayList
<>();
String
definition
=
data
.
getScenarioDefinition
();
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
definition
))
{
RunDefinitionRequest
d
=
JSON
.
parseObject
(
definition
,
RunDefinitionRequest
.
class
);
if
(
d
!=
null
)
{
Map
<
String
,
String
>
map
=
d
.
getEnvironmentMap
();
if
(
map
!=
null
)
{
if
(
map
.
isEmpty
())
{
List
<
String
>
ids
=
(
List
<
String
>)
JSONPath
.
read
(
definition
,
"$..projectId"
);
idList
.
addAll
(
new
HashSet
<>(
ids
));
}
else
{
Set
<
String
>
set
=
d
.
getEnvironmentMap
().
keySet
();
idList
=
new
ArrayList
<>(
set
);
}
}
else
{
// 兼容历史数据,无EnvironmentMap直接赋值场景所属项目
idList
.
add
(
data
.
getProjectId
());
}
}
}
data
.
setProjectIds
(
idList
);
});
}
public
List
<
ApiScenarioDTO
>
relevanceList
(
ApiScenarioRequest
request
)
{
request
.
setNotInTestPlan
(
true
);
List
<
ApiScenarioDTO
>
list
=
apiAutomationService
.
listReview
(
request
);
setApiScenarioProjectIds
(
list
);
return
list
;
}
...
...
backend/src/main/java/io/metersphere/track/service/TestPlanScenarioCaseService.java
浏览文件 @
ca26657e
...
...
@@ -42,46 +42,15 @@ public class TestPlanScenarioCaseService {
request
.
setProjectId
(
null
);
request
.
setOrders
(
ServiceUtils
.
getDefaultOrder
(
request
.
getOrders
()));
List
<
ApiScenarioDTO
>
apiTestCases
=
extTestPlanScenarioCaseMapper
.
list
(
request
);
setApiScenarioProjectIds
(
apiTestCases
);
if
(
CollectionUtils
.
isEmpty
(
apiTestCases
))
{
return
apiTestCases
;
}
return
apiTestCases
;
}
private
void
setApiScenarioProjectIds
(
List
<
ApiScenarioDTO
>
list
)
{
// 如果场景步骤涉及多项目,则把涉及到的项目ID保存在projectIds属性
list
.
forEach
(
data
->
{
List
<
String
>
idList
=
new
ArrayList
<>();
String
definition
=
data
.
getScenarioDefinition
();
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
definition
))
{
RunDefinitionRequest
d
=
JSON
.
parseObject
(
definition
,
RunDefinitionRequest
.
class
);
if
(
d
!=
null
)
{
Map
<
String
,
String
>
map
=
d
.
getEnvironmentMap
();
if
(
map
!=
null
)
{
if
(
map
.
isEmpty
())
{
List
<
String
>
ids
=
(
List
<
String
>)
JSONPath
.
read
(
definition
,
"$..projectId"
);
idList
.
addAll
(
new
HashSet
<>(
ids
));
}
else
{
Set
<
String
>
set
=
d
.
getEnvironmentMap
().
keySet
();
idList
=
new
ArrayList
<>(
set
);
}
}
else
{
// 兼容历史数据,无EnvironmentMap直接赋值场景所属项目
idList
.
add
(
data
.
getProjectId
());
}
}
}
data
.
setProjectIds
(
idList
);
});
}
public
List
<
ApiScenarioDTO
>
relevanceList
(
ApiScenarioRequest
request
)
{
request
.
setNotInTestPlan
(
true
);
List
<
ApiScenarioDTO
>
list
=
apiAutomationService
.
list
(
request
);
setApiScenarioProjectIds
(
list
);
return
list
;
}
...
...
frontend/src/business/components/api/automation/scenario/ApiScenarioList.vue
浏览文件 @
ca26657e
...
...
@@ -439,7 +439,7 @@
},
handleBatchEdit
()
{
this
.
$refs
.
batchEdit
.
open
(
this
.
selectDataCounts
);
this
.
$refs
.
batchEdit
.
setScenarioSelectRows
(
this
.
selectRows
);
this
.
$refs
.
batchEdit
.
setScenarioSelectRows
(
this
.
selectRows
,
"
scenario
"
);
},
handleBatchMove
()
{
this
.
$refs
.
testBatchMove
.
open
(
this
.
moduleTree
,
[],
this
.
moduleOptions
);
...
...
@@ -457,11 +457,7 @@
// 批量修改环境
if
(
form
.
type
===
'
projectEnv
'
)
{
let
param
=
{};
let
map
=
new
Map
();
this
.
selectRows
.
forEach
(
row
=>
{
map
.
set
(
row
.
id
,
row
.
projectIds
);
})
param
.
mapping
=
strMapToObj
(
map
);
param
.
mapping
=
strMapToObj
(
form
.
map
);
param
.
envMap
=
strMapToObj
(
form
.
projectEnvMap
);
this
.
$post
(
'
/api/automation/batch/update/env
'
,
param
,
()
=>
{
this
.
$success
(
this
.
$t
(
'
commons.save_success
'
));
...
...
@@ -519,11 +515,7 @@
this
.
planVisible
=
false
;
let
map
=
new
Map
();
this
.
selectRows
.
forEach
(
row
=>
{
map
.
set
(
row
.
id
,
row
.
projectIds
);
})
obj
.
mapping
=
strMapToObj
(
map
);
obj
.
mapping
=
strMapToObj
(
params
[
2
]);
obj
.
envMap
=
strMapToObj
(
params
[
1
]);
this
.
$post
(
"
/api/automation/scenario/plan
"
,
obj
,
response
=>
{
...
...
frontend/src/business/components/api/automation/scenario/testplan/TestPlanList.vue
浏览文件 @
ca26657e
...
...
@@ -195,7 +195,8 @@ export default {
],
projectEnvMap
:
new
Map
(),
projectList
:
[],
projectIds
:
new
Set
()
projectIds
:
new
Set
(),
map
:
new
Map
(),
}
},
watch
:
{
...
...
@@ -221,7 +222,7 @@ export default {
if
(
!
sign
)
{
return
false
;
}
this
.
$emit
(
'
addTestPlan
'
,
this
.
selection
,
this
.
projectEnvMap
);
this
.
$emit
(
'
addTestPlan
'
,
this
.
selection
,
this
.
projectEnvMap
,
this
.
map
);
}
},
cancel
(){
...
...
@@ -237,7 +238,11 @@ export default {
setScenarioSelectRows
(
rows
)
{
this
.
projectIds
.
clear
();
rows
.
forEach
(
row
=>
{
row
.
projectIds
.
forEach
(
id
=>
this
.
projectIds
.
add
(
id
));
this
.
result
=
this
.
$get
(
'
/api/automation/getApiScenario/
'
+
row
.
id
,
res
=>
{
let
data
=
res
.
data
;
data
.
projectIds
.
forEach
(
d
=>
this
.
projectIds
.
add
(
d
));
this
.
map
.
set
(
row
.
id
,
data
.
projectIds
);
})
})
},
initTableData
()
{
...
...
frontend/src/business/components/performance/report/PerformanceTestReport.vue
→
frontend/src/business/components/performance/report/PerformanceTestReport
List
.vue
浏览文件 @
ca26657e
...
...
@@ -93,7 +93,7 @@ import MsTablePagination from "../../common/pagination/TablePagination";
import
MsContainer
from
"
../../common/components/MsContainer
"
;
import
MsMainContainer
from
"
../../common/components/MsMainContainer
"
;
import
MsPerformanceReportStatus
from
"
./PerformanceReportStatus
"
;
import
{
getCurrentProjectID
}
from
"
../../../..
/common/js/utils
"
;
import
{
getCurrentProjectID
}
from
"
@
/common/js/utils
"
;
import
MsTableOperatorButton
from
"
../../common/components/MsTableOperatorButton
"
;
import
ReportTriggerModeItem
from
"
../../common/tableItem/ReportTriggerModeItem
"
;
import
{
REPORT_CONFIGS
}
from
"
../../common/components/search/search-components
"
;
...
...
@@ -104,7 +104,7 @@ import {_filter, _sort} from "@/common/js/tableUtils";
export
default
{
name
:
"
PerformanceTestReport
"
,
name
:
"
PerformanceTestReport
List
"
,
components
:
{
MsTableHeader
,
ReportTriggerModeItem
,
...
...
@@ -186,10 +186,6 @@ export default {
this
.
multipleSelection
=
val
;
},
handleEdit
(
report
)
{
if
(
report
.
status
===
"
Starting
"
)
{
this
.
$info
(
this
.
$t
(
'
report.being_generated
'
))
return
false
}
this
.
$router
.
push
({
path
:
'
/performance/report/view/
'
+
report
.
id
})
...
...
frontend/src/business/components/performance/report/components/PerformancePressureConfig.vue
浏览文件 @
ca26657e
...
...
@@ -46,10 +46,10 @@
</el-form-item>
<br>
<el-form-item
:label=
"$t('load_test.rps_limit')"
>
<el-switch
v-model=
"threadGroup.rpsLimitEnable"
@
change=
"calculateTotalChart()"
/>
<el-switch
v-model=
"threadGroup.rpsLimitEnable"
:disabled=
"true"
@
change=
"calculateTotalChart()"
/>
<el-input-number
:disabled=
"true
"
:disabled=
"true"
v-model=
"threadGroup.rpsLimit"
@
change=
"calculateChart(threadGroup)"
:min=
"1"
...
...
@@ -101,7 +101,7 @@
</el-form-item>
<br>
<el-form-item
:label=
"$t('load_test.rps_limit')"
>
<el-switch
v-model=
"threadGroup.rpsLimitEnable"
@
change=
"calculateTotalChart()"
/>
<el-switch
v-model=
"threadGroup.rpsLimitEnable"
:disabled=
"true"
@
change=
"calculateTotalChart()"
/>
<el-input-number
:disabled=
"true || !threadGroup.rpsLimitEnable"
...
...
frontend/src/business/components/performance/router.js
浏览文件 @
ca26657e
...
...
@@ -4,7 +4,7 @@ const PerformanceTest = () => import('@/business/components/performance/Performa
const
PerformanceTestHome
=
()
=>
import
(
'
@/business/components/performance/home/PerformanceTestHome
'
)
const
EditPerformanceTest
=
()
=>
import
(
'
@/business/components/performance/test/EditPerformanceTest
'
)
const
PerformanceTestList
=
()
=>
import
(
'
@/business/components/performance/test/PerformanceTestList
'
)
const
PerformanceTestReport
=
()
=>
import
(
'
@/business/components/performance/report/PerformanceTestRepor
t
'
)
const
PerformanceTestReport
List
=
()
=>
import
(
'
@/business/components/performance/report/PerformanceTestReportLis
t
'
)
const
PerformanceChart
=
()
=>
import
(
'
@/business/components/performance/report/components/PerformanceChart
'
)
const
PerformanceReportView
=
()
=>
import
(
'
@/business/components/performance/report/PerformanceReportView
'
)
...
...
@@ -51,7 +51,7 @@ export default {
{
path
:
"
report/:type
"
,
name
:
"
perReport
"
,
component
:
PerformanceTestReport
component
:
PerformanceTestReport
List
},
{
path
:
"
chart
"
,
...
...
frontend/src/business/components/track/case/components/BatchEdit.vue
浏览文件 @
ca26657e
...
...
@@ -7,6 +7,7 @@
class=
"batch-edit-dialog"
:destroy-on-close=
"true"
@
close=
"handleClose"
v-loading=
"result.loading"
>
<el-form
:model=
"form"
label-position=
"right"
label-width=
"150px"
size=
"medium"
ref=
"form"
:rules=
"rules"
>
<el-form-item
:label=
"$t('test_track.case.batch_update', [size])"
prop=
"type"
>
...
...
@@ -72,7 +73,10 @@
projectList
:
[],
projectIds
:
new
Set
(),
selectRows
:
new
Set
(),
projectEnvMap
:
new
Map
()
projectEnvMap
:
new
Map
(),
map
:
new
Map
(),
isScenario
:
''
,
result
:
{}
}
},
methods
:
{
...
...
@@ -84,6 +88,7 @@
if
(
!
this
.
$refs
.
envPopover
.
checkEnv
())
{
return
false
;
}
this
.
form
.
map
=
this
.
map
;
}
this
.
$emit
(
"
batchEdit
"
,
this
.
form
);
this
.
dialogVisible
=
false
;
...
...
@@ -113,12 +118,9 @@
this
.
projectIds
.
add
(
row
.
projectId
)
})
},
setScenarioSelectRows
(
rows
)
{
setScenarioSelectRows
(
rows
,
sign
)
{
this
.
selectRows
=
rows
;
this
.
projectIds
.
clear
();
this
.
selectRows
.
forEach
(
row
=>
{
row
.
projectIds
.
forEach
(
id
=>
this
.
projectIds
.
add
(
id
));
})
this
.
isScenario
=
sign
;
},
handleClose
()
{
this
.
form
=
{};
...
...
@@ -127,6 +129,17 @@
},
changeType
(
val
)
{
this
.
$set
(
this
.
form
,
"
value
"
,
""
);
if
(
val
===
'
projectEnv
'
&&
this
.
isScenario
!==
''
)
{
this
.
projectIds
.
clear
();
this
.
selectRows
.
forEach
(
row
=>
{
let
id
=
this
.
isScenario
===
'
scenario
'
?
row
.
id
:
row
.
caseId
;
this
.
result
=
this
.
$get
(
'
/api/automation/getApiScenario/
'
+
id
,
res
=>
{
let
data
=
res
.
data
;
data
.
projectIds
.
forEach
(
d
=>
this
.
projectIds
.
add
(
d
));
this
.
map
.
set
(
row
.
id
,
data
.
projectIds
);
})
})
}
this
.
filterable
=
val
===
"
maintainer
"
||
val
===
"
executor
"
;
this
.
options
=
this
.
valueArr
[
val
];
this
.
typeArr
.
forEach
(
item
=>
{
...
...
frontend/src/business/components/track/plan/view/comonents/api/RelevanceScenarioList.vue
浏览文件 @
ca26657e
...
...
@@ -93,6 +93,7 @@
projectEnvMap
:
new
Map
(),
projectList
:
[],
projectIds
:
new
Set
(),
map
:
new
Map
()
}
},
watch
:
{
...
...
@@ -159,8 +160,10 @@
initProjectIds
()
{
this
.
projectIds
.
clear
();
this
.
selectRows
.
forEach
(
row
=>
{
row
.
projectIds
.
forEach
(
id
=>
{
this
.
projectIds
.
add
(
id
);
this
.
result
=
this
.
$get
(
'
/api/automation/getApiScenario/
'
+
row
.
id
,
res
=>
{
let
data
=
res
.
data
;
data
.
projectIds
.
forEach
(
d
=>
this
.
projectIds
.
add
(
d
));
this
.
map
.
set
(
row
.
id
,
data
.
projectIds
);
})
})
},
...
...
frontend/src/business/components/track/plan/view/comonents/api/TestCaseScenarioRelevance.vue
浏览文件 @
ca26657e
...
...
@@ -104,12 +104,8 @@
}
let
param
=
{};
let
url
=
'
/api/automation/relevance
'
;
let
rows
=
this
.
$refs
.
apiScenarioList
.
selectRows
;
const
envMap
=
this
.
$refs
.
apiScenarioList
.
projectEnvMap
;
let
map
=
new
Map
();
rows
.
forEach
(
row
=>
{
map
.
set
(
row
.
id
,
row
.
projectIds
);
})
let
map
=
this
.
$refs
.
apiScenarioList
.
map
;
param
.
planId
=
this
.
planId
;
param
.
mapping
=
strMapToObj
(
map
);
param
.
envMap
=
strMapToObj
(
envMap
);
...
...
frontend/src/business/components/track/plan/view/comonents/api/TestPlanApiScenarioList.vue
浏览文件 @
ca26657e
...
...
@@ -358,15 +358,11 @@ export default {
},
handleBatchEdit
()
{
this
.
$refs
.
batchEdit
.
open
(
this
.
selectRows
.
size
);
this
.
$refs
.
batchEdit
.
setScenarioSelectRows
(
this
.
selectRows
);
this
.
$refs
.
batchEdit
.
setScenarioSelectRows
(
this
.
selectRows
,
"
planScenario
"
);
},
batchEdit
(
form
)
{
let
param
=
{};
let
map
=
new
Map
();
this
.
selectRows
.
forEach
(
row
=>
{
map
.
set
(
row
.
id
,
row
.
projectIds
);
})
param
.
mapping
=
strMapToObj
(
map
);
param
.
mapping
=
strMapToObj
(
form
.
map
);
param
.
envMap
=
strMapToObj
(
form
.
projectEnvMap
);
if
(
this
.
planId
)
{
this
.
$post
(
'
/test/plan/scenario/case/batch/update/env
'
,
param
,
()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录