mirror of
https://gitee.com/fit2cloud-feizhiyun/MeterSphere.git
synced 2024-11-30 11:08:38 +08:00
feat(测试计划): 测试计划详情用例列表新建缺陷(不包含快填)
This commit is contained in:
parent
69b42bdecc
commit
1560478751
@ -90,6 +90,7 @@ import {
|
||||
|
||||
import { ApiCaseDetail, ApiDefinitionDetail } from '@/models/apiTest/management';
|
||||
import type { ReportDetail, ReportStepDetail } from '@/models/apiTest/report';
|
||||
import { BugEditFormObject } from '@/models/bug-management';
|
||||
import { ReviewUserItem } from '@/models/caseManagement/caseReview';
|
||||
import type { CaseManagementTable, CreateOrUpdateModule, UpdateModule } from '@/models/caseManagement/featureCase';
|
||||
import type { CommonList, MoveModules, TableQueryParams } from '@/models/common';
|
||||
@ -480,6 +481,6 @@ export function batchAssociatedBugToCase(data: TableQueryParams) {
|
||||
return MSR.post({ url: BatchAssociatedBugToCaseUrl, data });
|
||||
}
|
||||
// 测试计划-详情-批量新建缺陷
|
||||
export function batchAddBugToCase(data: TableQueryParams) {
|
||||
return MSR.post({ url: BatchAddBugToCaseUrl, data });
|
||||
export function batchAddBugToCase(data: { request: BugEditFormObject; fileList: File[] }) {
|
||||
return MSR.uploadFile({ url: BatchAddBugToCaseUrl }, data, '', true);
|
||||
}
|
||||
|
@ -49,6 +49,7 @@
|
||||
import BugDetail from '@/views/bug-management/edit.vue';
|
||||
|
||||
import { createOrUpdateBug, getTemplateOption } from '@/api/modules/bug-management';
|
||||
import { batchAddBugToCase } from '@/api/modules/test-plan/testPlan';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import { useAppStore } from '@/store';
|
||||
|
||||
@ -64,11 +65,13 @@
|
||||
|
||||
const props = defineProps<{
|
||||
bugId?: string;
|
||||
extraParams?: Record<string, any>;
|
||||
extraParams?: Record<string, any> | (() => Record<string, any>);
|
||||
isBatch?: boolean;
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'success'): void;
|
||||
(e: 'save', params: { request: BugEditFormObject; fileList: File[] }): void;
|
||||
}>();
|
||||
|
||||
const showBugDrawer = defineModel<boolean>('visible', {
|
||||
@ -104,7 +107,6 @@
|
||||
drawerLoading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
function handleDrawerCancel() {
|
||||
bugDetailRef.value?.resetForm();
|
||||
showBugDrawer.value = false;
|
||||
@ -114,7 +116,13 @@
|
||||
try {
|
||||
drawerLoading.value = true;
|
||||
const { request, fileList } = params;
|
||||
await createOrUpdateBug({ request: { ...request, ...props.extraParams }, fileList });
|
||||
if (props.isBatch) {
|
||||
const extraParam =
|
||||
props.extraParams && typeof props.extraParams === 'function' ? await props.extraParams() : props.extraParams;
|
||||
await batchAddBugToCase({ request: { ...request, ...extraParam }, fileList });
|
||||
} else {
|
||||
await createOrUpdateBug({ request: { ...request, ...props.extraParams }, fileList });
|
||||
}
|
||||
|
||||
Message.success(props.bugId ? t('common.updateSuccess') : t('common.createSuccess'));
|
||||
|
||||
|
@ -109,20 +109,20 @@
|
||||
:batch-move="batchMoveApiCase"
|
||||
@load-list="resetCaseList"
|
||||
/>
|
||||
<!-- TODO 等待联调 -->
|
||||
<!-- TODO 等待联调快填 -->
|
||||
<AddDefectDrawer
|
||||
v-model:visible="showCreateBugDrawer"
|
||||
:extra-params="{ caseId: associatedCaseId, testPlanId: props.planId, testPlanCaseId }"
|
||||
:extra-params="getApiBugParams"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
@success="refreshDetailAndList()"
|
||||
/>
|
||||
<!-- TODO 等待联调 -->
|
||||
<LinkDefectDrawer
|
||||
v-model:visible="showLinkBugDrawer"
|
||||
:case-id="testPlanCaseId"
|
||||
:load-api="AssociatedBugApiTypeEnum.API_BUG_LIST"
|
||||
:is-batch="isBatchAssociate"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
:drawer-loading="drawerLoading"
|
||||
:show-selector-all="!isBatchAssociate"
|
||||
:show-selector-all="!isBatchAssociateOrCreate"
|
||||
@save="saveApiBugHandler"
|
||||
/>
|
||||
</div>
|
||||
@ -672,10 +672,10 @@
|
||||
const testPlanCaseId = ref<string>();
|
||||
const existedDefect = inject<Ref<number>>('existedDefect', ref(0));
|
||||
const showCreateBugDrawer = ref<boolean>(false);
|
||||
const isBatchAssociate = ref(false);
|
||||
const isBatchAssociateOrCreate = ref(false);
|
||||
// 关联缺陷
|
||||
function associateAndCreateDefect(isAssociate: boolean, isBatch: boolean, record?: PlanDetailApiCaseItem) {
|
||||
isBatchAssociate.value = isBatch;
|
||||
isBatchAssociateOrCreate.value = isBatch;
|
||||
if (record) {
|
||||
const { id, apiTestCaseId } = record;
|
||||
associatedCaseId.value = apiTestCaseId;
|
||||
@ -695,7 +695,7 @@
|
||||
try {
|
||||
drawerLoading.value = true;
|
||||
const tableParams = await getTableParams(true);
|
||||
if (isBatchAssociate.value) {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
await batchAssociatedBugToCase({
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
@ -726,6 +726,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function getApiBugParams() {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
const tableParams = await getTableParams(true);
|
||||
return {
|
||||
...tableParams,
|
||||
projectId: appStore.currentProjectId,
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
excludeIds: batchParams.value?.excludeIds || [],
|
||||
testPlanId: props.planId,
|
||||
};
|
||||
}
|
||||
return { caseId: associatedCaseId.value, testPlanId: props.planId, testPlanCaseId: testPlanCaseId.value };
|
||||
}
|
||||
|
||||
// 批量批量移动
|
||||
const batchUpdateParams = ref();
|
||||
const batchMoveModalVisible = ref(false);
|
||||
|
@ -109,20 +109,20 @@
|
||||
@load-list="resetCaseList"
|
||||
/>
|
||||
|
||||
<!-- TODO 等待联调 -->
|
||||
<!-- TODO 等待联调快填 -->
|
||||
<AddDefectDrawer
|
||||
v-model:visible="showCreateBugDrawer"
|
||||
:extra-params="{ caseId: associatedCaseId, testPlanId: props.planId, testPlanCaseId }"
|
||||
:extra-params="getScenarioBugParams"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
@success="refreshListAndDetail()"
|
||||
/>
|
||||
<!-- TODO 等待联调 -->
|
||||
<LinkDefectDrawer
|
||||
v-model:visible="showLinkBugDrawer"
|
||||
:case-id="testPlanCaseId"
|
||||
:load-api="AssociatedBugApiTypeEnum.SCENARIO_BUG_LIST"
|
||||
:is-batch="isBatchAssociate"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
:drawer-loading="drawerLoading"
|
||||
:show-selector-all="!isBatchAssociate"
|
||||
:show-selector-all="!isBatchAssociateOrCreate"
|
||||
@save="saveScenarioBugHandler"
|
||||
/>
|
||||
</div>
|
||||
@ -657,7 +657,7 @@
|
||||
const batchMoveModalVisible = ref(false);
|
||||
|
||||
const existedDefect = inject<Ref<number>>('existedDefect', ref(0));
|
||||
const isBatchAssociate = ref(false);
|
||||
const isBatchAssociateOrCreate = ref(false);
|
||||
const showLinkBugDrawer = ref<boolean>(false);
|
||||
const associatedCaseId = ref<string>();
|
||||
const testPlanCaseId = ref<string>();
|
||||
@ -666,7 +666,7 @@
|
||||
const drawerLoading = ref<boolean>(false);
|
||||
// 关联缺陷
|
||||
function associateAndCreateDefect(isAssociate: boolean, isBatch: boolean, record?: PlanDetailApiScenarioItem) {
|
||||
isBatchAssociate.value = isBatch;
|
||||
isBatchAssociateOrCreate.value = isBatch;
|
||||
if (record) {
|
||||
const { id, apiScenarioId } = record;
|
||||
associatedCaseId.value = apiScenarioId;
|
||||
@ -684,7 +684,7 @@
|
||||
try {
|
||||
drawerLoading.value = true;
|
||||
const tableParams = await getTableParams(true);
|
||||
if (isBatchAssociate.value) {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
await batchAssociatedBugToCase({
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
@ -715,6 +715,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function getScenarioBugParams() {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
const tableParams = await getTableParams(true);
|
||||
return {
|
||||
...tableParams,
|
||||
projectId: appStore.currentProjectId,
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
excludeIds: batchParams.value?.excludeIds || [],
|
||||
testPlanId: props.planId,
|
||||
};
|
||||
}
|
||||
return { caseId: associatedCaseId.value, testPlanId: props.planId, testPlanCaseId: testPlanCaseId.value };
|
||||
}
|
||||
|
||||
// 处理表格选中后批量操作
|
||||
async function handleTableBatch(event: BatchActionParams, params: BatchActionQueryParams) {
|
||||
tableSelected.value = params?.selectedIds || [];
|
||||
|
@ -174,21 +174,21 @@
|
||||
:batch-move="batchMoveFeatureCase"
|
||||
@load-list="resetCaseList"
|
||||
/>
|
||||
<!-- TODO 等待联调快填 -->
|
||||
|
||||
<!-- TODO 等待联调 -->
|
||||
<AddDefectDrawer
|
||||
v-model:visible="showCreateBugDrawer"
|
||||
:extra-params="{ caseId: associatedCaseId, testPlanId: props.planId, testPlanCaseId }"
|
||||
:extra-params="getBugParams"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
@success="refreshList()"
|
||||
/>
|
||||
<!-- TODO 等待联调 -->
|
||||
<LinkDefectDrawer
|
||||
v-model:visible="showLinkBugDrawer"
|
||||
:case-id="testPlanCaseId"
|
||||
:drawer-loading="drawerLoading"
|
||||
:load-api="AssociatedBugApiTypeEnum.TEST_PLAN_BUG_LIST"
|
||||
:show-selector-all="!isBatchAssociate"
|
||||
:is-batch="isBatchAssociate"
|
||||
:show-selector-all="!isBatchAssociateOrCreate"
|
||||
:is-batch="isBatchAssociateOrCreate"
|
||||
@save="saveFunctionBugHandler"
|
||||
/>
|
||||
</div>
|
||||
@ -775,7 +775,6 @@
|
||||
const batchLoading = ref(false);
|
||||
const batchExecuteModalVisible = ref(false);
|
||||
const batchExecuteForm = ref<ExecuteFeatureCaseFormParams>({ ...defaultExecuteForm });
|
||||
|
||||
async function handleBatchExecute() {
|
||||
try {
|
||||
batchLoading.value = true;
|
||||
@ -807,14 +806,29 @@
|
||||
const associatedCaseId = ref<string>();
|
||||
const testPlanCaseId = ref<string>();
|
||||
const drawerLoading = ref<boolean>(false);
|
||||
const isBatchAssociate = ref(false);
|
||||
const isBatchAssociateOrCreate = ref(false);
|
||||
|
||||
async function getBugParams() {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
const tableParams = await getTableParams(true);
|
||||
return {
|
||||
...tableParams,
|
||||
projectId: appStore.currentProjectId,
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
excludeIds: batchParams.value?.excludeIds || [],
|
||||
testPlanId: props.planId,
|
||||
};
|
||||
}
|
||||
return { caseId: associatedCaseId.value, testPlanId: props.planId, testPlanCaseId: testPlanCaseId.value };
|
||||
}
|
||||
|
||||
// 功能用例关联缺陷
|
||||
async function saveFunctionBugHandler(params: TableQueryParams) {
|
||||
try {
|
||||
drawerLoading.value = true;
|
||||
const tableParams = await getTableParams(true);
|
||||
if (isBatchAssociate.value) {
|
||||
if (isBatchAssociateOrCreate.value) {
|
||||
await batchAssociatedBugToCase({
|
||||
selectIds: tableSelected.value as string[],
|
||||
selectAll: batchParams.value.selectAll,
|
||||
@ -854,7 +868,7 @@
|
||||
|
||||
// 关联/关联缺陷
|
||||
function associateAndCreateDefect(isAssociate: boolean, isBatch: boolean, record?: PlanDetailFeatureCaseItem) {
|
||||
isBatchAssociate.value = isBatch;
|
||||
isBatchAssociateOrCreate.value = isBatch;
|
||||
if (record) {
|
||||
const { id, caseId } = record;
|
||||
associatedCaseId.value = caseId;
|
||||
|
Loading…
Reference in New Issue
Block a user