feat(测试计划): 新建测试计划-创建到计划组
This commit is contained in:
parent
b84cdf7a54
commit
c12cb63fd9
|
@ -24,7 +24,32 @@
|
|||
<a-form-item field="description" :label="t('common.desc')" class="w-[732px]">
|
||||
<a-textarea v-model:model-value="form.description" :placeholder="t('common.pleaseInput')" :max-length="1000" />
|
||||
</a-form-item>
|
||||
<a-form-item :label="t('common.belongModule')" class="w-[436px]">
|
||||
<a-form-item
|
||||
field="type"
|
||||
:label="props.planId?.length ? t('caseManagement.featureCase.moveTo') : t('testPlan.planForm.createTo')"
|
||||
>
|
||||
<a-radio-group v-model:model-value="form.type">
|
||||
<a-radio :value="testPlanTypeEnum.TEST_PLAN">{{ t('testPlan.testPlanGroup.module') }}</a-radio>
|
||||
<a-radio :value="testPlanTypeEnum.GROUP">{{ t('testPlan.testPlanIndex.testPlanGroup') }}</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-show="form.type === testPlanTypeEnum.GROUP"
|
||||
field="groupId"
|
||||
:label="t('testPlan.testPlanIndex.testPlanGroup')"
|
||||
class="w-[436px]"
|
||||
>
|
||||
<a-select v-model="form.groupId" :placeholder="t('common.pleaseSelect')">
|
||||
<a-option v-for="item of groupList" :key="item.id" :value="item.id">
|
||||
{{ item.name }}
|
||||
</a-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-show="form.type === testPlanTypeEnum.TEST_PLAN"
|
||||
:label="t('common.belongModule')"
|
||||
class="w-[436px]"
|
||||
>
|
||||
<a-tree-select
|
||||
v-model:modelValue="form.moduleId"
|
||||
:data="props.moduleTree"
|
||||
|
@ -110,7 +135,7 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { FormInstance, Message, TreeNodeData, ValidatedError } from '@arco-design/web-vue';
|
||||
import { FormInstance, Message, SelectOptionData, TreeNodeData, ValidatedError } from '@arco-design/web-vue';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
|
@ -118,7 +143,12 @@
|
|||
import MsMoreSettingCollapse from '@/components/pure/ms-more-setting-collapse/index.vue';
|
||||
import MsTagsInput from '@/components/pure/ms-tags-input/index.vue';
|
||||
|
||||
import { addTestPlan, getTestPlanDetail, updateTestPlan } from '@/api/modules/test-plan/testPlan';
|
||||
import {
|
||||
addTestPlan,
|
||||
getPlanGroupOptions,
|
||||
getTestPlanDetail,
|
||||
updateTestPlan,
|
||||
} from '@/api/modules/test-plan/testPlan';
|
||||
import { useI18n } from '@/hooks/useI18n';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
|
||||
|
@ -246,7 +276,6 @@
|
|||
try {
|
||||
const params: AddTestPlanParams = {
|
||||
...cloneDeep(form.value),
|
||||
groupId: 'NONE',
|
||||
plannedStartTime: form.value.cycle ? form.value.cycle[0] : undefined,
|
||||
plannedEndTime: form.value.cycle ? form.value.cycle[1] : undefined,
|
||||
projectId: appStore.currentProjectId,
|
||||
|
@ -288,12 +317,23 @@
|
|||
}
|
||||
}
|
||||
|
||||
const groupList = ref<SelectOptionData>([]);
|
||||
async function initGroupOptions() {
|
||||
try {
|
||||
groupList.value = await getPlanGroupOptions(appStore.currentProjectId);
|
||||
} catch (error) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => innerVisible.value,
|
||||
(val) => {
|
||||
if (val) {
|
||||
form.value = cloneDeep(initForm);
|
||||
getDetail();
|
||||
initGroupOptions();
|
||||
if (!props.planId && props.moduleId) {
|
||||
form.value.moduleId = props.moduleId === 'all' ? 'root' : props.moduleId;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,11 @@
|
|||
<div class="p-[16px]">
|
||||
<a-input
|
||||
v-model:model-value="moduleKeyword"
|
||||
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
|
||||
:placeholder="
|
||||
props.treeType === 'MODULE'
|
||||
? t('caseManagement.caseReview.folderSearchPlaceholder')
|
||||
: t('testPlan.testPlanGroup.newPlanPlaceHolder')
|
||||
"
|
||||
allow-clear
|
||||
class="mb-[8px]"
|
||||
:max-length="255"
|
||||
|
@ -12,7 +16,7 @@
|
|||
v-model:selectedProtocols="selectedProtocols"
|
||||
:not-show-operation="props.treeType === 'COLLECTION'"
|
||||
:active-folder="activeFolder"
|
||||
:folder-name="t('apiTestManagement.allApi')"
|
||||
:folder-name="t('testPlan.testPlanIndex.apiCase')"
|
||||
:all-count="allCount"
|
||||
:show-expand-api="false"
|
||||
@set-active-folder="setActiveFolder"
|
||||
|
|
|
@ -2,7 +2,11 @@
|
|||
<div class="p-[16px]">
|
||||
<a-input
|
||||
v-model:model-value="moduleKeyword"
|
||||
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
|
||||
:placeholder="
|
||||
props.treeType === 'MODULE'
|
||||
? t('caseManagement.caseReview.folderSearchPlaceholder')
|
||||
: t('testPlan.testPlanGroup.newPlanPlaceHolder')
|
||||
"
|
||||
allow-clear
|
||||
class="mb-[8px]"
|
||||
:max-length="255"
|
||||
|
@ -10,7 +14,7 @@
|
|||
<MsFolderAll
|
||||
v-model:isExpandAll="isExpandAll"
|
||||
:active-folder="activeFolder"
|
||||
:folder-name="t('apiScenario.allScenario')"
|
||||
:folder-name="t('caseManagement.featureCase.sceneCase')"
|
||||
:all-count="allCount"
|
||||
@set-active-folder="setActiveFolder"
|
||||
/>
|
||||
|
|
|
@ -2,7 +2,11 @@
|
|||
<div>
|
||||
<a-input
|
||||
v-model:model-value="moduleKeyword"
|
||||
:placeholder="t('caseManagement.caseReview.folderSearchPlaceholder')"
|
||||
:placeholder="
|
||||
props.treeType === 'MODULE'
|
||||
? t('caseManagement.caseReview.folderSearchPlaceholder')
|
||||
: t('testPlan.testPlanGroup.newPlanPlaceHolder')
|
||||
"
|
||||
allow-clear
|
||||
class="mb-[8px]"
|
||||
:max-length="255"
|
||||
|
@ -10,7 +14,7 @@
|
|||
<MsFolderAll
|
||||
v-model:isExpandAll="isExpandAll"
|
||||
:active-folder="activeFolder"
|
||||
:folder-name="t('caseManagement.caseReview.allCases')"
|
||||
:folder-name="t('testPlan.testPlanIndex.functionalUseCase')"
|
||||
:all-count="allCount"
|
||||
@set-active-folder="setActiveFolder"
|
||||
/>
|
||||
|
|
|
@ -320,7 +320,7 @@
|
|||
},
|
||||
{
|
||||
value: 'apiScenario',
|
||||
label: t('testPlan.testPlanIndex.apiScenarioCase'),
|
||||
label: t('caseManagement.featureCase.sceneCase'),
|
||||
},
|
||||
{
|
||||
value: 'defectList',
|
||||
|
|
|
@ -83,6 +83,8 @@ export default {
|
|||
'testPlan.planForm.planStartAndEndTime': 'Planned start and end time',
|
||||
'testPlan.planForm.associateRepeatCase': 'Allow associated duplicate cases',
|
||||
'testPlan.planForm.passThreshold': 'Pass threshold',
|
||||
'testPlan.planForm.createTo': 'Create to',
|
||||
'testPlan.planForm.selectPlanGroup': 'Select plan group',
|
||||
'testPlan.planForm.repeatCaseTip1': 'Enable: Repeatedly associate the same case',
|
||||
'testPlan.planForm.repeatCaseTip2': 'Close: Cannot be associated with the same case repeatedly',
|
||||
'testPlan.planForm.passThresholdTip': 'If the pass rate reaches the specified pass threshold, the result is passed',
|
||||
|
|
|
@ -78,6 +78,8 @@ export default {
|
|||
'testPlan.planForm.planStartAndEndTime': '计划起止时间',
|
||||
'testPlan.planForm.associateRepeatCase': '允许关联重复用例',
|
||||
'testPlan.planForm.passThreshold': '通过阀值',
|
||||
'testPlan.planForm.createTo': '创建到',
|
||||
'testPlan.planForm.selectPlanGroup': '选择计划组',
|
||||
'testPlan.planForm.repeatCaseTip1': '开启:可重复关联同一个用例',
|
||||
'testPlan.planForm.repeatCaseTip2': '关闭:不可重复关联同一用例',
|
||||
'testPlan.planForm.passThresholdTip': '通过率达到设置的通过阈值时,报告结果为通过',
|
||||
|
|
Loading…
Reference in New Issue