Browse Source

fix: 工单,知识库模块添加附件上传状态控制

master
AaronWu 5 months ago
parent
commit
dfff3c667a
  1. 2
      src/api/issue/model.d.ts
  2. 11
      src/views/client/issue/index.vue
  3. 138
      src/views/question/issue/formSchemas.tsx
  4. 18
      src/views/question/issue/index.vue
  5. 127
      src/views/question/knowledge/formSchemas.tsx
  6. 19
      src/views/question/knowledge/index.vue

2
src/api/issue/model.d.ts

@ -29,6 +29,7 @@ declare namespace API {
zentaoNos?: string; // 关联的禅道工单号
resolutionTime?: string; // 解决时间
solutionType?: string; // 解决方式
fileUploading?: boolean; // 附件上传状态
};
type CreateIssueParams = {
@ -57,6 +58,7 @@ declare namespace API {
zentaoNos?: string; // 关联的禅道工单号
resolutionTime?: string; // 解决时间
solutionType?: string; // 解决方式
fileUploading?: boolean; // 附件上传状态
};
type DeleteIssueParams = {

11
src/views/client/issue/index.vue

@ -256,8 +256,12 @@
const values = await formRef?.validate();
if (values) {
console.log('values: ', values);
//
if (values.fileUploading) {
message.warning('请等待附件上传完成');
return;
}
values.id = curRow.value.id;
if (values.files && Array.isArray(values.files) && values.files.length) {
values.files = values.files.map((e) => {
if (e.response) {
@ -271,7 +275,10 @@
...e,
};
});
values.fileIds = values.files.map((e) => e.id).join(',');
values.fileIds = values.files.filter((e) => e.id).map((e) => e.id).join(',');
}
if (values?.fileIds === ',') {
values.fileIds = '';
}
if (values?.tags && Array.isArray(values.tags) && values.tags.length) {

138
src/views/question/issue/formSchemas.tsx

@ -1,3 +1,11 @@
/*
* @Author: AaronWu 2463371514@qq.com
* @Date: 2025-04-02 13:45:06
* @LastEditors: AaronWu 2463371514@qq.com
* @LastEditTime: 2025-07-28 14:09:09
* @FilePath: /IssueSupportManage/src/views/question/issue/formSchemas.tsx
* @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import type { FormSchema } from '@/components/core/schema-form/';
import { TableListItem } from './columns';
import { commonUpload } from '@/api/upload';
@ -278,71 +286,87 @@ export const getEditFormSchema: (
},
rules: [{ required: true }],
},
{
field: 'fileUploading',
component: 'Input',
defaultValue: false,
label: '附件上传状态',
vShow: false,
},
{
label: '描述附件',
field: 'files',
component: 'Upload',
componentProps: {
disabled: isDetail,
customRequest: async (data) => {
console.log('data: ', data);
const formData = new FormData();
formData.append('file', data.file);
const res = await commonUpload(formData);
console.log('res: ', res);
data?.onSuccess && data?.onSuccess(res, data.file as any);
},
beforeUpload: (file) => {
console.log('file: ', file);
componentProps: ({ formModel, formInstance }) => {
return {
disabled: isDetail,
customRequest: async (data) => {
// 添加附件上传状态
formInstance.setFieldsValue({
fileUploading: true,
});
console.log('data: ', data);
const formData = new FormData();
formData.append('file', data.file);
const res = await commonUpload(formData);
console.log('res: ', res);
data?.onSuccess && data?.onSuccess(res, data.file as any);
formInstance.setFieldsValue({
fileUploading: false,
});
},
beforeUpload: (file) => {
console.log('file: ', file);
// 限制允许上传的文件类型
// 添加视频和压缩包
const allowedTypes = [
// 文档
'xlsx',
'xls',
'doc',
'docx',
// 图片
'pdf',
'jpg',
'jpeg',
'png',
// 视频
'mp4',
'avi',
'mov',
'wmv',
'mkv',
'flv',
'webm',
// 压缩包
'zip',
'rar',
'7z',
'tar',
'gz',
'bz2',
'tgz',
'tbz2',
// 其他
'htm',
];
// 限制允许上传的文件类型
// 添加视频和压缩包
const allowedTypes = [
// 文档
'xlsx',
'xls',
'doc',
'docx',
// 图片
'pdf',
'jpg',
'jpeg',
'png',
// 视频
'mp4',
'avi',
'mov',
'wmv',
'mkv',
'flv',
'webm',
// 压缩包
'zip',
'rar',
'7z',
'tar',
'gz',
'bz2',
'tgz',
'tbz2',
// 其他
'htm',
];
// 检查文件类型
const fileType = getFileExtension(file.name) || 'unknown';
if (!allowedTypes.includes(fileType)) {
// 文件类型不在允许列表中,拒绝上传
// 可以在这里展示错误信息
message.warning('文件类型不正确');
return false;
}
// 检查文件类型
const fileType = getFileExtension(file.name) || 'unknown';
if (!allowedTypes.includes(fileType)) {
// 文件类型不在允许列表中,拒绝上传
// 可以在这里展示错误信息
message.warning('文件类型不正确');
return false;
}
// 其他验证逻辑...
// 其他验证逻辑...
// 允许上传
return true;
},
// 允许上传
return true;
},
};
},
componentSlots: {
default: () => (

18
src/views/question/issue/index.vue

@ -209,6 +209,11 @@
const values = await formRef?.validate();
if (values) {
console.log('values: ', values);
//
if (values.fileUploading) {
message.warning('请等待附件上传完成');
return;
}
values.id = curRecord.value.id;
if (values.files && Array.isArray(values.files) && values.files.length) {
@ -224,10 +229,16 @@
...e,
};
});
values.fileIds = values.files.filter((e) => e.id).map((e) => e.id).join(',');
values.fileIds = values.files
.filter((e) => e.id)
.map((e) => e.id)
.join(',');
} else {
values.fileIds = '';
}
if (values?.fileIds === ',') {
values.fileIds = '';
}
if (values?.tags && Array.isArray(values.tags) && values.tags.length) {
values.tags = values.tags.join(',');
@ -436,7 +447,10 @@
...e,
};
});
values.fileIds = values.files.filter((e) => e.id).map((e) => e.id).join(',');
values.fileIds = values.files
.filter((e) => e.id)
.map((e) => e.id)
.join(',');
} else {
values.fileIds = '';
}

127
src/views/question/knowledge/formSchemas.tsx

@ -83,70 +83,85 @@ export const getEditFormSchema: (
},
rules: [{ required: true, type: 'number' }],
},
{
field: 'fileUploading',
component: 'Input',
defaultValue: false,
label: '附件上传状态',
vShow: false,
},
{
label: '附件',
field: 'files',
component: 'Upload',
componentProps: {
disabled: isDetail,
customRequest: async (data) => {
console.log('data: ', data);
const formData = new FormData();
formData.append('file', data.file);
const res = await commonUpload(formData);
console.log('res: ', res);
data?.onSuccess && data?.onSuccess(res, data.file as any);
},
beforeUpload: (file) => {
console.log('file: ', file);
componentProps: ({ formModel, formInstance }) => {
return {
disabled: isDetail,
customRequest: async (data) => {
formInstance.setFieldsValue({
fileUploading: true,
});
console.log('data: ', data);
const formData = new FormData();
formData.append('file', data.file);
const res = await commonUpload(formData);
console.log('res: ', res);
data?.onSuccess && data?.onSuccess(res, data.file as any);
formInstance.setFieldsValue({
fileUploading: false,
});
},
beforeUpload: (file) => {
console.log('file: ', file);
// 限制允许上传的文件类型
const allowedTypes = [
// 文档
'xlsx',
'xls',
'doc',
'docx',
// 图片
'pdf',
'jpg',
'jpeg',
'png',
// 视频
'mp4',
'avi',
'mov',
'wmv',
'mkv',
'flv',
'webm',
// 压缩包
'zip',
'rar',
'7z',
'tar',
'gz',
'bz2',
'tgz',
'tbz2',
// 其他
'htm',
];
// 限制允许上传的文件类型
const allowedTypes = [
// 文档
'xlsx',
'xls',
'doc',
'docx',
// 图片
'pdf',
'jpg',
'jpeg',
'png',
// 视频
'mp4',
'avi',
'mov',
'wmv',
'mkv',
'flv',
'webm',
// 压缩包
'zip',
'rar',
'7z',
'tar',
'gz',
'bz2',
'tgz',
'tbz2',
// 其他
'htm',
];
// 检查文件类型
const fileType = getFileExtension(file.name) || 'unknown';
if (!allowedTypes.includes(fileType)) {
// 文件类型不在允许列表中,拒绝上传
// 可以在这里展示错误信息
message.warning('文件类型不正确');
return false;
}
// 检查文件类型
const fileType = getFileExtension(file.name) || 'unknown';
if (!allowedTypes.includes(fileType)) {
// 文件类型不在允许列表中,拒绝上传
// 可以在这里展示错误信息
message.warning('文件类型不正确');
return false;
}
// 其他验证逻辑...
// 其他验证逻辑...
// 允许上传
return true;
},
// 允许上传
return true;
},
}
},
componentSlots: {
default: () => (

19
src/views/question/knowledge/index.vue

@ -174,6 +174,11 @@
const values = await formRef?.validate();
if (values) {
console.log('values: ', values);
//
if (values.fileUploading) {
message.warning('请等待附件上传完成');
return;
}
values.id = curRecord.value.id;
if (values.files && Array.isArray(values.files) && values.files.length) {
@ -189,11 +194,18 @@
...e,
};
});
values.fileIds = values.files.map((e) => e.id).join(',');
values.fileIds = values.files
.filter((e) => e.id)
.map((e) => e.id)
.join(',');
} else {
values.fileIds = '';
}
if (values?.fileIds === ',') {
values.fileIds = '';
}
if (values?.tags && Array.isArray(values.tags) && values.tags.length) {
const allTags = (await getDictionaryByTypeName(DictEnum.TAG_TYPE)) || [];
// values.tagsallTags
@ -292,7 +304,10 @@
...e,
};
});
values.fileIds = values.files.map((e) => e.id).join(',');
values.fileIds = values.files
.filter((e) => e.id)
.map((e) => e.id)
.join(',');
} else {
values.fileIds = '';
}

Loading…
Cancel
Save