style(测试用例): 交互优化

--bug=1015088 --user=吕梦园
https://www.tapd.cn/55049933/prong/stories/view/1155049933001015088
This commit is contained in:
teukkk 2024-06-05 17:11:09 +08:00 committed by 刘瑞斌
parent 22d5791c3b
commit ce6a740367
9 changed files with 34 additions and 21 deletions

View File

@ -1,11 +1,22 @@
<template> <template>
<a-select v-model="value" multiple allow-search allow-clear :options="options" :field-names="fieldNames" /> <a-select
v-model="value"
:placeholder="t('system.project.resourcePoolPlaceholder')"
multiple
allow-search
allow-clear
:options="options"
:field-names="fieldNames"
/>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, ref, watchEffect } from 'vue'; import { computed, ref, watchEffect } from 'vue';
import { getPoolOptionsByOrg, getPoolOptionsByOrgOrSystem } from '@/api/modules/setting/organizationAndProject'; import { getPoolOptionsByOrg, getPoolOptionsByOrgOrSystem } from '@/api/modules/setting/organizationAndProject';
import { useI18n } from '@/hooks/useI18n';
const { t } = useI18n();
const options = ref([]); const options = ref([]);
const fieldNames = { value: 'id', label: 'name' }; const fieldNames = { value: 'id', label: 'name' };

View File

@ -149,10 +149,15 @@
reset(); reset();
}; };
const emitConfirm = () => emits('confirm', { ...form.value, id: props.nodeId }, handleCancel);
const handleConfirm = () => { const handleConfirm = () => {
if (!formRef.value) {
emitConfirm();
return;
}
formRef.value?.validate((errors) => { formRef.value?.validate((errors) => {
if (!errors) { if (!errors) {
emits('confirm', { ...form.value, id: props.nodeId }, handleCancel); emitConfirm();
} }
}); });
}; };

View File

@ -6,6 +6,7 @@
field="name" field="name"
:label="t('apiTestManagement.apiName')" :label="t('apiTestManagement.apiName')"
class="mb-[16px] w-[60%]" class="mb-[16px] w-[60%]"
asterisk-position="end"
:rules="[{ required: true, message: t('apiTestManagement.apiNameRequired') }]" :rules="[{ required: true, message: t('apiTestManagement.apiNameRequired') }]"
> >
<a-input <a-input
@ -16,10 +17,10 @@
@change="handleActiveApiChange" @change="handleActiveApiChange"
/> />
</a-form-item> </a-form-item>
<a-form-item :label="t('common.desc')" class="mb-[16px] w-[60%]"> <a-form-item asterisk-position="end" :label="t('common.desc')" class="mb-[16px] w-[60%]">
<a-textarea v-model:model-value="requestVModel.description" :max-length="1000" @change="handleActiveApiChange" /> <a-textarea v-model:model-value="requestVModel.description" :max-length="1000" @change="handleActiveApiChange" />
</a-form-item> </a-form-item>
<a-form-item :label="t('apiTestManagement.belongModule')" class="mb-[16px] w-[436px]"> <a-form-item asterisk-position="end" :label="t('apiTestManagement.belongModule')" class="mb-[16px] w-[436px]">
<a-tree-select <a-tree-select
v-model:modelValue="requestVModel.moduleId" v-model:modelValue="requestVModel.moduleId"
:data="props.selectTree as ModuleTreeNode[]" :data="props.selectTree as ModuleTreeNode[]"
@ -45,10 +46,10 @@
</template> </template>
</a-tree-select> </a-tree-select>
</a-form-item> </a-form-item>
<a-form-item :label="t('common.tag')" class="mb-[16px] w-[436px]"> <a-form-item asterisk-position="end" :label="t('common.tag')" class="mb-[16px] w-[436px]">
<MsTagsInput v-model:model-value="requestVModel.tags" @change="handleActiveApiChange" /> <MsTagsInput v-model:model-value="requestVModel.tags" @change="handleActiveApiChange" />
</a-form-item> </a-form-item>
<a-form-item :label="t('apiTestManagement.apiStatus')" class="mb-[16px] w-[240px]"> <a-form-item asterisk-position="end" :label="t('apiTestManagement.apiStatus')" class="mb-[16px] w-[240px]">
<a-select <a-select
v-model:model-value="requestVModel.status" v-model:model-value="requestVModel.status"
:placeholder="t('common.pleaseSelect')" :placeholder="t('common.pleaseSelect')"

View File

@ -556,7 +556,8 @@
default: default:
break; break;
} }
return featureCaseStore.countMap[key] > 99 ? '99+' : `${featureCaseStore.countMap[key]}` || ''; const count = featureCaseStore.countMap[key] ?? 0;
return featureCaseStore.countMap[key] > 99 ? '99+' : `${count > 0 ? count : ''}`;
} }
watch( watch(

View File

@ -106,8 +106,8 @@
<template v-if="keyword.trim() === ''" #empty> <template v-if="keyword.trim() === ''" #empty>
<div class="flex w-full items-center justify-center p-[8px] text-[var(--color-text-4)]"> <div class="flex w-full items-center justify-center p-[8px] text-[var(--color-text-4)]">
{{ t('caseManagement.caseReview.tableNoData') }} {{ t('caseManagement.caseReview.tableNoData') }}
<MsButton v-permission="['FUNCTIONAL_CASE:READ+ADD']" class="ml-[8px]" @click="createCase"> <MsButton v-permission="['FUNCTIONAL_CASE:READ+ADD']" class="ml-[8px]" @click="emit('link')">
{{ t('caseManagement.caseReview.crateCase') }} {{ t('caseManagement.featureCase.linkCase') }}
</MsButton> </MsButton>
</div> </div>
</template> </template>
@ -317,7 +317,7 @@
offspringIds: string[]; // id offspringIds: string[]; // id
moduleTree: ModuleTreeNode[]; moduleTree: ModuleTreeNode[];
}>(); }>();
const emit = defineEmits(['init', 'refresh']); const emit = defineEmits(['init', 'refresh', 'link']);
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
@ -837,15 +837,6 @@
}); });
} }
function createCase() {
router.push({
name: CaseManagementRouteEnum.CASE_MANAGEMENT_CASE_DETAIL,
query: {
reviewId: route.query.id,
},
});
}
onBeforeMount(async () => { onBeforeMount(async () => {
const [, memberRes] = await Promise.all([ const [, memberRes] = await Promise.all([
initReviewers(), initReviewers(),

View File

@ -42,8 +42,8 @@
</template> </template>
</a-tree-select> </a-tree-select>
</a-form-item> </a-form-item>
<a-form-item field="type" :label="t('caseManagement.caseReview.type')"> <a-form-item v-if="!isEdit" field="type" :label="t('caseManagement.caseReview.type')">
<a-radio-group v-model:modelValue="reviewForm.type" :disabled="isEdit"> <a-radio-group v-model:modelValue="reviewForm.type">
<a-radio value="SINGLE"> <a-radio value="SINGLE">
<div class="flex items-center"> <div class="flex items-center">
{{ t('caseManagement.caseReview.single') }} {{ t('caseManagement.caseReview.single') }}

View File

@ -123,6 +123,7 @@
:module-tree="moduleTree" :module-tree="moduleTree"
@init="initModulesCount" @init="initModulesCount"
@refresh="handleRefresh" @refresh="handleRefresh"
@link="associateDrawerVisible = true"
></CaseTable> ></CaseTable>
</template> </template>
</MsSplitBox> </MsSplitBox>

View File

@ -75,6 +75,8 @@ export default {
'system.project.createProjectSuccess': 'Create project success', 'system.project.createProjectSuccess': 'Create project success',
'system.project.updateProjectSuccess': 'Update project success', 'system.project.updateProjectSuccess': 'Update project success',
'system.project.resourcePool': 'Resource pool', 'system.project.resourcePool': 'Resource pool',
'system.project.resourcePoolPlaceholder':
'Please select the execution machine for interface testing, supporting multiple selections',
'system.project.removeName': 'Confirm remove the {name}', 'system.project.removeName': 'Confirm remove the {name}',
'system.project.descriptionPlaceholder': 'Please describe the project.', 'system.project.descriptionPlaceholder': 'Please describe the project.',
'system.project.enterProject': 'Enter project', 'system.project.enterProject': 'Enter project',

View File

@ -69,6 +69,7 @@ export default {
'system.project.createProjectSuccess': '创建项目成功', 'system.project.createProjectSuccess': '创建项目成功',
'system.project.updateProjectSuccess': '更新项目成功', 'system.project.updateProjectSuccess': '更新项目成功',
'system.project.resourcePool': '资源池', 'system.project.resourcePool': '资源池',
'system.project.resourcePoolPlaceholder': '请选择接口测试的执行机,支持多选',
'system.project.removeName': '确认移除 {name} 这个用户吗?', 'system.project.removeName': '确认移除 {name} 这个用户吗?',
'system.project.descriptionPlaceholder': '请对该项目进行描述', 'system.project.descriptionPlaceholder': '请对该项目进行描述',
'system.project.enterProject': '进入项目', 'system.project.enterProject': '进入项目',