system-copyright-react/src/route/AppElectron/components/EditAppFiles/EditAppFiles.tsx
2025-05-21 17:33:03 +08:00

272 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState } from 'react'
import { Button, Form, Upload, message, } from "antd"
import { uploadFileUrl } from '../../../../request/request'
import { UploadOutlined } from '@ant-design/icons';
import './edit-app-files.css'
export default function EditAppFiles(props: any) {
// 定义允许上传的文件格式
const ALLOWED_FILE_TYPES = ['.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png'];
const beforeUpload = (file: File) => {
const fileExt = file.name.slice(file.name.lastIndexOf('.')).toLowerCase();
if (!ALLOWED_FILE_TYPES.includes(fileExt)) {
message.error(`仅支持 ${ALLOWED_FILE_TYPES.join(', ')} 格式的文件`);
return Upload.LIST_IGNORE;
}
return true;
};
// 处理文件点击预览
const handlePreview = (file: any) => {
console.log(file);
};
// 上传文件源码文档列表
const [upCodeArray, setUpCodeArray] = useState<any>([])
const [codeDis, setCodeDis] = useState(false)
const validateCodeFileUpload = (_rule: any, value: any) => {
if (!value || value.fileList.length === 0) {
return Promise.reject('请选择上传文件');
}
const file = value.fileList[0];
if (file.status === 'uploading') {
setCodeDis(true)
return Promise.reject('文件上传中,请稍候');
} else if (file.status === 'error') {
setCodeDis(true)
setUpCodeArray([])
return Promise.reject('文件上传失败,请删除后重新上传');
} else if (file.status !== 'done') {
setCodeDis(true)
setUpCodeArray([])
return Promise.reject('文件上传失败,请删除后重新上传');
} else if (file.status === 'done') {
setCodeDis(true)
return Promise.resolve();
}
return Promise.resolve();
};
// 上传文件软件文档列表
const [upSoftArray, setUpSoftArray] = useState<any>([])
const [softDis, setSoftDis] = useState(false)
const validateSoftFileUpload = (_rule: any, value: any) => {
if (!value || value.fileList.length === 0) {
return Promise.reject('请选择上传文件');
}
const file = value.fileList[0];
if (file.status === 'uploading') {
setSoftDis(true)
return Promise.reject('文件上传中,请稍候');
} else if (file.status === 'error') {
setSoftDis(true)
setUpSoftArray([])
return Promise.reject('文件上传失败,请删除后重新上传');
} else if (file.status !== 'done') {
setSoftDis(true)
setUpSoftArray([])
return Promise.reject('文件上传失败,请删除后重新上传');
} else if (file.status === 'done') {
setSoftDis(true)
return Promise.resolve();
}
return Promise.resolve();
};
const token = sessionStorage.getItem('token')
const height = window.innerHeight - 460;
const [form] = Form.useForm();
const handleSubmit = () => {
// console.log(form);
props.setEditProcess(4);
// 调用表单实例的 submit 方法
form.submit();
};
const submitInfo = (values: any) => {
message.success('提交成功');
console.log(values);
props.setEditProcess(3);
}
const onFinish = (values: any) => {
// 处理表单提交逻辑
console.log('表单提交成功', values);
submitInfo(values)
console.log(upCodeArray);
};
return (
<div>
<div className='bigLine'></div>
<div className='appInfoFormBox' style={{
height: height,
justifyContent: 'flex-start',
flexDirection: 'column',
marginLeft: '100px',
paddingBottom: '0'
}}>
<div style={{
height: '80px',
}}>
<Form form={form} onFinish={onFinish}
onFinishFailed={(errorInfo: any) => {
const errorMessages = errorInfo.errorFields.map((field: any) => field.errors[0]);
if (errorMessages.some((msg: any) => msg.includes('文件上传失败'))) {
message.error('文件上传失败,请重新上传');
} else if (errorMessages.some((msg: any) => msg.includes('文件上传中'))) {
message.error('文件上传中,请稍候');
} else if (errorMessages.some((msg: any) => msg.includes('文件状态异常'))) {
message.error('文件状态异常,请重新上传');
} else {
message.error('请完善信息');
}
}}
>
<div style={{
display: 'flex',
justifyContent: 'space-between',
width: '600px',
// background: 'pink'
}}>
<div className='appInfoFormInput' style={{
position: 'relative',
}}>
<div className='FormInputTitle' style={{
}}><span style={{color:'red',}}>*</span></div>
<div style={{
width: '220px',
}}>
<Form.Item name="ym" label="" rules={[
// { required: true, message: '请选上传文件' },
{ validator: validateCodeFileUpload }
]}>
<Upload
name="file"
action={uploadFileUrl()}
defaultFileList={upCodeArray}
onChange={({ fileList }) => {
console.log(fileList);
// console.log(upCodeArray);
}}
onRemove={() => {
setUpCodeArray([])
setCodeDis(false)
}}
beforeUpload={beforeUpload}
onPreview={handlePreview}
// onChange={handleUploadChange}
headers={{ 'Auth': `Bearer ${token}` }}
>
<Button icon={<UploadOutlined />} style={{
marginTop: '4px'
}}
disabled={codeDis}
></Button>
</Upload>
</Form.Item>
</div>
<a style={{
position: 'absolute',
top: '10px',
left: '260px',
textWrap: 'nowrap'
}}>[ ]</a>
</div>
<div className='appInfoFormInput' style={{
position: 'relative',
}}>
<div className='FormInputTitle' style={{
}}><span style={{color:'red',}}>*</span></div>
<div style={{
width: '220px',
}}>
<Form.Item name="file" label="" rules={[
// { required: true, message: '请上传文件' },
{ validator: validateSoftFileUpload }
]}>
<Upload
name="file"
action={uploadFileUrl()}
defaultFileList={upSoftArray}
onChange={({ fileList }) => {
console.log(fileList);
}}
onRemove={() => {
setUpSoftArray([])
setSoftDis(false)
}}
beforeUpload={beforeUpload}
// onChange={handleUploadChange}
headers={{ 'Auth': `Bearer ${token}` }}
>
<Button icon={<UploadOutlined />} style={{
marginTop: '4px'
}}
disabled={softDis}
></Button>
</Upload>
</Form.Item>
</div>
<a style={{
position: 'absolute',
top: '10px',
left: '260px',
textWrap: 'nowrap'
}}>[ ]</a>
</div>
</div>
</Form>
</div>
{/* <div className="fileTextBox">
{Array.from({ length: 100 }).map((_, index) => (
<span style={{
lineHeight: '30px',
fontSize: '14px',
}}
key={index}>
说明:1嘻嘻嘻啊司机大佬觉得拉家带口垃圾狄拉克
</span>
))}
</div> */}
</div>
<div className='bigLine'></div>
<div className='nextBtnBxo'>
<Button
style={{
width: '235px',
height: '46px',
borderRadius: '5px',
}}
onClick={() => {
props.setEditProcess(2)
}}></Button>
<Button
style={{
width: '235px',
height: '46px',
borderRadius: '5px',
marginLeft: '10px',
}}
type='primary'
onClick={() => {
handleSubmit()
}}></Button>
</div>
</div>
)
}