fix(功能用例): 修改功能用例关联三方需求缺少id

This commit is contained in:
xinxin.wu 2024-02-22 13:52:33 +08:00 committed by 刘瑞斌
parent 9372b82e98
commit 2ee6833b96
11 changed files with 78 additions and 20 deletions

View File

@ -239,7 +239,6 @@ export function getThirdDemandList(data: TableQueryParams) {
// 上传文件并关联用例
export function uploadOrAssociationFile(data: Record<string, any>) {
debugger;
return MSR.uploadFile({ url: UploadOrAssociationFileUrl }, { request: data.request, fileList: data.file });
}
// 转存文件

View File

@ -320,6 +320,17 @@ export default function useTableProps<T>(
// }
}
};
const collectIds = (data, rowKey: string, selectedKeys: Set<string>) => {
data.forEach((item: any) => {
if (item[rowKey] && !selectedKeys.has(item[rowKey])) {
selectedKeys.add(item[rowKey]);
}
if (item.children) {
collectIds(item.children, rowKey, selectedKeys);
}
});
return selectedKeys;
};
// 获取表格请求参数
const getTableQueryParams = () => {
@ -398,12 +409,7 @@ export default function useTableProps<T>(
resetSelector();
} else {
resetSelector(false);
data.forEach((item: Record<string, any>) => {
if (item[rowKey] && !selectedKeys.has(item[rowKey])) {
selectedKeys.add(item[rowKey]);
}
});
propsRes.value.selectedKeys = selectedKeys;
propsRes.value.selectedKeys = collectIds(data, rowKey, selectedKeys);
}
},

View File

@ -242,6 +242,7 @@ export interface DemandItem {
createUser: string;
updateUser: string;
children: DemandItem[]; // 平台下对应的需求
[key: string]: any;
}
// 平台需求列表

View File

@ -103,7 +103,6 @@
//
async function handleUpdateOrAdd(item: CommentParams, cb: (result: boolean) => void) {
debugger;
try {
if (item.id) {
await updateCommentList(item);

View File

@ -7,7 +7,7 @@
>
</template>
<template #operation="{ record }">
<MsButton v-if="record.demandPlatform !== pageConfig.platformName" @click="emit('update', record)">
<MsButton v-if="record.demandPlatform !== pageConfig.platformName" @click="emit('cancel', record)">
{{ t('caseManagement.featureCase.cancelAssociation') }}
</MsButton>
<MsButton v-if="record.demandPlatform === pageConfig.platformName" @click="emit('update', record)">
@ -65,6 +65,7 @@
const emit = defineEmits<{
(e: 'update', record: DemandItem): void;
(e: 'create'): void;
(e: 'cancel', record: DemandItem): void;
}>();
const columns: MsTableColumn = [
@ -94,7 +95,7 @@
slotName: 'operation',
dataIndex: 'operation',
fixed: 'right',
width: 300,
width: 100,
showInTable: true,
showDrag: false,
},

View File

@ -24,6 +24,7 @@
:fun-params="{ caseId: props.caseId, keyword, projectId: currentProjectId }"
@update="updateDemand"
@create="addDemand"
@cancel="cancelLink"
></AssociatedDemandTable>
<AddDemandModal
ref="demandModalRef"
@ -89,7 +90,12 @@
import AddDemandModal from './addDemandModal.vue';
import AssociatedDemandTable from './associatedDemandTable.vue';
import { addDemandRequest, getThirdDemandList, updateDemandReq } from '@/api/modules/case-management/featureCase';
import {
addDemandRequest,
cancelAssociationDemand,
getThirdDemandList,
updateDemandReq,
} from '@/api/modules/case-management/featureCase';
import { getCaseRelatedInfo } from '@/api/modules/project-management/menuManagement';
import { useI18n } from '@/hooks/useI18n';
import { useAppStore } from '@/store';
@ -182,8 +188,22 @@
const drawerLoading = ref<boolean>(false);
const tableSelected = computed(() => {
const selectIds = [...propsRes.value.selectedKeys];
return propsRes.value.data.filter((item: any) => selectIds.indexOf(item.demandId) > -1);
const selectedIds = [...propsRes.value.selectedKeys];
const filteredData: DemandItem[] = [];
function filterData(data: DemandItem[]) {
for (let i = 0; i < data.length; i++) {
const item: DemandItem = data[i];
if (selectedIds.includes(item.demandId)) {
filteredData.push(item);
}
if (item.children) {
filterData(item.children);
}
}
}
filterData(propsRes.value.data);
return filteredData;
});
//
@ -278,6 +298,16 @@
function handleDrawerCancel() {
linkDemandDrawer.value = false;
}
//
async function cancelLink(record: DemandItem) {
try {
await cancelAssociationDemand(record.id);
Message.success(t('caseManagement.featureCase.cancelLinkSuccess'));
demandRef.value.initData();
} catch (error) {
console.log(error);
}
}
watch(
() => linkDemandDrawer.value,

View File

@ -56,7 +56,7 @@
import { useI18n } from '@/hooks/useI18n';
import { useAppStore } from '@/store';
import type { CreateOrUpdateDemand } from '@/models/caseManagement/featureCase';
import type { CreateOrUpdateDemand, DemandItem } from '@/models/caseManagement/featureCase';
import { TableKeyEnum } from '@/enums/tableEnum';
const { t } = useI18n();
@ -120,8 +120,22 @@
});
const tableSelected = computed(() => {
const selectIds = [...propsRes.value.selectedKeys];
return propsRes.value.data.filter((item: any) => selectIds.indexOf(item.demandId) > -1);
const selectedIds = [...propsRes.value.selectedKeys];
const filteredData: DemandItem[] = [];
function filterData(data: DemandItem[]) {
for (let i = 0; i < data.length; i++) {
const item: DemandItem = data[i];
if (selectedIds.includes(item.demandId)) {
filteredData.push(item);
}
if (item.children) {
filterData(item.children);
}
}
}
filterData(propsRes.value.data);
return filteredData;
});
const platformInfo = ref<Record<string, any>>({});

View File

@ -89,6 +89,7 @@ export default {
'caseManagement.featureCase.storage': 'storage',
'caseManagement.featureCase.download': 'download',
'caseManagement.featureCase.cancelLink': 'Cancel link',
'caseManagement.featureCase.cancelLinkSuccess': 'Cancel link Successfully',
'caseManagement.featureCase.SelectExportRange': 'Select export range',
'caseManagement.featureCase.clear': 'Clear',
'caseManagement.featureCase.baseField': 'Base Field',
@ -176,7 +177,6 @@ export default {
'caseManagement.featureCase.changeNumber': 'Change sequence',
'caseManagement.featureCase.changeType': 'type',
'caseManagement.featureCase.operator': 'operator',
'caseManagement.featureCase.cancelLinkSuccess': 'Cancel association successfully',
'caseManagement.featureCase.preview': 'Preview',
'caseManagement.featureCase.defectList': 'Defect list',
'caseManagement.featureCase.addPresetCase': 'Add preset use case',

View File

@ -88,6 +88,7 @@ export default {
'caseManagement.featureCase.storage': '转存',
'caseManagement.featureCase.download': '下载',
'caseManagement.featureCase.cancelLink': '取消关联',
'caseManagement.featureCase.cancelLinkSuccess': '取消关联成功',
'caseManagement.featureCase.SelectExportRange': '选择导出范围',
'caseManagement.featureCase.clear': '清空',
'caseManagement.featureCase.baseField': '基础字段',
@ -174,7 +175,6 @@ export default {
'caseManagement.featureCase.changeNumber': '变更序号',
'caseManagement.featureCase.changeType': '类型',
'caseManagement.featureCase.operator': '操作人',
'caseManagement.featureCase.cancelLinkSuccess': '取消关联成功',
'caseManagement.featureCase.preview': '预览',
'caseManagement.featureCase.defectList': '缺陷列表',
'caseManagement.featureCase.addPresetCase': '添加前置用例',

View File

@ -99,7 +99,7 @@ export default {
'system.orgTemplate.addAttachment': 'Add attachment',
'system.orgTemplate.addAttachmentTip': 'Support any type of file, the file size does not exceed 500MB',
'system.orgTemplate.enabledSuccessfully': 'Enabled successfully',
'system.orgTemplate.thirdPartyPlatforms': 'Used to map field values for third-party platforms such as JARA',
'system.orgTemplate.thirdPartyPlatforms': 'Used to map field values for third-party platforms such as JIRA',
'system.orgTemplate.optionsIdNoRepeat': 'The option ID must be unique',
'system.orgTemplate.optionsContentNoRepeat': 'The options cannot be repeated',
'system.orgTemplate.thirdParty': 'Connect to third-party platforms',
@ -181,4 +181,7 @@ export default {
'system.orgTemplate.enableWarningTip': 'Enabled, irreversible for organization template, please careful operation.',
'system.orgTemplate.typeEmptyTip': 'The type cannot be empty',
'system.orgTemplate.searchOrgPlaceholder': 'Please enter the organization name :{name}',
'system.orgTemplate.associatedField': 'Associated field ',
'system.orgTemplate.associatedHasField': 'Associate an added field',
'system.orgTemplate.addFieldDesc': 'Adds a new field',
};

View File

@ -99,7 +99,7 @@ export default {
'system.orgTemplate.addAttachment': '添加附件',
'system.orgTemplate.addAttachmentTip': '支持任意类型文件,文件大小不超过 500MB',
'system.orgTemplate.enabledSuccessfully': '启用成功',
'system.orgTemplate.thirdPartyPlatforms': '用于映射 JARA 等第三方平台字段值',
'system.orgTemplate.thirdPartyPlatforms': '用于映射 JIRA 等第三方平台字段值',
'system.orgTemplate.optionsIdNoRepeat': '选项 ID 不可以重复',
'system.orgTemplate.optionsContentNoRepeat': '选项内容不可以重复',
'system.orgTemplate.thirdParty': '对接第三方平台',
@ -170,4 +170,9 @@ export default {
'system.orgTemplate.enableWarningTip': '启用后,不可恢复为组织模版,请谨慎操作!',
'system.orgTemplate.typeEmptyTip': '类型不能为空',
'system.orgTemplate.searchOrgPlaceholder': '请输入组织名称: {name} ',
'system.orgTemplate.associatedField': '关联字段 ',
'system.orgTemplate.associatedHasField': '关联已添加的字段',
'system.orgTemplate.addFieldDesc': '新增一个新的字段',
'system.orgTemplate.toTop': '上移',
'system.orgTemplate.toBottom': '下移',
};