feat: 场景用例支持自定义排序

This commit is contained in:
chenjianxing 2021-09-09 15:18:29 +08:00 committed by jianxing
parent 0236bc3a6e
commit 806bad3206
12 changed files with 175 additions and 16 deletions

View File

@ -14,6 +14,7 @@ import io.metersphere.base.domain.Schedule;
import io.metersphere.commons.constants.*; import io.metersphere.commons.constants.*;
import io.metersphere.commons.utils.PageUtils; import io.metersphere.commons.utils.PageUtils;
import io.metersphere.commons.utils.Pager; import io.metersphere.commons.utils.Pager;
import io.metersphere.controller.request.ResetOrderRequest;
import io.metersphere.controller.request.ScheduleRequest; import io.metersphere.controller.request.ScheduleRequest;
import io.metersphere.log.annotation.MsAuditLog; import io.metersphere.log.annotation.MsAuditLog;
import io.metersphere.notice.annotation.SendNotice; import io.metersphere.notice.annotation.SendNotice;
@ -105,6 +106,12 @@ public class ApiAutomationController {
return apiAutomationService.update(request, bodyFiles, scenarioFiles); return apiAutomationService.update(request, bodyFiles, scenarioFiles);
} }
@PostMapping("/edit/order")
public void orderCase(@RequestBody ResetOrderRequest request) {
apiAutomationService.updateOrder(request);
}
@GetMapping("/delete/{id}") @GetMapping("/delete/{id}")
@MsAuditLog(module = "api_automation", type = OperLogConstants.DELETE, beforeEvent = "#msClass.getLogDetails(#id)", msClass = ApiAutomationService.class) @MsAuditLog(module = "api_automation", type = OperLogConstants.DELETE, beforeEvent = "#msClass.getLogDetails(#id)", msClass = ApiAutomationService.class)
@RequiresPermissions(PermissionConstants.PROJECT_API_SCENARIO_READ_DELETE) @RequiresPermissions(PermissionConstants.PROJECT_API_SCENARIO_READ_DELETE)

View File

@ -31,6 +31,7 @@ import io.metersphere.base.mapper.ext.*;
import io.metersphere.commons.constants.*; import io.metersphere.commons.constants.*;
import io.metersphere.commons.exception.MSException; import io.metersphere.commons.exception.MSException;
import io.metersphere.commons.utils.*; import io.metersphere.commons.utils.*;
import io.metersphere.controller.request.ResetOrderRequest;
import io.metersphere.controller.request.ScheduleRequest; import io.metersphere.controller.request.ScheduleRequest;
import io.metersphere.dto.ApiReportCountDTO; import io.metersphere.dto.ApiReportCountDTO;
import io.metersphere.dto.BaseSystemConfigDTO; import io.metersphere.dto.BaseSystemConfigDTO;
@ -189,7 +190,7 @@ public class ApiAutomationService {
*/ */
private ApiScenarioRequest initRequest(ApiScenarioRequest request, boolean setDefultOrders, boolean checkThisWeekData) { private ApiScenarioRequest initRequest(ApiScenarioRequest request, boolean setDefultOrders, boolean checkThisWeekData) {
if (setDefultOrders) { if (setDefultOrders) {
request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders())); request.setOrders(ServiceUtils.getDefaultSortOrder(request.getOrders()));
} }
if (StringUtils.isNotEmpty(request.getExecuteStatus())) { if (StringUtils.isNotEmpty(request.getExecuteStatus())) {
Map<String, List<String>> statusFilter = new HashMap<>(); Map<String, List<String>> statusFilter = new HashMap<>();
@ -235,6 +236,7 @@ public class ApiAutomationService {
scenario.setNum(nextNum); scenario.setNum(nextNum);
List<ApiMethodUrlDTO> useUrl = this.parseUrl(scenario); List<ApiMethodUrlDTO> useUrl = this.parseUrl(scenario);
scenario.setUseUrl(JSONArray.toJSONString(useUrl)); scenario.setUseUrl(JSONArray.toJSONString(useUrl));
scenario.setOrder(ServiceUtils.getNextOrder(scenario.getProjectId(), extApiScenarioMapper::getLastOrder));
//检查场景的请求步骤如果含有ESB请求步骤的话要做参数计算处理 //检查场景的请求步骤如果含有ESB请求步骤的话要做参数计算处理
esbApiParamService.checkScenarioRequests(request); esbApiParamService.checkScenarioRequests(request);
@ -2502,4 +2504,22 @@ public class ApiAutomationService {
return result.longValue(); return result.longValue();
} }
} }
public void initOrderField() {
ServiceUtils.initOrderField(ApiScenarioWithBLOBs.class, ApiScenarioMapper.class,
extApiScenarioMapper::selectProjectIds,
extApiScenarioMapper::getIdsOrderByCreateTime);
}
/**
* 用例自定义排序
* @param request
*/
public void updateOrder(ResetOrderRequest request) {
ServiceUtils.updateOrderField(request, ApiScenarioWithBLOBs.class,
apiScenarioMapper::selectByPrimaryKey,
extApiScenarioMapper::getPreOrder,
extApiScenarioMapper::getLastOrder,
apiScenarioMapper::updateByPrimaryKeySelective);
}
} }

View File

@ -57,5 +57,7 @@ public class ApiScenario implements Serializable {
private Integer executeTimes; private Integer executeTimes;
private Long order;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }

View File

@ -1853,6 +1853,66 @@ public class ApiScenarioExample {
addCriterion("execute_times not between", value1, value2, "executeTimes"); addCriterion("execute_times not between", value1, value2, "executeTimes");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andOrderIsNull() {
addCriterion("`order` is null");
return (Criteria) this;
}
public Criteria andOrderIsNotNull() {
addCriterion("`order` is not null");
return (Criteria) this;
}
public Criteria andOrderEqualTo(Long value) {
addCriterion("`order` =", value, "order");
return (Criteria) this;
}
public Criteria andOrderNotEqualTo(Long value) {
addCriterion("`order` <>", value, "order");
return (Criteria) this;
}
public Criteria andOrderGreaterThan(Long value) {
addCriterion("`order` >", value, "order");
return (Criteria) this;
}
public Criteria andOrderGreaterThanOrEqualTo(Long value) {
addCriterion("`order` >=", value, "order");
return (Criteria) this;
}
public Criteria andOrderLessThan(Long value) {
addCriterion("`order` <", value, "order");
return (Criteria) this;
}
public Criteria andOrderLessThanOrEqualTo(Long value) {
addCriterion("`order` <=", value, "order");
return (Criteria) this;
}
public Criteria andOrderIn(List<Long> values) {
addCriterion("`order` in", values, "order");
return (Criteria) this;
}
public Criteria andOrderNotIn(List<Long> values) {
addCriterion("`order` not in", values, "order");
return (Criteria) this;
}
public Criteria andOrderBetween(Long value1, Long value2) {
addCriterion("`order` between", value1, value2, "order");
return (Criteria) this;
}
public Criteria andOrderNotBetween(Long value1, Long value2) {
addCriterion("`order` not between", value1, value2, "order");
return (Criteria) this;
}
} }
public static class Criteria extends GeneratedCriteria { public static class Criteria extends GeneratedCriteria {

View File

@ -28,6 +28,7 @@
<result column="delete_time" jdbcType="BIGINT" property="deleteTime" /> <result column="delete_time" jdbcType="BIGINT" property="deleteTime" />
<result column="delete_user_id" jdbcType="VARCHAR" property="deleteUserId" /> <result column="delete_user_id" jdbcType="VARCHAR" property="deleteUserId" />
<result column="execute_times" jdbcType="INTEGER" property="executeTimes" /> <result column="execute_times" jdbcType="INTEGER" property="executeTimes" />
<result column="order" jdbcType="BIGINT" property="order" />
</resultMap> </resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.ApiScenarioWithBLOBs"> <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.ApiScenarioWithBLOBs">
<result column="scenario_definition" jdbcType="LONGVARCHAR" property="scenarioDefinition" /> <result column="scenario_definition" jdbcType="LONGVARCHAR" property="scenarioDefinition" />
@ -96,7 +97,7 @@
id, project_id, tags, user_id, api_scenario_module_id, module_path, `name`, `level`, id, project_id, tags, user_id, api_scenario_module_id, module_path, `name`, `level`,
`status`, principal, step_total, follow_people, schedule, create_time, update_time, `status`, principal, step_total, follow_people, schedule, create_time, update_time,
pass_rate, last_result, report_id, num, original_state, custom_num, create_user, pass_rate, last_result, report_id, num, original_state, custom_num, create_user,
version, delete_time, delete_user_id, execute_times version, delete_time, delete_user_id, execute_times, `order`
</sql> </sql>
<sql id="Blob_Column_List"> <sql id="Blob_Column_List">
scenario_definition, description, use_url scenario_definition, description, use_url
@ -158,8 +159,9 @@
pass_rate, last_result, report_id, pass_rate, last_result, report_id,
num, original_state, custom_num, num, original_state, custom_num,
create_user, version, delete_time, create_user, version, delete_time,
delete_user_id, execute_times, scenario_definition, delete_user_id, execute_times, `order`,
description, use_url) scenario_definition, description,
use_url)
values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{tags,jdbcType=VARCHAR}, values (#{id,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}, #{tags,jdbcType=VARCHAR},
#{userId,jdbcType=VARCHAR}, #{apiScenarioModuleId,jdbcType=VARCHAR}, #{modulePath,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{apiScenarioModuleId,jdbcType=VARCHAR}, #{modulePath,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR}, #{level,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{level,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR},
@ -168,8 +170,9 @@
#{passRate,jdbcType=VARCHAR}, #{lastResult,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR}, #{passRate,jdbcType=VARCHAR}, #{lastResult,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR},
#{num,jdbcType=INTEGER}, #{originalState,jdbcType=VARCHAR}, #{customNum,jdbcType=VARCHAR}, #{num,jdbcType=INTEGER}, #{originalState,jdbcType=VARCHAR}, #{customNum,jdbcType=VARCHAR},
#{createUser,jdbcType=VARCHAR}, #{version,jdbcType=INTEGER}, #{deleteTime,jdbcType=BIGINT}, #{createUser,jdbcType=VARCHAR}, #{version,jdbcType=INTEGER}, #{deleteTime,jdbcType=BIGINT},
#{deleteUserId,jdbcType=VARCHAR}, #{executeTimes,jdbcType=INTEGER}, #{scenarioDefinition,jdbcType=LONGVARCHAR}, #{deleteUserId,jdbcType=VARCHAR}, #{executeTimes,jdbcType=INTEGER}, #{order,jdbcType=BIGINT},
#{description,jdbcType=LONGVARCHAR}, #{useUrl,jdbcType=LONGVARCHAR}) #{scenarioDefinition,jdbcType=LONGVARCHAR}, #{description,jdbcType=LONGVARCHAR},
#{useUrl,jdbcType=LONGVARCHAR})
</insert> </insert>
<insert id="insertSelective" parameterType="io.metersphere.base.domain.ApiScenarioWithBLOBs"> <insert id="insertSelective" parameterType="io.metersphere.base.domain.ApiScenarioWithBLOBs">
insert into api_scenario insert into api_scenario
@ -252,6 +255,9 @@
<if test="executeTimes != null"> <if test="executeTimes != null">
execute_times, execute_times,
</if> </if>
<if test="order != null">
`order`,
</if>
<if test="scenarioDefinition != null"> <if test="scenarioDefinition != null">
scenario_definition, scenario_definition,
</if> </if>
@ -341,6 +347,9 @@
<if test="executeTimes != null"> <if test="executeTimes != null">
#{executeTimes,jdbcType=INTEGER}, #{executeTimes,jdbcType=INTEGER},
</if> </if>
<if test="order != null">
#{order,jdbcType=BIGINT},
</if>
<if test="scenarioDefinition != null"> <if test="scenarioDefinition != null">
#{scenarioDefinition,jdbcType=LONGVARCHAR}, #{scenarioDefinition,jdbcType=LONGVARCHAR},
</if> </if>
@ -439,6 +448,9 @@
<if test="record.executeTimes != null"> <if test="record.executeTimes != null">
execute_times = #{record.executeTimes,jdbcType=INTEGER}, execute_times = #{record.executeTimes,jdbcType=INTEGER},
</if> </if>
<if test="record.order != null">
`order` = #{record.order,jdbcType=BIGINT},
</if>
<if test="record.scenarioDefinition != null"> <if test="record.scenarioDefinition != null">
scenario_definition = #{record.scenarioDefinition,jdbcType=LONGVARCHAR}, scenario_definition = #{record.scenarioDefinition,jdbcType=LONGVARCHAR},
</if> </if>
@ -481,6 +493,7 @@
delete_time = #{record.deleteTime,jdbcType=BIGINT}, delete_time = #{record.deleteTime,jdbcType=BIGINT},
delete_user_id = #{record.deleteUserId,jdbcType=VARCHAR}, delete_user_id = #{record.deleteUserId,jdbcType=VARCHAR},
execute_times = #{record.executeTimes,jdbcType=INTEGER}, execute_times = #{record.executeTimes,jdbcType=INTEGER},
`order` = #{record.order,jdbcType=BIGINT},
scenario_definition = #{record.scenarioDefinition,jdbcType=LONGVARCHAR}, scenario_definition = #{record.scenarioDefinition,jdbcType=LONGVARCHAR},
description = #{record.description,jdbcType=LONGVARCHAR}, description = #{record.description,jdbcType=LONGVARCHAR},
use_url = #{record.useUrl,jdbcType=LONGVARCHAR} use_url = #{record.useUrl,jdbcType=LONGVARCHAR}
@ -515,7 +528,8 @@
version = #{record.version,jdbcType=INTEGER}, version = #{record.version,jdbcType=INTEGER},
delete_time = #{record.deleteTime,jdbcType=BIGINT}, delete_time = #{record.deleteTime,jdbcType=BIGINT},
delete_user_id = #{record.deleteUserId,jdbcType=VARCHAR}, delete_user_id = #{record.deleteUserId,jdbcType=VARCHAR},
execute_times = #{record.executeTimes,jdbcType=INTEGER} execute_times = #{record.executeTimes,jdbcType=INTEGER},
`order` = #{record.order,jdbcType=BIGINT}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
@ -598,6 +612,9 @@
<if test="executeTimes != null"> <if test="executeTimes != null">
execute_times = #{executeTimes,jdbcType=INTEGER}, execute_times = #{executeTimes,jdbcType=INTEGER},
</if> </if>
<if test="order != null">
`order` = #{order,jdbcType=BIGINT},
</if>
<if test="scenarioDefinition != null"> <if test="scenarioDefinition != null">
scenario_definition = #{scenarioDefinition,jdbcType=LONGVARCHAR}, scenario_definition = #{scenarioDefinition,jdbcType=LONGVARCHAR},
</if> </if>
@ -637,6 +654,7 @@
delete_time = #{deleteTime,jdbcType=BIGINT}, delete_time = #{deleteTime,jdbcType=BIGINT},
delete_user_id = #{deleteUserId,jdbcType=VARCHAR}, delete_user_id = #{deleteUserId,jdbcType=VARCHAR},
execute_times = #{executeTimes,jdbcType=INTEGER}, execute_times = #{executeTimes,jdbcType=INTEGER},
`order` = #{order,jdbcType=BIGINT},
scenario_definition = #{scenarioDefinition,jdbcType=LONGVARCHAR}, scenario_definition = #{scenarioDefinition,jdbcType=LONGVARCHAR},
description = #{description,jdbcType=LONGVARCHAR}, description = #{description,jdbcType=LONGVARCHAR},
use_url = #{useUrl,jdbcType=LONGVARCHAR} use_url = #{useUrl,jdbcType=LONGVARCHAR}
@ -668,7 +686,8 @@
version = #{version,jdbcType=INTEGER}, version = #{version,jdbcType=INTEGER},
delete_time = #{deleteTime,jdbcType=BIGINT}, delete_time = #{deleteTime,jdbcType=BIGINT},
delete_user_id = #{deleteUserId,jdbcType=VARCHAR}, delete_user_id = #{deleteUserId,jdbcType=VARCHAR},
execute_times = #{executeTimes,jdbcType=INTEGER} execute_times = #{executeTimes,jdbcType=INTEGER},
`order` = #{order,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
</mapper> </mapper>

View File

@ -72,4 +72,12 @@ public interface ExtApiScenarioMapper {
List<String> selectIdsByExecuteTimeIsNull(); List<String> selectIdsByExecuteTimeIsNull();
Long countExecuteTimesByProjectID(String projectId); Long countExecuteTimesByProjectID(String projectId);
List<String> selectProjectIds();
List<String> getIdsOrderByCreateTime(@Param("projectId") String projectId);
Long getPreOrder(@Param("projectId")String projectId, @Param("baseOrder") Long baseOrder);
Long getLastOrder(@Param("projectId")String projectId, @Param("baseOrder") Long baseOrder);
} }

View File

@ -461,6 +461,28 @@
SELECT SUM(execute_times) FROM api_scenario SELECT SUM(execute_times) FROM api_scenario
WHERE project_id = #{0} WHERE project_id = #{0}
</select> </select>
<select id="selectProjectIds" resultType="java.lang.String">
select DISTINCT project_id from api_scenario;
</select>
<select id="getIdsOrderByCreateTime" resultType="java.lang.String">
select id from api_scenario where project_id = #{projectId} order by create_time DESC;
</select>
<select id="getLastOrder" resultType="java.lang.Long">
select `order` from api_scenario where project_id = #{projectId}
<if test="baseOrder != null">
and `order` &gt; #{baseOrder}
</if>
order by `order` desc limit 1;
</select>
<select id="getPreOrder" resultType="java.lang.Long">
select `order` from api_scenario where project_id = #{projectId}
<if test="baseOrder != null">
and `order` &lt; #{baseOrder}
</if>
order by `order` desc limit 1;
</select>
<sql id="queryWhereConditionReview"> <sql id="queryWhereConditionReview">
<where> <where>

View File

@ -142,8 +142,7 @@ public class ServiceUtils {
Long order = 0L; Long order = 0L;
List<String> ids = getIdsOrderByCreateTimeFunc.apply(projectId); List<String> ids = getIdsOrderByCreateTimeFunc.apply(projectId);
for (String id : ids) { for (String id : ids) {
T item = null; T item = clazz.newInstance();
item = (T) clazz.newInstance();
setId.invoke(item, id); setId.invoke(item, id);
setOrder.invoke(item, order); setOrder.invoke(item, order);
order += 5000; order += 5000;

View File

@ -111,6 +111,7 @@ public class AppStartListener implements ApplicationListener<ApplicationReadyEve
initOnceOperate(performanceTestService::initScenarioLoadTest, "init.scenario.load.test"); initOnceOperate(performanceTestService::initScenarioLoadTest, "init.scenario.load.test");
initOnceOperate(testCaseService::initOrderField, "init.sort.test.case"); initOnceOperate(testCaseService::initOrderField, "init.sort.test.case");
initOnceOperate(apiTestCaseService::initOrderField, "init.sort.api.test.case"); initOnceOperate(apiTestCaseService::initOrderField, "init.sort.api.test.case");
initOnceOperate(apiAutomationService::initOrderField, "init.sort.api.scenario");
} }
/** /**

View File

@ -36,3 +36,5 @@ update api_scenario set module_path = replace (`module_path`,'/默认模块','/
ALTER TABLE test_case ADD `order` bigint(20) NOT NULL COMMENT '自定义排序间隔5000'; ALTER TABLE test_case ADD `order` bigint(20) NOT NULL COMMENT '自定义排序间隔5000';
ALTER TABLE api_test_case ADD `order` bigint(20) NOT NULL COMMENT '自定义排序间隔5000'; ALTER TABLE api_test_case ADD `order` bigint(20) NOT NULL COMMENT '自定义排序间隔5000';
ALTER TABLE api_scenario ADD `order` bigint(20) NOT NULL COMMENT '自定义排序间隔5000';

View File

@ -1,5 +1,6 @@
import {getUUID} from "@/common/js/utils"; import {getUUID} from "@/common/js/utils";
import {getUploadConfig, request} from "@/common/js/ajax"; import {getUploadConfig, request} from "@/common/js/ajax";
import {basePost} from "@/network/base-network";
function buildBodyFile(item, bodyUploadFiles, obj, bodyParam) { function buildBodyFile(item, bodyUploadFiles, obj, bodyParam) {
if (bodyParam) { if (bodyParam) {
@ -99,3 +100,7 @@ export function saveScenario(url, scenario, scenarioDefinition, _this,success) {
} }
}); });
} }
export function editApiScenarioCaseOrder(request, callback) {
return basePost('/api/automation/edit/order', request, callback);
}

View File

@ -16,6 +16,8 @@
:field-key=tableHeaderKey :field-key=tableHeaderKey
:remember-order="true" :remember-order="true"
operator-width="200" operator-width="200"
:enable-order-drag="enableOrderDrag"
row-key="id"
@refresh="search(projectId)" @refresh="search(projectId)"
@callBackSelectAll="callBackSelectAll" @callBackSelectAll="callBackSelectAll"
@callBackSelect="callBackSelect" @callBackSelect="callBackSelect"
@ -234,13 +236,14 @@ import {API_SCENARIO_CONFIGS} from "@/business/components/common/components/sear
import {API_SCENARIO_LIST} from "../../../../../common/js/constants"; import {API_SCENARIO_LIST} from "../../../../../common/js/constants";
import { import {
getCustomTableHeader, getCustomTableWidth, getLastTableSortField, saveLastTableSortField getCustomTableHeader, getCustomTableWidth, getLastTableSortField, handleRowDrop, saveLastTableSortField
} from "@/common/js/tableUtils"; } from "@/common/js/tableUtils";
import {API_SCENARIO_FILTERS} from "@/common/js/table-constants"; import {API_SCENARIO_FILTERS} from "@/common/js/table-constants";
import {scenario} from "@/business/components/track/plan/event-bus"; import {scenario} from "@/business/components/track/plan/event-bus";
import MsTable from "@/business/components/common/components/table/MsTable"; import MsTable from "@/business/components/common/components/table/MsTable";
import MsTableColumn from "@/business/components/common/components/table/MsTableColumn"; import MsTableColumn from "@/business/components/common/components/table/MsTableColumn";
import HeaderLabelOperate from "@/business/components/common/head/HeaderLabelOperate"; import HeaderLabelOperate from "@/business/components/common/head/HeaderLabelOperate";
import {editApiScenarioCaseOrder} from "@/business/components/api/automation/api-automation";
export default { export default {
name: "MsApiScenarioList", name: "MsApiScenarioList",
@ -345,6 +348,7 @@ export default {
operators: [], operators: [],
selectRows: new Set(), selectRows: new Set(),
isStop: false, isStop: false,
enableOrderDrag: true,
trashOperators: [ trashOperators: [
{ {
tip: this.$t('commons.reduction'), tip: this.$t('commons.reduction'),
@ -563,6 +567,8 @@ export default {
this.condition.projectId = this.projectId; this.condition.projectId = this.projectId;
} }
this.enableOrderDrag = this.condition.orders.length > 0 ? false : true;
// //
this.condition.selectThisWeedData = false; this.condition.selectThisWeedData = false;
this.condition.executeStatus = null; this.condition.executeStatus = null;
@ -592,12 +598,20 @@ export default {
item.tags = JSON.parse(item.tags); item.tags = JSON.parse(item.tags);
} }
}); });
if (this.$refs.scenarioTable) {
this.$refs.scenarioTable.clear(); this.$nextTick(() => {
this.$nextTick(() => { handleRowDrop(this.tableData, (param) => {
this.$refs.scenarioTable.doLayout(); param.projectId = this.condition.projectId;
editApiScenarioCaseOrder(param);
}); });
}
if (this.$refs.scenarioTable) {
this.$refs.scenarioTable.clear();
this.$refs.scenarioTable.doLayout();
}
});
this.$emit('getTrashCase'); this.$emit('getTrashCase');
}); });
} }