diff --git a/frontend/src/views/bug-management/components/bug-detail-drawer.vue b/frontend/src/views/bug-management/components/bug-detail-drawer.vue
index b116bdfd96..0297ed3d41 100644
--- a/frontend/src/views/bug-management/components/bug-detail-drawer.vue
+++ b/frontend/src/views/bug-management/components/bug-detail-drawer.vue
@@ -575,13 +575,6 @@
} else {
activeTab.value = 'detail';
}
- } else {
- if (!props.pagination && !props.tableData) return;
- const query = { ...route.query };
- delete query.id;
- router.replace({
- query,
- });
}
}
);
diff --git a/frontend/src/views/bug-management/createAndEditBug.vue b/frontend/src/views/bug-management/createAndEditBug.vue
index 4c3261ded2..d459271e70 100644
--- a/frontend/src/views/bug-management/createAndEditBug.vue
+++ b/frontend/src/views/bug-management/createAndEditBug.vue
@@ -17,7 +17,13 @@
/>
-
+
diff --git a/frontend/src/views/bug-management/edit.vue b/frontend/src/views/bug-management/edit.vue
index 3c22dd1b11..711d13e931 100644
--- a/frontend/src/views/bug-management/edit.vue
+++ b/frontend/src/views/bug-management/edit.vue
@@ -215,7 +215,6 @@
import { EditorPreviewFileUrl } from '@/api/requrls/bug-management';
import { useI18n } from '@/hooks/useI18n';
import { useAppStore } from '@/store';
- import useUserStore from '@/store/modules/user';
import { downloadByteFile } from '@/utils';
import { scrollIntoView } from '@/utils/dom';
import { findParents, Option } from '@/utils/recursion';
@@ -239,6 +238,7 @@
const props = defineProps<{
templateId: string; // 缺陷模板id
+ isCopyBug?: boolean; // 是否复制
bugId?: string; // 缺陷id,不传递为创建
isDrawer?: boolean; // 是否是弹窗模式
caseType?: CaseLinkEnum; // 用例类型
@@ -262,7 +262,6 @@
const { t } = useI18n();
const appStore = useAppStore();
- const route = useRoute();
const form = ref({
projectId: appStore.currentProjectId,
title: '',
@@ -297,11 +296,9 @@
const associatedDrawer = ref(false);
const loading = ref(false);
const acceptType = ref('none'); // 模块-上传文件类型
- const userStore = useUserStore();
- const isEdit = computed(() => !!route.query.id && route.params.mode === 'edit');
+ const isEdit = computed(() => props.bugId && !props.isCopyBug);
const bugId = ref(props.bugId);
const isEditOrCopy = computed(() => !!bugId.value);
- const isCopy = computed(() => route.params.mode === 'copy');
const isPlatformDefaultTemplate = ref(false);
const imageUrl = ref('');
const previewVisible = ref(false);
@@ -310,7 +307,7 @@
// 描述-环境/富文本临时附件ID
const descriptionFileIdMap = ref>({});
- const isLoading = ref(true);
+ const isLoading = ref(false);
const rowLength = ref(0);
// 处理文件参数
@@ -593,7 +590,7 @@
copyFiles,
richTextTmpFileIds: isPlatformDefaultTemplate.value ? getDescriptionFileId() : descriptionFileIds.value,
};
- if (isCopy.value) {
+ if (props.isCopyBug) {
delete tmpObj.id;
delete tmpObj.richTextTmpFileIds;
}
@@ -644,51 +641,61 @@
return [];
};
- // 获取详情
- const getDetailInfo = async () => {
- loading.value = true;
- const id = route.query.id as string;
- if (!id) return;
- const res = await getBugDetail(id);
- const { customFields, templateId, attachments } = res;
- // 根据模板ID 初始化自定义字段
- if (isCopy.value) {
- // 复制, 只需返回初始状态
- await templateChange(templateId);
- } else {
- await templateChange(templateId, { fromStatusId: res.status, platformBugKey: res.platformBugId });
- }
- if (attachments && attachments.length) {
- if (!isCopy.value) {
- // 非Copy时, 附件列表赋值
- attachmentsList.value = attachments;
+ // 设置模板值
+ async function setTemplateValue(bugDetail: BugEditFormObject) {
+ const { status, templateId, platformBugId } = bugDetail;
+ try {
+ if (props.isCopyBug) {
+ // 复制, 只需返回初始状态
+ await templateChange(templateId);
+ } else {
+ await templateChange(templateId, { fromStatusId: status, platformBugKey: platformBugId });
}
- // 检查文件是否有更新
- const checkUpdateFileIds = await checkFileIsUpdateRequest(attachments.map((item: any) => item.fileId));
- // 处理文件列表
- fileList.value = attachments
- .map((fileInfo: any) => {
- return {
- ...fileInfo,
- name: fileInfo.fileName,
- isUpdateFlag: checkUpdateFileIds.includes(fileInfo.fileId),
- isCopyFlag: isCopy.value,
- };
- })
- .map((fileInfo: any) => {
- return convertToFileByBug(fileInfo);
- });
+ } catch (error) {
+ // eslint-disable-next-line no-console
+ console.log(error);
+ }
+ }
+
+ // 处理文件
+ async function handleFile(attachments: AttachFileInfo[]) {
+ if (!attachments.length) {
+ return;
+ }
+ // 非Copy时, 附件列表赋值
+ if (!props.isCopyBug) {
+ attachmentsList.value = attachments;
+ }
+ // 检查文件是否有更新
+ const checkUpdateFileIds = await checkFileIsUpdateRequest(attachments.map((item: any) => item.fileId));
+ // 处理文件列表
+ fileList.value = attachments
+ .map((fileInfo: any) => {
+ return {
+ ...fileInfo,
+ name: fileInfo.fileName,
+ isUpdateFlag: checkUpdateFileIds.includes(fileInfo.fileId),
+ isCopyFlag: props.isCopyBug,
+ };
+ })
+ .map((fileInfo: any) => {
+ return convertToFileByBug(fileInfo);
+ });
+ }
+
+ function makeCustomValue(bugDetail: BugEditFormObject) {
+ const { customFields, status } = bugDetail;
+ let tmpObj: Record = {};
+
+ if (isEdit.value) {
+ tmpObj = { status };
}
- let tmpObj: Record = {};
- if (isEdit.value) {
- tmpObj = { status: res.status };
- }
if (customFields && Array.isArray(customFields)) {
const MULTIPLE_TYPE = ['MULTIPLE_SELECT', 'MULTIPLE_INPUT', 'CHECKBOX', 'MULTIPLE_MEMBER'];
const SINGRADIO_TYPE = ['RADIO', 'SELECT', 'MEMBER'];
customFields.forEach((item) => {
- if (item.id === 'status' && isCopy.value) {
+ if (item.id === 'status' && props.isCopyBug) {
// 复制时, 状态赋值为空
tmpObj[item.id] = '';
// 多选类型需要过滤选项
@@ -730,34 +737,57 @@
}
});
}
- // 自定义字段赋值
- fApi.value.setValue(tmpObj);
- // 平台默认模板系统字段单独处理
- if (isPlatformDefaultTemplate.value && form.value.platformSystemFields) {
- Object.keys(form.value.platformSystemFields).forEach((key) => {
- form.value.platformSystemFields[key] = tmpObj[key];
- });
- }
- const { platformSystemFields } = form.value;
+ return tmpObj;
+ }
- let copyName = '';
- if (isCopy.value) {
- copyName = `copy_${res.title}`;
- if (copyName.length > 255) {
- form.value.title = copyName.slice(0, 255);
+ // 获取详情
+ const getDetailInfo = async () => {
+ try {
+ loading.value = true;
+ const res = await getBugDetail(bugId.value as string);
+ const { templateId, attachments } = res;
+ if (templateId) {
+ await setTemplateValue(res);
}
+ // 处理附件
+ handleFile(attachments);
+
+ // 处理自定义字段以及三方字段
+ const tmpObj = await makeCustomValue(res);
+ fApi.value.setValue(tmpObj);
+
+ // 平台默认模板系统字段单独处理
+ if (isPlatformDefaultTemplate.value && form.value.platformSystemFields) {
+ Object.keys(form.value.platformSystemFields).forEach((key) => {
+ form.value.platformSystemFields[key] = tmpObj[key];
+ });
+ }
+ const { platformSystemFields } = form.value;
+
+ let copyName = '';
+ if (props.isCopyBug) {
+ copyName = `copy_${res.title}`;
+ if (copyName.length > 255) {
+ form.value.title = copyName.slice(0, 255);
+ }
+ }
+
+ // 表单赋值
+ form.value = {
+ id: res.id,
+ title: props.isCopyBug ? copyName : res.title,
+ description: res.description,
+ templateId: res.templateId,
+ tags: res.tags || [],
+ projectId: res.projectId,
+ platformSystemFields,
+ };
+ } catch (error) {
+ // eslint-disable-next-line no-console
+ console.log(error);
+ } finally {
+ loading.value = false;
}
- // 表单赋值
- form.value = {
- id: res.id,
- title: isCopy.value ? copyName : res.title,
- description: res.description,
- templateId: res.templateId,
- tags: res.tags || [],
- projectId: res.projectId,
- platformSystemFields,
- };
- loading.value = false;
};
// 监视自定义字段改变处理formCreate