fix(接口测试): 修复接口相关bug
This commit is contained in:
parent
0ab72dcf0e
commit
890429bb6e
|
@ -124,7 +124,7 @@ public class ApiScenarioController {
|
||||||
@CheckOwner(resourceId = "#id", resourceType = "api_scenario")
|
@CheckOwner(resourceId = "#id", resourceType = "api_scenario")
|
||||||
@SendNotice(taskType = NoticeConstants.TaskType.API_SCENARIO_TASK, event = NoticeConstants.Event.DELETE, target = "#targetClass.getScenarioDTO(#id)", targetClass = ApiScenarioNoticeService.class)
|
@SendNotice(taskType = NoticeConstants.TaskType.API_SCENARIO_TASK, event = NoticeConstants.Event.DELETE, target = "#targetClass.getScenarioDTO(#id)", targetClass = ApiScenarioNoticeService.class)
|
||||||
public void deleteToGc(@PathVariable String id) {
|
public void deleteToGc(@PathVariable String id) {
|
||||||
apiScenarioService.deleteToGc(id);
|
apiScenarioService.deleteToGc(id, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get/{scenarioId}")
|
@GetMapping("/get/{scenarioId}")
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package io.metersphere.api.controller.scenario;
|
package io.metersphere.api.controller.scenario;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.node.TextNode;
|
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import io.metersphere.api.dto.definition.ApiReportBatchRequest;
|
import io.metersphere.api.dto.definition.ApiReportBatchRequest;
|
||||||
|
@ -54,8 +53,8 @@ public class ApiScenarioReportController {
|
||||||
@CheckOwner(resourceId = "#id", resourceType = "api_scenario_report")
|
@CheckOwner(resourceId = "#id", resourceType = "api_scenario_report")
|
||||||
@RequiresPermissions(PermissionConstants.PROJECT_API_REPORT_UPDATE)
|
@RequiresPermissions(PermissionConstants.PROJECT_API_REPORT_UPDATE)
|
||||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateLog(#id)", msClass = ApiScenarioReportLogService.class)
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateLog(#id)", msClass = ApiScenarioReportLogService.class)
|
||||||
public void rename(@PathVariable String id, @RequestBody TextNode name) {
|
public void rename(@PathVariable String id, @RequestBody Object name) {
|
||||||
apiScenarioReportService.rename(id, name.asText(), SessionUtils.getUserId());
|
apiScenarioReportService.rename(id, name.toString(), SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/delete/{id}")
|
@GetMapping("/delete/{id}")
|
||||||
|
|
|
@ -178,7 +178,7 @@ public class ApiDefinitionService extends MoveNodeService {
|
||||||
|
|
||||||
public ApiDefinitionDTO get(String id, String userId) {
|
public ApiDefinitionDTO get(String id, String userId) {
|
||||||
// 1. 避免重复查询数据库,将查询结果传递给get方法
|
// 1. 避免重复查询数据库,将查询结果传递给get方法
|
||||||
ApiDefinition apiDefinition = checkApiDefinition(id);
|
ApiDefinition apiDefinition = checkApiDefinitionDeleted(id);
|
||||||
return getApiDefinitionInfo(id, userId, apiDefinition);
|
return getApiDefinitionInfo(id, userId, apiDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,6 +508,16 @@ public class ApiDefinitionService extends MoveNodeService {
|
||||||
return apiDefinition;
|
return apiDefinition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ApiDefinition checkApiDefinitionDeleted(String apiId) {
|
||||||
|
ApiDefinitionExample example = new ApiDefinitionExample();
|
||||||
|
example.createCriteria().andIdEqualTo(apiId).andDeletedEqualTo(false);
|
||||||
|
List<ApiDefinition> apiDefinitions = apiDefinitionMapper.selectByExample(example);
|
||||||
|
if (CollectionUtils.isEmpty(apiDefinitions)) {
|
||||||
|
throw new MSException(ApiResultCode.API_DEFINITION_NOT_EXIST);
|
||||||
|
}
|
||||||
|
return apiDefinitions.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
private void checkAddExist(ApiDefinition apiDefinition) {
|
private void checkAddExist(ApiDefinition apiDefinition) {
|
||||||
if (!StringUtils.equals(apiDefinition.getProtocol(), ApiConstants.HTTP_PROTOCOL)) {
|
if (!StringUtils.equals(apiDefinition.getProtocol(), ApiConstants.HTTP_PROTOCOL)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -204,9 +204,19 @@ public class ApiTestCaseService extends MoveNodeService {
|
||||||
return testCase;
|
return testCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ApiTestCase checkResourceNoDeleted(String id) {
|
||||||
|
ApiTestCaseExample example = new ApiTestCaseExample();
|
||||||
|
example.createCriteria().andIdEqualTo(id).andDeletedEqualTo(false);
|
||||||
|
List<ApiTestCase> testCase = apiTestCaseMapper.selectByExample(example);
|
||||||
|
if (CollectionUtils.isEmpty(testCase)) {
|
||||||
|
throw new MSException(Translator.get("api_test_case_not_exist"));
|
||||||
|
}
|
||||||
|
return testCase.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
public ApiTestCaseDTO get(String id, String userId) {
|
public ApiTestCaseDTO get(String id, String userId) {
|
||||||
ApiTestCaseDTO apiTestCaseDTO = new ApiTestCaseDTO();
|
ApiTestCaseDTO apiTestCaseDTO = new ApiTestCaseDTO();
|
||||||
ApiTestCase testCase = checkResourceExist(id);
|
ApiTestCase testCase = checkResourceNoDeleted(id);
|
||||||
ApiTestCaseBlob testCaseBlob = apiTestCaseBlobMapper.selectByPrimaryKey(id);
|
ApiTestCaseBlob testCaseBlob = apiTestCaseBlobMapper.selectByPrimaryKey(id);
|
||||||
BeanUtils.copyBean(apiTestCaseDTO, testCase);
|
BeanUtils.copyBean(apiTestCaseDTO, testCase);
|
||||||
if (CollectionUtils.isNotEmpty(testCase.getTags())) {
|
if (CollectionUtils.isNotEmpty(testCase.getTags())) {
|
||||||
|
|
|
@ -306,8 +306,6 @@ public class ApiScenarioReportService {
|
||||||
step.setStatus(ApiReportStatus.FAKE_ERROR.name());
|
step.setStatus(ApiReportStatus.FAKE_ERROR.name());
|
||||||
} else if (successStatus.size() == children.size() - noControllerIds.size()) {
|
} else if (successStatus.size() == children.size() - noControllerIds.size()) {
|
||||||
step.setStatus(ApiReportStatus.SUCCESS.name());
|
step.setStatus(ApiReportStatus.SUCCESS.name());
|
||||||
} else {
|
|
||||||
step.setStatus(ApiReportStatus.PENDING.name());
|
|
||||||
}
|
}
|
||||||
} else if (stepTypes.contains(step.getStepType())) {
|
} else if (stepTypes.contains(step.getStepType())) {
|
||||||
step.setStatus(ApiReportStatus.PENDING.name());
|
step.setStatus(ApiReportStatus.PENDING.name());
|
||||||
|
|
|
@ -84,6 +84,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.ibatis.session.ExecutorType;
|
import org.apache.ibatis.session.ExecutorType;
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
||||||
|
import org.apache.kafka.common.errors.ResourceNotFoundException;
|
||||||
import org.mybatis.spring.SqlSessionUtils;
|
import org.mybatis.spring.SqlSessionUtils;
|
||||||
import org.quartz.CronExpression;
|
import org.quartz.CronExpression;
|
||||||
import org.quartz.CronScheduleBuilder;
|
import org.quartz.CronScheduleBuilder;
|
||||||
|
@ -1195,11 +1196,13 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
apiScenarioMapper.updateByPrimaryKeySelective(apiScenario);
|
apiScenarioMapper.updateByPrimaryKeySelective(apiScenario);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteToGc(String id) {
|
public void deleteToGc(String id, String operator) {
|
||||||
checkResourceExist(id);
|
checkResourceExist(id);
|
||||||
ApiScenario apiScenario = new ApiScenario();
|
ApiScenario apiScenario = new ApiScenario();
|
||||||
apiScenario.setId(id);
|
apiScenario.setId(id);
|
||||||
apiScenario.setDeleted(true);
|
apiScenario.setDeleted(true);
|
||||||
|
apiScenario.setDeleteUser(operator);
|
||||||
|
apiScenario.setDeleteTime(System.currentTimeMillis());
|
||||||
apiScenarioMapper.updateByPrimaryKeySelective(apiScenario);
|
apiScenarioMapper.updateByPrimaryKeySelective(apiScenario);
|
||||||
|
|
||||||
//删除定时任务
|
//删除定时任务
|
||||||
|
@ -1926,8 +1929,18 @@ public class ApiScenarioService extends MoveNodeService {
|
||||||
return apiScenarioDetailDTO;
|
return apiScenarioDetailDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ApiScenario checkResourceIsNoDeleted(String id) {
|
||||||
|
ApiScenarioExample example = new ApiScenarioExample();
|
||||||
|
example.createCriteria().andIdEqualTo(id).andDeletedEqualTo(false);
|
||||||
|
List<ApiScenario> apiScenarios = apiScenarioMapper.selectByExample(example);
|
||||||
|
if (CollectionUtils.isEmpty(apiScenarios)) {
|
||||||
|
throw new MSException(Translator.get("api_scenario_is_not_exist"));
|
||||||
|
}
|
||||||
|
return apiScenarios.getFirst();
|
||||||
|
}
|
||||||
|
|
||||||
public ApiScenarioDetail get(String scenarioId) {
|
public ApiScenarioDetail get(String scenarioId) {
|
||||||
ApiScenario apiScenario = checkResourceExist(scenarioId);
|
ApiScenario apiScenario = checkResourceIsNoDeleted(scenarioId);
|
||||||
ApiScenarioDetail apiScenarioDetail = BeanUtils.copyBean(new ApiScenarioDetail(), apiScenario);
|
ApiScenarioDetail apiScenarioDetail = BeanUtils.copyBean(new ApiScenarioDetail(), apiScenario);
|
||||||
ApiScenarioBlob apiScenarioBlob = apiScenarioBlobMapper.selectByPrimaryKey(scenarioId);
|
ApiScenarioBlob apiScenarioBlob = apiScenarioBlobMapper.selectByPrimaryKey(scenarioId);
|
||||||
if (apiScenarioBlob != null) {
|
if (apiScenarioBlob != null) {
|
||||||
|
|
|
@ -307,7 +307,7 @@
|
||||||
x: '100%',
|
x: '100%',
|
||||||
},
|
},
|
||||||
showSetting: true,
|
showSetting: true,
|
||||||
selectable: hasAnyPermission(['PROJECT_API_REPORT:READ+DELETE', 'PROJECT_API_REPORT:READ']),
|
selectable: hasAnyPermission(['PROJECT_API_REPORT:READ+DELETE']),
|
||||||
heightUsed: 330,
|
heightUsed: 330,
|
||||||
showSelectorAll: true,
|
showSelectorAll: true,
|
||||||
},
|
},
|
||||||
|
|
|
@ -45,6 +45,8 @@ export default {
|
||||||
'apiScenario.table.columns.createTime': 'Create time',
|
'apiScenario.table.columns.createTime': 'Create time',
|
||||||
'apiScenario.table.columns.updateUser': 'Update user',
|
'apiScenario.table.columns.updateUser': 'Update user',
|
||||||
'apiScenario.table.columns.updateTime': 'Update time',
|
'apiScenario.table.columns.updateTime': 'Update time',
|
||||||
|
'apiScenario.table.columns.operation': 'Operation',
|
||||||
|
'apiScenario.table.columns.deleteTime': 'Delete time',
|
||||||
'api_scenario.table.tableNoDataAndPlease': 'No data yet, please',
|
'api_scenario.table.tableNoDataAndPlease': 'No data yet, please',
|
||||||
'api_scenario.table.or': 'or',
|
'api_scenario.table.or': 'or',
|
||||||
'apiScenario.execute': 'Execute',
|
'apiScenario.execute': 'Execute',
|
||||||
|
|
|
@ -44,6 +44,8 @@ export default {
|
||||||
'apiScenario.table.columns.createTime': '创建时间',
|
'apiScenario.table.columns.createTime': '创建时间',
|
||||||
'apiScenario.table.columns.updateUser': '更新人',
|
'apiScenario.table.columns.updateUser': '更新人',
|
||||||
'apiScenario.table.columns.updateTime': '更新时间',
|
'apiScenario.table.columns.updateTime': '更新时间',
|
||||||
|
'apiScenario.table.columns.operation': '操作人',
|
||||||
|
'apiScenario.table.columns.deleteTime': '删除时间',
|
||||||
'api_scenario.table.searchPlaceholder': '通过 ID/名称/标签搜索',
|
'api_scenario.table.searchPlaceholder': '通过 ID/名称/标签搜索',
|
||||||
'api_scenario.table.batchModalSubTitle': '(已选 {count} 个场景)',
|
'api_scenario.table.batchModalSubTitle': '(已选 {count} 个场景)',
|
||||||
'api_scenario.table.chooseAttr': '选择属性',
|
'api_scenario.table.chooseAttr': '选择属性',
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div :class="['p-[16px_16px]', props.class]">
|
<div :class="['p-[16px_16px]', props.class]">
|
||||||
<div class="mb-[16px] flex items-center justify-between">
|
<div class="mb-[16px] flex items-center justify-between">
|
||||||
<div class="flex items-center gap-[8px]">
|
<div class="flex items-center"> </div>
|
||||||
|
<div class="items-right flex gap-[8px]">
|
||||||
<a-input-search
|
<a-input-search
|
||||||
v-model:model-value="keyword"
|
v-model:model-value="keyword"
|
||||||
:placeholder="t('api_scenario.table.searchPlaceholder')"
|
:placeholder="t('api_scenario.table.searchPlaceholder')"
|
||||||
|
@ -49,6 +50,45 @@
|
||||||
</a-checkbox>
|
</a-checkbox>
|
||||||
</a-checkbox-group>
|
</a-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="filter-button">
|
||||||
|
<a-button size="mini" class="mr-[8px]" @click="resetStatusFilter">
|
||||||
|
{{ t('common.reset') }}
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" size="mini" @click="handleFilterHidden(false)">
|
||||||
|
{{ t('system.orgTemplate.confirm') }}
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</a-trigger>
|
||||||
|
</template>
|
||||||
|
<template #priorityFilter="{ columnConfig }">
|
||||||
|
<a-trigger
|
||||||
|
v-model:popup-visible="priorityFilterVisible"
|
||||||
|
trigger="click"
|
||||||
|
@popup-visible-change="handleFilterHidden"
|
||||||
|
>
|
||||||
|
<MsButton type="text" class="arco-btn-text--secondary ml-[10px]" @click="priorityFilterVisible = true">
|
||||||
|
{{ t(columnConfig.title as string) }}
|
||||||
|
<icon-down :class="priorityFilterVisible ? 'text-[rgb(var(--primary-5))]' : ''" />
|
||||||
|
</MsButton>
|
||||||
|
<template #content>
|
||||||
|
<div class="arco-table-filters-content">
|
||||||
|
<div class="ml-[6px] flex items-center justify-start px-[6px] py-[2px]">
|
||||||
|
<a-checkbox-group v-model:model-value="priorityFilters" direction="vertical" size="small">
|
||||||
|
<a-checkbox v-for="item of casePriorityOptions" :key="item.value" :value="item.value">
|
||||||
|
<caseLevel :case-level="item.label as CaseLevel" />
|
||||||
|
</a-checkbox>
|
||||||
|
</a-checkbox-group>
|
||||||
|
</div>
|
||||||
|
<div class="filter-button">
|
||||||
|
<a-button size="mini" class="mr-[8px]" @click="resetPriorityFilter">
|
||||||
|
{{ t('common.reset') }}
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" size="mini" @click="handleFilterHidden(false)">
|
||||||
|
{{ t('system.orgTemplate.confirm') }}
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</a-trigger>
|
</a-trigger>
|
||||||
|
@ -154,6 +194,8 @@
|
||||||
import { ReportEnum, ReportStatus } from '@/enums/reportEnum';
|
import { ReportEnum, ReportStatus } from '@/enums/reportEnum';
|
||||||
import { TableKeyEnum } from '@/enums/tableEnum';
|
import { TableKeyEnum } from '@/enums/tableEnum';
|
||||||
|
|
||||||
|
import { casePriorityOptions } from '@/views/api-test/components/config';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
class?: string;
|
class?: string;
|
||||||
activeModule: string;
|
activeModule: string;
|
||||||
|
@ -172,6 +214,8 @@
|
||||||
const emit = defineEmits(['refreshModuleTree']);
|
const emit = defineEmits(['refreshModuleTree']);
|
||||||
const keyword = ref('');
|
const keyword = ref('');
|
||||||
const recoverLoading = ref(false);
|
const recoverLoading = ref(false);
|
||||||
|
const priorityFilterVisible = ref(false);
|
||||||
|
const priorityFilters = ref<string[]>([]);
|
||||||
|
|
||||||
const columns: MsTableColumn = [
|
const columns: MsTableColumn = [
|
||||||
{
|
{
|
||||||
|
@ -205,7 +249,12 @@
|
||||||
title: 'apiScenario.table.columns.level',
|
title: 'apiScenario.table.columns.level',
|
||||||
dataIndex: 'priority',
|
dataIndex: 'priority',
|
||||||
slotName: 'priority',
|
slotName: 'priority',
|
||||||
width: 100,
|
titleSlotName: 'priorityFilter',
|
||||||
|
width: 140,
|
||||||
|
sortable: {
|
||||||
|
sortDirections: ['ascend', 'descend'],
|
||||||
|
sorter: true,
|
||||||
|
},
|
||||||
showDrag: true,
|
showDrag: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -291,6 +340,23 @@
|
||||||
width: 109,
|
width: 109,
|
||||||
showDrag: true,
|
showDrag: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'apiScenario.table.columns.operation',
|
||||||
|
dataIndex: 'deleteUserName',
|
||||||
|
titleSlotName: 'deleteUser',
|
||||||
|
width: 109,
|
||||||
|
showDrag: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'apiScenario.table.columns.deleteTime',
|
||||||
|
dataIndex: 'deleteTime',
|
||||||
|
sortable: {
|
||||||
|
sortDirections: ['ascend', 'descend'],
|
||||||
|
sorter: true,
|
||||||
|
},
|
||||||
|
width: 189,
|
||||||
|
showDrag: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'common.operation',
|
title: 'common.operation',
|
||||||
slotName: 'operation',
|
slotName: 'operation',
|
||||||
|
@ -302,13 +368,13 @@
|
||||||
const { propsRes, propsEvent, loadList, setLoadListParams, resetSelector } = useTable(
|
const { propsRes, propsEvent, loadList, setLoadListParams, resetSelector } = useTable(
|
||||||
getTrashScenarioPage,
|
getTrashScenarioPage,
|
||||||
{
|
{
|
||||||
columns: props.readOnly ? columns : [],
|
// columns: props.readOnly ? columns : [],
|
||||||
scroll: { x: '100%' },
|
scroll: { x: '100%' },
|
||||||
tableKey: props.readOnly ? undefined : TableKeyEnum.API_SCENARIO,
|
tableKey: props.readOnly ? undefined : TableKeyEnum.API_SCENARIO,
|
||||||
showSetting: !props.readOnly,
|
showSetting: !props.readOnly,
|
||||||
selectable: true,
|
selectable: true,
|
||||||
showSelectAll: !props.readOnly,
|
showSelectAll: !props.readOnly,
|
||||||
draggable: props.readOnly ? undefined : { type: 'handle', width: 32 },
|
draggable: undefined,
|
||||||
heightUsed: 374,
|
heightUsed: 374,
|
||||||
showSubdirectory: true,
|
showSubdirectory: true,
|
||||||
},
|
},
|
||||||
|
@ -316,6 +382,7 @@
|
||||||
...item,
|
...item,
|
||||||
createTime: dayjs(item.createTime).format('YYYY-MM-DD HH:mm:ss'),
|
createTime: dayjs(item.createTime).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
updateTime: dayjs(item.updateTime).format('YYYY-MM-DD HH:mm:ss'),
|
updateTime: dayjs(item.updateTime).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
deleteTime: dayjs(item.deleteTime).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -337,7 +404,6 @@
|
||||||
const statusFilterVisible = ref(false);
|
const statusFilterVisible = ref(false);
|
||||||
const statusFilters = ref<string[]>([]);
|
const statusFilters = ref<string[]>([]);
|
||||||
const tableStore = useTableStore();
|
const tableStore = useTableStore();
|
||||||
|
|
||||||
async function loadScenarioList(refreshTreeCount?: boolean) {
|
async function loadScenarioList(refreshTreeCount?: boolean) {
|
||||||
let moduleIds: string[] = [];
|
let moduleIds: string[] = [];
|
||||||
if (props.activeModule && props.activeModule !== 'all') {
|
if (props.activeModule && props.activeModule !== 'all') {
|
||||||
|
@ -355,6 +421,7 @@
|
||||||
filter: {
|
filter: {
|
||||||
lastReportStatus: lastReportStatusListFilters.value,
|
lastReportStatus: lastReportStatusListFilters.value,
|
||||||
status: statusFilters.value,
|
status: statusFilters.value,
|
||||||
|
priority: priorityFilters.value,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
setLoadListParams(params);
|
setLoadListParams(params);
|
||||||
|
@ -370,6 +437,18 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resetStatusFilter() {
|
||||||
|
statusFilterVisible.value = false;
|
||||||
|
statusFilters.value = [];
|
||||||
|
loadScenarioList();
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetPriorityFilter() {
|
||||||
|
priorityFilterVisible.value = false;
|
||||||
|
priorityFilters.value = [];
|
||||||
|
loadScenarioList();
|
||||||
|
}
|
||||||
|
|
||||||
const tableSelected = ref<(string | number)[]>([]);
|
const tableSelected = ref<(string | number)[]>([]);
|
||||||
|
|
||||||
const batchParams = ref<BatchActionQueryParams>({
|
const batchParams = ref<BatchActionQueryParams>({
|
||||||
|
@ -396,7 +475,7 @@
|
||||||
await recoverScenario(record?.id as string);
|
await recoverScenario(record?.id as string);
|
||||||
}
|
}
|
||||||
|
|
||||||
Message.success(t('common.deleteSuccess'));
|
Message.success(t('common.revokeSuccess'));
|
||||||
tableSelected.value = [];
|
tableSelected.value = [];
|
||||||
resetSelector();
|
resetSelector();
|
||||||
loadScenarioList(true);
|
loadScenarioList(true);
|
||||||
|
@ -505,6 +584,7 @@
|
||||||
batchForm.value.value = '';
|
batchForm.value.value = '';
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
await tableStore.initColumn(TableKeyEnum.API_SCENARIO, columns, 'drawer', true);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
|
Loading…
Reference in New Issue