2024-04-12 14:12:38 +08:00
|
|
|
|
import './proj-edit.css';
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// import {Link, useNavigate, useParams} from "react-router-dom";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import { useNavigate, useParams } from "react-router-dom";
|
2024-07-15 16:58:47 +08:00
|
|
|
|
import {
|
|
|
|
|
Button,
|
|
|
|
|
// FloatButton,
|
|
|
|
|
message, Modal,
|
|
|
|
|
Tag, Upload,
|
|
|
|
|
// GetProp,
|
2024-07-15 18:41:42 +08:00
|
|
|
|
UploadProps,
|
2024-07-15 16:58:47 +08:00
|
|
|
|
} from "antd";
|
2024-07-17 11:51:21 +08:00
|
|
|
|
import { UploadOutlined } from '@ant-design/icons';
|
2024-07-15 16:58:47 +08:00
|
|
|
|
import TextArea from "antd/es/input/TextArea";
|
2024-04-12 14:12:38 +08:00
|
|
|
|
import StepProjEdit from "../../components/step/StepProjEdit.tsx";
|
|
|
|
|
import CardProjEdit from "../../components/card/CardProjEdit.tsx";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import { Process } from "../../interfaces/step/IStepProj.ts";
|
2024-07-15 16:58:47 +08:00
|
|
|
|
import CardProjLoading from "../../components/card/CardProjLoading.tsx";
|
|
|
|
|
import CardProjResult from "../../components/card/CardProjResult.tsx";
|
2024-04-12 14:12:38 +08:00
|
|
|
|
import CardProjDownload from "../../components/card/CardProjDownload.tsx";
|
|
|
|
|
import CardProjJump from "../../components/card/CardProjJump.tsx";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import { useEffect, useState } from "react";
|
2025-04-16 08:51:58 +08:00
|
|
|
|
import { Axios, get, put, post, uploadFileUrl, downloadUrl } from "../../util/AjaxUtils.ts";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import { EditStepEnum, IProjEdit } from "../../interfaces/card/ICardProj.ts";
|
2024-07-15 16:58:47 +08:00
|
|
|
|
import { MIN_MOD_SIZE } from "./edit/ProjConfigModList.tsx";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import { GenerateStatus } from "../../interfaces/proj/IProj.ts";
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// import AiHelper from "../../components/ai/AiHelper.tsx";
|
2024-06-14 15:59:55 +08:00
|
|
|
|
import TitleIntroduction from '../../route/proj/edit/ProjEditStep1.tsx'
|
|
|
|
|
import TitleIntroductionShow from '../../route/proj/edit/ProjEditStep1Show.tsx'
|
|
|
|
|
import SoftwareInfo from '../../route/proj/edit/ProjEditStep2.tsx'
|
|
|
|
|
import SoftwareInfoShow from '../../route/proj/edit/ProjEditStep2Show.tsx'
|
2024-07-15 16:58:47 +08:00
|
|
|
|
import SoftwareFeatures from '../../route/proj/edit/ProjEditStep3.tsx'
|
|
|
|
|
import SoftwareFeaturesShow from '../../route/proj/edit/ProjEditStep3Show.tsx'
|
|
|
|
|
import LoginPage from '../../route/proj/edit/ProjConfigLoginpage.tsx'
|
|
|
|
|
import LoginPageShow from '../../route/proj/edit/ProjConfigLoginpageShow.tsx'
|
|
|
|
|
import SoftwareManagement from '../../route/proj/edit/ProjConfigModList.tsx'
|
|
|
|
|
import SoftwareManagementShow from '../../route/proj/edit/ProjConfigModListShow.tsx'
|
|
|
|
|
import DisplayOrder from '../../route/proj/edit/ProjConfigMenuList.tsx'
|
|
|
|
|
import DisplayOrderShow from '../../route/proj/edit/ProjConfigMenuListShow.tsx'
|
2024-07-17 11:51:21 +08:00
|
|
|
|
import PRODUCTION from '../../static/status/PRODUCTION.gif'
|
|
|
|
|
import SUBMIT from '../../static/status/SUBMIT.gif'
|
|
|
|
|
import DONE from '../../static/status/DONE.gif'
|
|
|
|
|
import ING from '../../static/status/ING.gif'
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// import aiGif from '../../static/ai.gif'
|
|
|
|
|
// type AiHelperType = {
|
|
|
|
|
// projId: string;
|
|
|
|
|
// projIntroduction: string;
|
|
|
|
|
// projDesc: string;
|
|
|
|
|
// projMods: ProjModType[];
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// type ProjModType = {
|
|
|
|
|
// name: string,
|
|
|
|
|
// desc: string
|
|
|
|
|
// }
|
|
|
|
|
// type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
|
2024-04-12 14:12:38 +08:00
|
|
|
|
export default function ProjEditAll() {
|
2025-02-26 16:57:47 +08:00
|
|
|
|
// 是否显示下载安装包模块
|
|
|
|
|
const [showPkg, setShowPkg] = useState(false)
|
|
|
|
|
// 是否显示下载演示视频
|
|
|
|
|
const [showVideo, setShowVideo] = useState(false)
|
|
|
|
|
// 安装包模块生成状态
|
|
|
|
|
const [pkgStatus, setPkgStatus] = useState('')
|
|
|
|
|
// 视频模块生成状态
|
|
|
|
|
const [videoStatus, setVideoStatus] = useState('')
|
|
|
|
|
// 点击刷新页面数据获取安装包状态
|
|
|
|
|
const upData = () => {
|
|
|
|
|
get<any>({
|
|
|
|
|
messageApi: messageApi,
|
|
|
|
|
url: `api/proj/pkg/get/proj-id/${pathParams.projId}`,
|
|
|
|
|
onSuccess({ data }) {
|
|
|
|
|
// console.log(data);
|
|
|
|
|
if (data.pkgStatus == 'SUCCESS') {
|
|
|
|
|
messageApi.success('安装包生成完毕,请下载');
|
|
|
|
|
setPkgStatus('SUCCESS')
|
|
|
|
|
|
|
|
|
|
} else if (data.pkgStatus == 'FAIL') {
|
|
|
|
|
setPkgStatus('FAIL')
|
|
|
|
|
messageApi.error('安装包打包失败,点击重新打包');
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
messageApi.error('安装包正在生成,请稍后');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 点击刷新页面数据获取演示视频状态
|
|
|
|
|
const upVideoData = () => {
|
|
|
|
|
get<any>({
|
|
|
|
|
messageApi: messageApi,
|
|
|
|
|
url: `api/proj/video/get/proj-id/${pathParams.projId}`,
|
|
|
|
|
onSuccess({ data }) {
|
|
|
|
|
// console.log(data);
|
|
|
|
|
if (data.videoStatus == 'SUCCESS') {
|
|
|
|
|
messageApi.success('演示视频生成完毕,请下载');
|
|
|
|
|
setVideoStatus('SUCCESS')
|
|
|
|
|
} else if (data.videoStatus == 'FAIL') {
|
|
|
|
|
messageApi.error('演示视频打包失败,点击重新打包');
|
|
|
|
|
setVideoStatus('FAIL')
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
messageApi.error('演示视频正在生成,请稍后');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 重新打包安装包
|
|
|
|
|
const againPkg = () => {
|
|
|
|
|
post<any>({
|
|
|
|
|
messageApi,
|
|
|
|
|
url: `/api/proj/pkg/save-pkg/proj-id/${pathParams.projId}`,
|
|
|
|
|
|
|
|
|
|
onBefore() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onSuccess() {
|
|
|
|
|
messageApi.success('重新打包安装包');
|
|
|
|
|
setPkgStatus('PKGING')
|
|
|
|
|
},
|
|
|
|
|
onFinally() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
const againVideo = () => {
|
|
|
|
|
post<any>({
|
|
|
|
|
messageApi,
|
|
|
|
|
url: `/api/proj/video/save-pkg/proj-id/${pathParams.projId}`,
|
|
|
|
|
|
|
|
|
|
onBefore() {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onSuccess() {
|
|
|
|
|
messageApi.success('重新打包演示视频');
|
|
|
|
|
setVideoStatus('PKGING')
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onFinally() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
2024-08-27 18:29:20 +08:00
|
|
|
|
// 项目状态
|
|
|
|
|
const [projStatus, setprojStatus] = useState('')
|
2024-07-16 09:18:08 +08:00
|
|
|
|
// 进度提示弹窗
|
|
|
|
|
const [progressModal, setprogressModal] = useState(true)
|
|
|
|
|
// 当前进度
|
|
|
|
|
const [progress, setprogress] = useState('')
|
2024-07-15 18:41:42 +08:00
|
|
|
|
//证书img
|
|
|
|
|
const [certificate, setcertificate] = useState('')
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// 回复信息
|
|
|
|
|
const [aContent, setaContent] = useState('')
|
|
|
|
|
// 回复问题的id
|
|
|
|
|
const [projMaterialsAddId, setprojMaterialsAddId] = useState('')
|
|
|
|
|
// 上传附件
|
|
|
|
|
const [uploadedFiles, setUploadedFiles] = useState<any[]>([]);
|
|
|
|
|
// 接口需要的文件id数组
|
|
|
|
|
// const [aFiles, setAFiles] = useState<string[]>([])
|
2024-07-15 18:41:42 +08:00
|
|
|
|
const [isUploadDisabled, setIsUploadDisabled] = useState(false);
|
2025-04-16 08:51:58 +08:00
|
|
|
|
const token = sessionStorage.getItem('token')
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const props: UploadProps = {
|
|
|
|
|
maxCount: 6,//上传限制最多6个
|
|
|
|
|
action: uploadFileUrl(),
|
|
|
|
|
headers: {
|
2025-04-16 08:51:58 +08:00
|
|
|
|
'Auth': `Bearer ${token}`,
|
2024-07-15 16:58:47 +08:00
|
|
|
|
},
|
|
|
|
|
// headers={{'X-USER-ID': DevUserId}}
|
2025-04-16 08:51:58 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
beforeUpload: (file) => {
|
|
|
|
|
const isPNG = file.type === 'application/pdf';
|
|
|
|
|
if (!isPNG) {
|
|
|
|
|
message.error('只能上传 PDF 格式文件!');
|
|
|
|
|
return Upload.LIST_IGNORE; // 不允许上传非PDF文件
|
|
|
|
|
}
|
|
|
|
|
// return isPNG || Upload.LIST_IGNORE;
|
|
|
|
|
// 检查是否已经上传过相同文件
|
|
|
|
|
const isDuplicate = uploadedFiles.some(uploadedFile => (
|
|
|
|
|
uploadedFile.name === file.name && uploadedFile.size === file.size
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
if (isDuplicate) {
|
|
|
|
|
message.error('文件已经存在,请勿重复上传!');
|
|
|
|
|
return Upload.LIST_IGNORE; // 不允许上传重复文件
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-15 18:41:42 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
return true; // 允许上传文件
|
|
|
|
|
},
|
|
|
|
|
onChange: (info) => {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log(info.fileList);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
if (info.file.status === 'done') {
|
|
|
|
|
message.success('上传成功');
|
|
|
|
|
// info.file.name = '协议文件';
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('列表', info.file);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
setUploadedFiles([...uploadedFiles, info.file]); // 将上传成功的文件信息添加到列表中
|
|
|
|
|
// setUploadSignFileId(info.file.response.data.fileId);
|
|
|
|
|
|
|
|
|
|
} else if (info.file.status === 'error') {
|
|
|
|
|
message.error('上传失败');
|
|
|
|
|
}
|
2024-07-15 18:41:42 +08:00
|
|
|
|
setIsUploadDisabled(info.fileList.length >= 6);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
},
|
|
|
|
|
// action={uploadFileUrl()}
|
2024-07-15 18:41:42 +08:00
|
|
|
|
onRemove: (info) => {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('删除', info);
|
2024-07-15 18:41:42 +08:00
|
|
|
|
setUploadedFiles(prevFiles => prevFiles.filter(prevFile => prevFile.uid !== info.uid));
|
|
|
|
|
}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// const [uploadSignFileId, setUploadSignFileId] = useState('');
|
|
|
|
|
|
|
|
|
|
|
2024-06-14 15:59:55 +08:00
|
|
|
|
//第一步 标题简介弹窗
|
|
|
|
|
const [titleIntroductionOpen, setTitleIntroductionOpen] = useState(false)
|
|
|
|
|
const [titleIntroductionShowOpen, setTitleIntroductionShowOpen] = useState(false)
|
|
|
|
|
//第二步 软件基本信息弹窗
|
|
|
|
|
const [softwareInfoOpen, setSoftwareOpen] = useState(false)
|
|
|
|
|
const [softwareInfoShowOpen, setSoftwareShowOpen] = useState(false)
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// 第三步 软件功能特点弹窗
|
|
|
|
|
const [softwareFeaturesOpen, setSoftwareFeaturesOpen] = useState(false)
|
|
|
|
|
const [softwareFeaturesShowOpen, setSoftwareFeaturesShowOpen] = useState(false)
|
|
|
|
|
// 第四步 登陆页面设置
|
|
|
|
|
const [loginPageOpne, setLoginPageOpne] = useState(false)
|
|
|
|
|
const [loginPageShowOpne, setLoginPageShowOpne] = useState(false)
|
|
|
|
|
// 第五步 软件功能管理
|
|
|
|
|
const [softwareManagementOpen, setSoftwareManagementOpen] = useState(false)
|
|
|
|
|
const [softwareManagementShowOpen, setSoftwareManagementShowOpen] = useState(false)
|
|
|
|
|
// 第六步 显示顺序
|
|
|
|
|
const [displayOrderOpen, setDisplayOrderOpen] = useState(false)
|
|
|
|
|
const [displayOrderShowOpen, setDisplayOrderShowOpen] = useState(false)
|
|
|
|
|
|
|
|
|
|
// 判断是否完成状态 成功未处理/失败/正在处理
|
|
|
|
|
// 模块数量
|
|
|
|
|
// const [projModCount, setprojModCount] = useState(0)
|
|
|
|
|
const height = window.innerHeight - 180;
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const nav = useNavigate();
|
|
|
|
|
const pathParams = useParams();
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// 是否显示下载代码压缩包模块
|
|
|
|
|
// const [showZpi, setShowZpi] = useState(false)
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const [messageApi, contextHolder] = message.useMessage();
|
|
|
|
|
const [editStepArray, setEditStepArray] = useState<IProjEdit[]>([]);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const [configArray, setConfigArray] = useState<IProjEdit[]>([]);
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const [isEditStepEdited, setIsEditStepEdited] = useState(false);
|
|
|
|
|
const [isConfigEdited, setIsConfigEdited] = useState(false);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const [canGenerate, setCanGenerate] = useState(false);
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const [generateStatus, setGenerateStatus] = useState(GenerateStatus.NONE);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const [generateEmainingTime, setGenerateEmainingTime] = useState(0);
|
|
|
|
|
const [isGenerateModalOpen, setIsGenerateModalOpen] = useState(false);
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const [previewUrl, setPreviewUrl] = useState('');
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const [generateErrorModal, setGenerateErrorModal] = useState(false);
|
|
|
|
|
const [generateErrorMsg, setGenerateErrorMsg] = useState('');
|
|
|
|
|
const [aiHelperModalOpen, setAiHelperModalOpen] = useState(false);
|
|
|
|
|
// const [aiHelper, setAiHelper] = useState<AiHelperType>({
|
|
|
|
|
// projId: '',
|
|
|
|
|
// projIntroduction: '',
|
|
|
|
|
// projDesc: '',
|
|
|
|
|
// projMods: [],
|
|
|
|
|
// });
|
|
|
|
|
// 点击回复弹窗
|
|
|
|
|
const [replyModal, setReplyModal] = useState(false)
|
2024-04-12 14:12:38 +08:00
|
|
|
|
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// const height = window.innerHeight - 240;
|
2024-06-14 15:59:55 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const renderEditStep = (data: any, isEdited: boolean) => {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('嘻嘻', data);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// projIntroduction
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const editStepArray: IProjEdit[] = [];
|
|
|
|
|
editStepArray.push(
|
|
|
|
|
{
|
2024-05-28 18:00:42 +08:00
|
|
|
|
title: '第1步:软件简介确认',
|
|
|
|
|
desc: '修改软件系统的相关简介与详细介绍',
|
2024-04-12 14:12:38 +08:00
|
|
|
|
step: 1,
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
btnName: '查看',
|
2024-06-14 15:59:55 +08:00
|
|
|
|
status: data.projIntroduction ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
2024-04-12 14:12:38 +08:00
|
|
|
|
handleEdit() {
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/step1/${pathParams.projId}`)
|
|
|
|
|
// setTitleIntroductionOpen(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step1-show/${pathParams.projId}`)
|
|
|
|
|
setTitleIntroductionShowOpen(true)
|
|
|
|
|
// }
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-05-28 18:00:42 +08:00
|
|
|
|
title: '第2步:软件基本信息填写',
|
|
|
|
|
desc: '完善软件简称、版本号、软件所属者及联系人等信息',
|
2024-05-21 11:21:34 +08:00
|
|
|
|
step: 2,
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
btnName: '查看',
|
2024-12-23 10:35:32 +08:00
|
|
|
|
status: data.apply.projVersion ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
2024-04-12 14:12:38 +08:00
|
|
|
|
handleEdit() {
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// if (generateStatus != GenerateStatus.SUCCESS) {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/step2/${pathParams.projId}`)
|
|
|
|
|
// setSoftwareOpen(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step2-show/${pathParams.projId}`)
|
|
|
|
|
setSoftwareShowOpen(true)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '第3步:软件功能特点设置',
|
|
|
|
|
desc: '设置软件相关功能特点',
|
|
|
|
|
step: 3,
|
|
|
|
|
btnName: '查看',
|
|
|
|
|
status: data.apply.envHardDev ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
|
|
|
|
handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/step3/${pathParams.projId}`)
|
|
|
|
|
// setSoftwareFeaturesOpen(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step3-show/${pathParams.projId}`)
|
|
|
|
|
setSoftwareFeaturesShowOpen(true)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '第4步:登录页面设置',
|
|
|
|
|
desc: '对登录界面进行个性化设置,包括背景图片等',
|
|
|
|
|
step: 1,
|
|
|
|
|
btnName: '查看',
|
|
|
|
|
// 状态判断lyp
|
|
|
|
|
status: data.loginpage.loginpageId ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
|
|
|
|
handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/config-loginpage/${pathParams.projId}`)
|
|
|
|
|
// setLoginPageOpne(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/config-loginpage-show/${pathParams.projId}`)
|
|
|
|
|
setLoginPageShowOpne(true)
|
|
|
|
|
// }
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
2024-05-21 11:21:34 +08:00
|
|
|
|
// {
|
|
|
|
|
// title: '著作人信息',
|
|
|
|
|
// desc: '请完善著作人相关信息',
|
|
|
|
|
// step: 4,
|
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
// status: editSteps[3].editStatus,
|
|
|
|
|
// handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// nav(`/proj-edit/step4/${pathParams.projId}`)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step4-show/${pathParams.projId}`)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// title: '申请人信息',
|
|
|
|
|
// desc: '请完善申请人信息',
|
|
|
|
|
// step: 5,
|
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
// status: editSteps[4].editStatus,
|
|
|
|
|
// handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// nav(`/proj-edit/step5/${pathParams.projId}`)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step5-show/${pathParams.projId}`)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// },
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// {
|
|
|
|
|
// title: '选择登录页面',
|
|
|
|
|
// desc: '选择软件的登录页面模板',
|
|
|
|
|
// step: 6,
|
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
// status: editSteps[5].editStatus,
|
|
|
|
|
// handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// nav(`/proj-edit/step6/${pathParams.projId}`)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/step6-show/${pathParams.projId}`)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
2024-04-12 14:12:38 +08:00
|
|
|
|
)
|
|
|
|
|
setEditStepArray(editStepArray);
|
|
|
|
|
setIsEditStepEdited(isEdited);
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const renderSetting = (data: any, isConfig: boolean) => {
|
|
|
|
|
const configArray: IProjEdit[] = [];
|
|
|
|
|
configArray.push(
|
|
|
|
|
// {
|
|
|
|
|
// title: '登录界面设置',
|
|
|
|
|
// desc: '请对登录界面完成个性化设置',
|
|
|
|
|
// step: 1,
|
|
|
|
|
// btnName: !isGenerateSuccess ? '设置' : '查看',
|
|
|
|
|
// status: data.loginpage.loginpageId ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
|
|
|
|
// handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// nav(`/proj-edit/config-loginpage/${pathParams.projId}`)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/config-loginpage-show/${pathParams.projId}`)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
{
|
|
|
|
|
title: '第5步:对软件功能进行管理',
|
|
|
|
|
desc: '可对软件功能列表进行添加与修改',
|
|
|
|
|
step: 2,
|
|
|
|
|
btnName: '查看',
|
|
|
|
|
status: data.projModCount >= MIN_MOD_SIZE ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
|
|
|
|
handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/config-mod-list/${pathParams.projId}`)
|
|
|
|
|
// setSoftwareManagementOpen(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/config-mod-list-show/${pathParams.projId}`)
|
|
|
|
|
setSoftwareManagementShowOpen(true)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '第6步:设置功能列表显示顺序',
|
|
|
|
|
desc: '调整菜单顺序',
|
|
|
|
|
step: 3,
|
|
|
|
|
btnName: '查看',
|
|
|
|
|
status: data.projModCount >= MIN_MOD_SIZE ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
|
|
|
|
|
handleEdit() {
|
|
|
|
|
// if (!isGenerateSuccess) {
|
|
|
|
|
// // nav(`/proj-edit/config-menu-list/${pathParams.projId}`)
|
|
|
|
|
// setDisplayOrderOpen(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// nav(`/proj-edit/config-menu-list-show/${pathParams.projId}`)
|
|
|
|
|
setDisplayOrderShowOpen(true);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
setConfigArray(configArray);
|
|
|
|
|
setIsConfigEdited(isConfig);
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-12 14:12:38 +08:00
|
|
|
|
const renderData = () => {
|
|
|
|
|
get<any>({
|
|
|
|
|
messageApi: messageApi,
|
2024-07-15 18:41:42 +08:00
|
|
|
|
// url: `/api/proj/get/${pathParams.projId}`,
|
|
|
|
|
url: `/api/proj/claim/get/${pathParams.projId}`,
|
2024-06-14 15:59:55 +08:00
|
|
|
|
onSuccess({ data }) {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('嘻嘻', data);
|
2024-07-15 18:41:42 +08:00
|
|
|
|
setcertificate(data.certificates)
|
2024-07-16 17:56:28 +08:00
|
|
|
|
setprogress(data.progress)
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('状态判断', data.pay.chargeAdditionals);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// setShowZpi(true)
|
|
|
|
|
// const isShow = data.pay.chargeAdditionals.includes('PKG')
|
|
|
|
|
// console.log(isShow);
|
|
|
|
|
// if (isShow) {
|
|
|
|
|
// setShowZpi(true)
|
|
|
|
|
// } else {
|
|
|
|
|
// setShowZpi(false)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED
|
|
|
|
|
// && data.editSteps[1].editStatus == EditStepEnum.EDITED
|
|
|
|
|
// && data.editSteps[2].editStatus == EditStepEnum.EDITED
|
|
|
|
|
// && data.editSteps[3].editStatus == EditStepEnum.EDITED
|
|
|
|
|
// && data.editSteps[4].editStatus == EditStepEnum.EDITED
|
|
|
|
|
// && data.editSteps[5].editStatus == EditStepEnum.EDITED;
|
|
|
|
|
// setprojModCount(data.projModCount)
|
2024-12-26 12:39:59 +08:00
|
|
|
|
const isEdited = Boolean(data.projIntroduction) == true && Boolean(data.apply.projVersion) == true && Boolean(data.apply.envHardDev) == true && Boolean(data.loginpage.loginpageId) == true
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// console.log('isEdited',isEdited);
|
|
|
|
|
|
|
|
|
|
const isConfig = data.loginpage.loginpageId && data.projModCount >= MIN_MOD_SIZE;
|
|
|
|
|
const isGenerate = isEdited && isConfig;
|
|
|
|
|
// const isGenerateSuccess: boolean = data.generate.generateStatus == GenerateStatus.SUCCESS || data.generate.generateStatus == GenerateStatus.GENERATING;
|
|
|
|
|
renderEditStep(data, isEdited);
|
|
|
|
|
renderSetting(data, isConfig,);
|
|
|
|
|
setCanGenerate(isGenerate);
|
2024-04-12 14:12:38 +08:00
|
|
|
|
setGenerateStatus(data.generate.generateStatus);
|
|
|
|
|
setPreviewUrl(data.previewUrl);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
setGenerateEmainingTime(data.generate.generateEmainingTime);
|
|
|
|
|
setGenerateErrorMsg(data.generate.generateMsg);
|
|
|
|
|
// setAiHelper({
|
|
|
|
|
// projId: data.projId,
|
|
|
|
|
// projIntroduction: data.projIntroduction,
|
|
|
|
|
// projDesc: data.projDesc,
|
|
|
|
|
// projMods: data.projMods
|
|
|
|
|
// })
|
|
|
|
|
// setAiHelperModalOpen(!data.projIntroduction || !data.projDesc)
|
2024-08-27 18:29:20 +08:00
|
|
|
|
setprojStatus(data.projStatus)
|
2025-02-26 16:57:47 +08:00
|
|
|
|
if (data.projPkg.payStatus == 'PAID') {
|
|
|
|
|
setShowPkg(true)
|
|
|
|
|
setPkgStatus(data.projPkg.pkgStatus)
|
|
|
|
|
}
|
|
|
|
|
if (data.projVideo.payStatus == 'PAID') {
|
|
|
|
|
setShowVideo(true)
|
|
|
|
|
setVideoStatus(data.projVideo.videoStatus)
|
|
|
|
|
}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
2024-07-15 16:58:47 +08:00
|
|
|
|
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
const [questionList, setQuestionList] = useState<any[]>([])
|
|
|
|
|
// 获取问题及回复列表
|
|
|
|
|
const getQuestionList = () => {
|
|
|
|
|
get<any>({
|
|
|
|
|
messageApi: messageApi,
|
|
|
|
|
url: `/api/proj/materials/add/listpage/${pathParams.projId}`,
|
|
|
|
|
onSuccess({ data }) {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('问题列表', data);
|
2024-07-15 16:58:47 +08:00
|
|
|
|
setQuestionList(data.rows)
|
|
|
|
|
// console.log(JSON.parse(data.rows[0].aFiles));
|
2024-04-12 14:12:38 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
useEffect(() => {
|
|
|
|
|
renderData();
|
2024-07-15 16:58:47 +08:00
|
|
|
|
getQuestionList()
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}, [])
|
|
|
|
|
|
2024-06-14 15:59:55 +08:00
|
|
|
|
return (
|
2024-07-15 16:58:47 +08:00
|
|
|
|
<div className='proj-edit-box' style={{ height: `${height}px`, overflow: 'auto' }}>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
{contextHolder}
|
2024-05-12 07:45:51 +08:00
|
|
|
|
{/* <Breadcrumb
|
2024-04-12 14:12:38 +08:00
|
|
|
|
items={[
|
|
|
|
|
{title: <Link to={'/'}>首页</Link>},
|
|
|
|
|
{title: <Link to={'/proj-create'}>创建项目</Link>},
|
|
|
|
|
{title: '编辑项目'},
|
|
|
|
|
]}
|
2024-05-12 07:45:51 +08:00
|
|
|
|
/> */}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/* <div className="proj-edit" style={{height: `${height}px`}}> */}
|
|
|
|
|
<div className="proj-edit" style={{}}>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
<StepProjEdit step={1} process={isEditStepEdited ? Process.COMPLETE : Process.PROCESSING}
|
2024-06-14 15:59:55 +08:00
|
|
|
|
descTitle="完善信息"
|
|
|
|
|
descDetail="完善项目的基本信息"
|
|
|
|
|
hasNext={true}>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
{
|
|
|
|
|
editStepArray.map((item, index) => {
|
|
|
|
|
return <CardProjEdit key={`editStep-${index}`}
|
2024-06-14 15:59:55 +08:00
|
|
|
|
title={item.title}
|
|
|
|
|
desc={item.desc}
|
|
|
|
|
status={item.status}
|
|
|
|
|
btnName={item.btnName}
|
|
|
|
|
handleEdit={item.handleEdit}
|
|
|
|
|
background={item.status == EditStepEnum.EDITED ? '#F5FAFE' : '#f3f3f3'}
|
|
|
|
|
shadow={item.status == EditStepEnum.EDITED ? '0px 3px 0px 0px rgba(55,144,215,0.18)' : ''}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
/>
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</StepProjEdit>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/*trueisEditStepEdited*/}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
<StepProjEdit step={2}
|
2024-06-14 15:59:55 +08:00
|
|
|
|
process={!isEditStepEdited ? Process.PENDING : (isConfigEdited ? Process.COMPLETE : Process.PROCESSING)}
|
|
|
|
|
descTitle="功能设置"
|
|
|
|
|
descDetail="设置系统的菜单功能" hasNext={true}>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
{
|
2024-07-15 16:58:47 +08:00
|
|
|
|
configArray.map((item, index) => {
|
|
|
|
|
return <CardProjEdit key={`config-${index}`}
|
|
|
|
|
title={item.title}
|
|
|
|
|
desc={item.desc}
|
|
|
|
|
btnName={item.btnName}
|
|
|
|
|
canBtnClick={true}
|
|
|
|
|
status={item.status}
|
|
|
|
|
handleEdit={item.handleEdit}
|
|
|
|
|
background={item.status == EditStepEnum.EDITED ? '#F5FEFA' : '#f3f3f3'}
|
|
|
|
|
shadow={item.status == EditStepEnum.EDITED ? ' 0px 3px 0px 0px rgba(55,215,138,0.18)' : ''}
|
|
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
{
|
2024-08-27 18:29:20 +08:00
|
|
|
|
isEditStepEdited && isConfigEdited && projStatus != 'EXPIRED' ? (
|
2024-07-15 16:58:47 +08:00
|
|
|
|
<CardProjJump title="预览系统"
|
|
|
|
|
desc="点击查看预览系统"
|
|
|
|
|
canBtnClick={true}
|
|
|
|
|
handleJump={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank')
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}
|
|
|
|
|
</StepProjEdit>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
|
2024-04-12 14:12:38 +08:00
|
|
|
|
<StepProjEdit step={3}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
process={generateStatus == GenerateStatus.SUCCESS ? Process.COMPLETE : (canGenerate ? Process.PROCESSING : Process.PENDING)}
|
|
|
|
|
descTitle="资料生成"
|
|
|
|
|
hasNext={true}>
|
|
|
|
|
{
|
|
|
|
|
generateStatus == GenerateStatus.NONE || generateStatus == GenerateStatus.FAILED ? (
|
|
|
|
|
<CardProjEdit title="第8步:资料生成"
|
|
|
|
|
desc="生成软著所需要的资料,此操作后项目无法再次编辑"
|
2024-07-17 11:51:21 +08:00
|
|
|
|
// btnName="生成"
|
|
|
|
|
btnName=""
|
2024-07-15 16:58:47 +08:00
|
|
|
|
status={EditStepEnum.UN_EDIT}
|
2024-07-17 11:51:21 +08:00
|
|
|
|
// canBtnClick={canGenerate}
|
|
|
|
|
canBtnClick={false}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
handleEdit={() => {
|
|
|
|
|
setIsGenerateModalOpen(true);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// window.location.reload();
|
|
|
|
|
// }, 1000)
|
|
|
|
|
}}
|
|
|
|
|
// background = {status == EditStepEnum.EDITED?'#F5FAFE':'#f3f3f3'}
|
|
|
|
|
// shadow = {status == EditStepEnum.EDITED?'0px 3px 0px 0px rgba(55,144,215,0.18)':''}
|
|
|
|
|
background='#f3f3f3'
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
generateStatus == GenerateStatus.PENDING ? (
|
|
|
|
|
<CardProjLoading title="正在排队"
|
|
|
|
|
desc="资料正在排队"
|
|
|
|
|
duration={generateEmainingTime}
|
|
|
|
|
handleCountDownOver={() => {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
window.location.reload();
|
|
|
|
|
}, 1000)
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
generateStatus == GenerateStatus.GENERATING ? (
|
|
|
|
|
<CardProjLoading title="正在生成"
|
|
|
|
|
desc="资料正在生成,点击刷新"
|
|
|
|
|
duration={generateEmainingTime}
|
|
|
|
|
handleClick={() => {
|
|
|
|
|
renderData();
|
|
|
|
|
}}
|
|
|
|
|
handleCountDownOver={() => {
|
|
|
|
|
renderData();
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
generateStatus == GenerateStatus.SUCCESS ? (
|
|
|
|
|
<CardProjResult title="生成成功"
|
|
|
|
|
isSuccess={true}
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
generateStatus == GenerateStatus.FAILED ? (
|
|
|
|
|
<CardProjResult title="生成失败"
|
|
|
|
|
isSuccess={false}
|
|
|
|
|
handleFeedback={() => {
|
|
|
|
|
setGenerateErrorModal(true);
|
|
|
|
|
console.log('反馈')
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : <></>
|
|
|
|
|
}
|
|
|
|
|
</StepProjEdit>
|
|
|
|
|
|
|
|
|
|
<StepProjEdit step={4}
|
2024-06-14 15:59:55 +08:00
|
|
|
|
process={generateStatus == GenerateStatus.SUCCESS ? Process.PROCESSING : Process.PENDING}
|
|
|
|
|
descTitle="资料下载">
|
2024-04-12 14:12:38 +08:00
|
|
|
|
<CardProjDownload title="申请表"
|
2024-06-14 15:59:55 +08:00
|
|
|
|
desc="点击下载申请表"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-09-13 16:45:01 +08:00
|
|
|
|
downPdf={() => {
|
2025-03-11 15:34:41 +08:00
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply-txt/${pathParams.projId}`)
|
2024-09-13 16:45:01 +08:00
|
|
|
|
}}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
/>
|
|
|
|
|
<CardProjDownload title="操作手册"
|
2024-06-14 15:59:55 +08:00
|
|
|
|
desc="点击下载操作手册"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-09-13 16:45:01 +08:00
|
|
|
|
downPdf={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/pdf/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
/>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/* {showZpi && ( */}
|
2025-02-26 16:57:47 +08:00
|
|
|
|
{/* <CardProjDownload title="代码压缩包"
|
2024-06-14 15:59:55 +08:00
|
|
|
|
desc="点击下载代码压缩包"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-09-13 16:45:01 +08:00
|
|
|
|
downPdf={() => {
|
|
|
|
|
// window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/pdf/${pathParams.projId}`)
|
|
|
|
|
}}
|
2025-02-26 16:57:47 +08:00
|
|
|
|
/> */}
|
|
|
|
|
{showPkg && (
|
|
|
|
|
<CardProjDownload title="安装包"
|
|
|
|
|
desc="点击下载安装包"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
///route/proj/download/pkg/{projId}
|
|
|
|
|
// window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/${pathParams.projId}`)
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/pkg/${pathParams.projId}`)
|
|
|
|
|
}}
|
|
|
|
|
downPdf={() => {
|
|
|
|
|
// window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/pdf/${pathParams.projId}`)
|
|
|
|
|
}}
|
|
|
|
|
pkgStatus={pkgStatus}
|
|
|
|
|
|
|
|
|
|
upData={() => {
|
|
|
|
|
upData()
|
|
|
|
|
}}
|
|
|
|
|
againPkg={() => {
|
|
|
|
|
againPkg()
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{showVideo && (
|
|
|
|
|
<CardProjDownload title="演示视频"
|
|
|
|
|
desc="点击下载演示视频"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
///route/proj/download/pkg/{projId}
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/video/${pathParams.projId}`)
|
|
|
|
|
}}
|
|
|
|
|
downPdf={() => {
|
|
|
|
|
// window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/pdf/${pathParams.projId}`)
|
|
|
|
|
}}
|
|
|
|
|
videoStatus={videoStatus}
|
|
|
|
|
upVideoData={() => {
|
|
|
|
|
upVideoData()
|
|
|
|
|
}}
|
|
|
|
|
againVideo={() => {
|
|
|
|
|
againVideo()
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/* )} */}
|
|
|
|
|
{/* <CardProjDownload title="代码压缩包"
|
|
|
|
|
desc="点击下载代码压缩包"
|
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`)
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
/> */}
|
|
|
|
|
<CardProjDownload title="源代码"
|
|
|
|
|
desc="点击下载源代码"
|
2024-06-14 15:59:55 +08:00
|
|
|
|
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
|
|
|
|
handleDownload={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-09-13 16:45:01 +08:00
|
|
|
|
downPdf={() => {
|
|
|
|
|
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/pdf/${pathParams.projId}`)
|
|
|
|
|
}}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
/>
|
2024-07-15 18:41:42 +08:00
|
|
|
|
|
|
|
|
|
<CardProjDownload title="证书下载"
|
|
|
|
|
desc="点击下载证书"
|
2024-07-16 09:18:08 +08:00
|
|
|
|
canBtnClick={certificate != ''}
|
2024-07-15 18:41:42 +08:00
|
|
|
|
handleDownload={() => {
|
2024-07-16 09:18:08 +08:00
|
|
|
|
window.open(downloadUrl(certificate, false), '_blank')
|
2024-07-15 18:41:42 +08:00
|
|
|
|
}}
|
2024-09-13 16:45:01 +08:00
|
|
|
|
downPdf={() => {
|
|
|
|
|
}}
|
2024-07-15 18:41:42 +08:00
|
|
|
|
/>
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/*<CardProjJump title="找代理"*/}
|
|
|
|
|
{/* desc="到软著代理完成软著申请"*/}
|
|
|
|
|
{/* handleJump={() => {*/}
|
|
|
|
|
{/* nav(`/agent-select/${pathParams.projId}`);*/}
|
|
|
|
|
{/* }}*/}
|
|
|
|
|
{/*/>*/}
|
2024-04-12 14:12:38 +08:00
|
|
|
|
</StepProjEdit>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
|
|
|
|
|
<div className='editAll-box' >
|
|
|
|
|
|
|
|
|
|
<div className='editAll-box-title'>
|
|
|
|
|
资料补充
|
|
|
|
|
</div>
|
|
|
|
|
<div style={{ display: questionList.length == 0 ? 'block' : 'none' }} className='editAll-boxNo-con'>
|
|
|
|
|
暂无数据
|
|
|
|
|
</div>
|
2024-07-16 09:18:08 +08:00
|
|
|
|
<div style={{ marginTop: 50, maxHeight: `${height - 230}px`, overflow: 'auto', width: '100%' }}>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{questionList.length == 0 ? (<>
|
|
|
|
|
</>) : (<>
|
|
|
|
|
{questionList.map((item, index) => (
|
|
|
|
|
<div key={index} className='editAll-box-con'>
|
|
|
|
|
<div className='question'>
|
|
|
|
|
<div>提问</div>
|
|
|
|
|
<div className='questionStatus'>
|
|
|
|
|
<Tag color={item.status == 'NONE' ? '#108ee9' : item.status == 'PASSED' ? '#87d068' : item.status == 'UN_PASSED' ? '#f50' : item.status == 'PENDING' ? '#2db7f5' : ''}>
|
|
|
|
|
{item.status == 'NONE' ? '未回复' : item.status == 'PASSED' ? '通过' : item.status == 'UN_PASSED' ? '未通过' : item.status == 'PENDING' ? '待审核' : ''}
|
|
|
|
|
</Tag>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='boxtextTop'>
|
|
|
|
|
<div style={{ maxHeight: '140px', overflow: 'auto', fontSize: 16 }}>
|
|
|
|
|
{item.qContent}
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className='fileBox' >
|
2024-07-15 18:41:42 +08:00
|
|
|
|
{/* <div style={{ cursor: 'pointer' }} onClick={() => {
|
2024-07-15 16:58:47 +08:00
|
|
|
|
window.open(downloadUrl(item.qFiles))
|
2024-07-15 18:41:42 +08:00
|
|
|
|
}}>{item.qFiles}</div> */}
|
|
|
|
|
{item.qFileKVs.length == 0 ? (<></>) : (<>
|
|
|
|
|
{item.qFileKVs.map((item: any, index: number) => (
|
|
|
|
|
<span key={index}>
|
|
|
|
|
<div style={{ cursor: 'pointer', color: 'var(--color-blue)', wordWrap: 'break-word', widows: '100%' }} onClick={() => {
|
|
|
|
|
// window.open(downloadUrl(item.key))
|
2024-07-16 09:18:08 +08:00
|
|
|
|
window.open(downloadUrl(item.key, false), '_blank')
|
2024-07-15 18:41:42 +08:00
|
|
|
|
}}>{item.value} </div>
|
|
|
|
|
|
|
|
|
|
{/* <span style={{ marginRight: 5, visibility: index + 1 == JSON.parse(item.aFiles).length ? 'hidden' : 'visible' }}>,</span> */}
|
|
|
|
|
</span>
|
|
|
|
|
))}
|
|
|
|
|
</>)}
|
2024-07-15 16:58:47 +08:00
|
|
|
|
</div>
|
2024-07-15 18:41:42 +08:00
|
|
|
|
<div className='unReason' style={{ display: item.status == 'UN_PASSED' ? 'block' : 'none' }}>未通过原因:{item.reason}</div>
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
</div>
|
|
|
|
|
<div className='boxtitle' style={{}}>回复</div>
|
|
|
|
|
<div className='boxtextBot'>
|
|
|
|
|
<div style={{ maxHeight: '100px', overflow: 'auto', fontSize: 16 }}>{item.aContent}</div>
|
|
|
|
|
|
|
|
|
|
<div className='fileBox'>
|
2024-07-15 18:41:42 +08:00
|
|
|
|
{item.aFileKVs.length == 0 ? (<></>) : (<>
|
|
|
|
|
{item.aFileKVs.map((item: any, index: number) => (
|
|
|
|
|
<span key={index}>
|
|
|
|
|
<div style={{ cursor: 'pointer', color: 'var(--color-blue)' }} onClick={() => {
|
|
|
|
|
// window.open(downloadUrl(item.key))
|
2024-07-16 09:18:08 +08:00
|
|
|
|
window.open(downloadUrl(item.key, false), '_blank')
|
2024-07-15 18:41:42 +08:00
|
|
|
|
}}>{item.value} </div>
|
|
|
|
|
|
|
|
|
|
{/* <span style={{ marginRight: 5, visibility: index + 1 == JSON.parse(item.aFiles).length ? 'hidden' : 'visible' }}>,</span> */}
|
|
|
|
|
</span>
|
|
|
|
|
))}
|
|
|
|
|
</>)}
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
|
|
|
|
|
<Button style={{ marginTop: '8px', display: item.status == 'PASSED' ? 'none' : 'block' }} onClick={() => {
|
|
|
|
|
setReplyModal(true)
|
|
|
|
|
setprojMaterialsAddId(item.projMaterialsAddId)
|
|
|
|
|
setUploadedFiles([])//清除
|
|
|
|
|
setaContent('')
|
|
|
|
|
}}>回复</Button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
))}
|
|
|
|
|
</>)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{/* <div className='editAll-box-con' >
|
|
|
|
|
<div className=' question'>
|
|
|
|
|
<div>提问</div>
|
|
|
|
|
<div className='questionStatus'>
|
|
|
|
|
<Tag color="magenta">未通过</Tag>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='boxtextTop'>
|
|
|
|
|
<div style={{ maxHeight: '140px', overflow: 'auto', fontSize: 16 }}>嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻</div>
|
|
|
|
|
<div className='fileBox'>文件1,文件2</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className='boxtitle'>回复</div>
|
|
|
|
|
<div className='boxtextBot'>
|
|
|
|
|
<div style={{ maxHeight: '100px', overflow: 'auto', fontSize: 16 }}>哈哈哈哈哈哈哈哈</div>
|
|
|
|
|
|
|
|
|
|
<div className='fileBox'>文件1,文件2</div>
|
|
|
|
|
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
|
|
|
|
|
<Button style={{ marginTop: '8px' }} onClick={() => {
|
|
|
|
|
setReplyModal(true)
|
|
|
|
|
}}>回复</Button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div> */}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
2024-04-12 14:12:38 +08:00
|
|
|
|
</div>
|
|
|
|
|
<div className="btn-container">
|
|
|
|
|
<Button size="large" style={{
|
|
|
|
|
width: '200px',
|
2024-06-14 15:59:55 +08:00
|
|
|
|
height: '40px',
|
2024-05-12 07:45:51 +08:00
|
|
|
|
fontSize: '16px',
|
2024-07-15 16:58:47 +08:00
|
|
|
|
backgroundColor: 'white',
|
|
|
|
|
// color: '#A0A0A0',
|
|
|
|
|
// border: 'none',
|
2024-04-12 14:12:38 +08:00
|
|
|
|
}} onClick={() => {
|
|
|
|
|
nav(-1);
|
|
|
|
|
}}>返回</Button>
|
|
|
|
|
</div>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/* <FloatButton.Group>
|
|
|
|
|
<FloatButton
|
|
|
|
|
shape="square" //报错处理
|
|
|
|
|
onClick={() => { setAiHelperModalOpen(true) }}
|
|
|
|
|
description={<span style={{ fontWeight: 'bold' }}>AI</span>}
|
|
|
|
|
>AI助手</FloatButton>
|
|
|
|
|
</FloatButton.Group> */}
|
|
|
|
|
{/* <div className='aiImg' onClick={() => { setAiHelperModalOpen(true) }}>
|
|
|
|
|
<img src={aiGif} alt="" width={'100%'} height={'100%'} />
|
|
|
|
|
</div> */}
|
|
|
|
|
|
|
|
|
|
<Modal title="提示"
|
|
|
|
|
okText="确定"
|
|
|
|
|
cancelText="取消"
|
2025-01-20 15:24:23 +08:00
|
|
|
|
centered
|
2024-07-15 16:58:47 +08:00
|
|
|
|
open={isGenerateModalOpen}
|
|
|
|
|
onOk={() => {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
window.location.reload();
|
|
|
|
|
}, 1000)
|
|
|
|
|
post({
|
|
|
|
|
messageApi,
|
|
|
|
|
url: `/api/proj/generate/proj-id/${pathParams.projId}`,
|
|
|
|
|
body: {},
|
|
|
|
|
onSuccess() {
|
|
|
|
|
messageApi.success('提交成功');
|
|
|
|
|
setIsGenerateModalOpen(false);
|
|
|
|
|
renderData();
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setIsGenerateModalOpen(false);
|
|
|
|
|
}}>
|
|
|
|
|
<div>点击“确定按钮”后,项目便无法再次修改,建议通过预览查看系统,确认无误后点击“确定按钮”。</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
<Modal open={generateErrorModal}
|
|
|
|
|
title="出错信息"
|
|
|
|
|
okText="确定"
|
|
|
|
|
cancelText={false}
|
|
|
|
|
footer={false}
|
|
|
|
|
okButtonProps={{
|
|
|
|
|
style: {
|
|
|
|
|
backgroundColor: 'var(--color-primary)',
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setGenerateErrorModal(false)
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<p style={{ color: 'var(--color-red)' }}>{generateErrorMsg}</p>
|
|
|
|
|
</Modal>
|
|
|
|
|
<Modal open={aiHelperModalOpen}
|
|
|
|
|
title=""
|
|
|
|
|
width={1200}
|
|
|
|
|
footer={false}
|
|
|
|
|
maskClosable={false}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setAiHelperModalOpen(false);
|
|
|
|
|
|
|
|
|
|
renderData()
|
|
|
|
|
// setAiHelperModalOpen(false);
|
|
|
|
|
// console.log(123);
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
{/* <div style={{ height: `${height - 20}px`, overflow: 'hidden', }}>
|
|
|
|
|
<AiHelper
|
|
|
|
|
projId={aiHelper.projId}
|
|
|
|
|
projIntroduction={aiHelper.projIntroduction}
|
|
|
|
|
projDesc={aiHelper.projDesc}
|
|
|
|
|
isFree={false}
|
|
|
|
|
renderData={() => {
|
|
|
|
|
renderData()
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</div> */}
|
|
|
|
|
</Modal>
|
2024-06-14 15:59:55 +08:00
|
|
|
|
{/* 第1步设置 */}
|
|
|
|
|
<Modal open={titleIntroductionOpen}
|
|
|
|
|
title="软件简介确认"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
|
|
|
|
|
setTitleIntroductionOpen(false);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// window.location.reload()
|
|
|
|
|
// }, 500)
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
<TitleIntroduction closeModal={() => {
|
|
|
|
|
setTitleIntroductionOpen(false)
|
2024-06-21 16:18:01 +08:00
|
|
|
|
renderData()
|
2024-07-15 16:58:47 +08:00
|
|
|
|
}}></TitleIntroduction>
|
2024-06-14 15:59:55 +08:00
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第1步查看 */}
|
|
|
|
|
<Modal open={titleIntroductionShowOpen}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
title="软件简介查看"
|
|
|
|
|
width={1500}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setTitleIntroductionShowOpen(false);
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<TitleIntroductionShow></TitleIntroductionShow>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第二步设置 */}
|
|
|
|
|
<Modal open={softwareInfoOpen}
|
|
|
|
|
title="软件基本信息填写"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setSoftwareOpen(false);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// props.closeModal()
|
|
|
|
|
// window.location.reload(); // 刷新页面
|
|
|
|
|
// }, 1000);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// window.location.reload()
|
|
|
|
|
// }, 500)
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
<SoftwareInfo closeModal={() => {
|
|
|
|
|
setSoftwareOpen(false)
|
2024-06-21 16:18:01 +08:00
|
|
|
|
renderData()
|
2024-07-15 16:58:47 +08:00
|
|
|
|
}}></SoftwareInfo>
|
2024-06-14 15:59:55 +08:00
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第二步查看 */}
|
|
|
|
|
<Modal open={softwareInfoShowOpen}
|
|
|
|
|
title="软件基本信息查看"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setSoftwareShowOpen(false);
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<SoftwareInfoShow></SoftwareInfoShow>
|
|
|
|
|
</Modal>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
{/* 第三步 设置 */}
|
|
|
|
|
<Modal open={softwareFeaturesOpen}
|
|
|
|
|
title="软件功能特点设置"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setSoftwareFeaturesOpen(false);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// window.location.reload()
|
|
|
|
|
// }, 500)
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<SoftwareFeatures closeModal={() => {
|
|
|
|
|
setSoftwareFeaturesOpen(false)
|
|
|
|
|
renderData()
|
|
|
|
|
}}></SoftwareFeatures>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第三步 查看 */}
|
|
|
|
|
<Modal open={softwareFeaturesShowOpen}
|
|
|
|
|
title="软件功能特点查看"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setSoftwareFeaturesShowOpen(false);
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<SoftwareFeaturesShow ></SoftwareFeaturesShow>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第四步 设置 */}
|
|
|
|
|
<Modal open={loginPageOpne}
|
|
|
|
|
title="登陆页面设置"
|
|
|
|
|
width={1700}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setLoginPageOpne(false);
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// window.location.reload()
|
|
|
|
|
// }, 500)
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<LoginPage closeModal={() => {
|
|
|
|
|
setLoginPageOpne(false)
|
|
|
|
|
renderData()
|
|
|
|
|
}}></LoginPage>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第四步 查看 */}
|
|
|
|
|
<Modal open={loginPageShowOpne}
|
|
|
|
|
title="登陆页面查看"
|
|
|
|
|
width={1700}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setLoginPageShowOpne(false);
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<LoginPageShow></LoginPageShow>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第五步 设置 */}
|
|
|
|
|
<Modal open={softwareManagementOpen}
|
|
|
|
|
title="软件功能管理设置"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
renderData()
|
|
|
|
|
setSoftwareManagementOpen(false);
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<SoftwareManagement></SoftwareManagement>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第五步 查看 */}
|
|
|
|
|
<Modal open={softwareManagementShowOpen}
|
|
|
|
|
title="软件功能管理查看"
|
|
|
|
|
width={1500}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setSoftwareManagementShowOpen(false);
|
|
|
|
|
}}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<SoftwareManagementShow></SoftwareManagementShow>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第六步 设置 */}
|
|
|
|
|
<Modal open={displayOrderOpen}
|
|
|
|
|
title="设置功能列表显示顺序"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
renderData()
|
|
|
|
|
setDisplayOrderOpen(false);
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<DisplayOrder></DisplayOrder>
|
|
|
|
|
</Modal>
|
|
|
|
|
{/* 第六步 查看 */}
|
|
|
|
|
<Modal open={displayOrderShowOpen}
|
|
|
|
|
title="查看功能列表显示顺序"
|
|
|
|
|
width={1500}
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setDisplayOrderShowOpen(false);
|
|
|
|
|
}}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<DisplayOrderShow></DisplayOrderShow>
|
|
|
|
|
</Modal>
|
|
|
|
|
<Modal title="回复内容"
|
|
|
|
|
okText="确定"
|
|
|
|
|
cancelText="取消"
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
open={replyModal}
|
|
|
|
|
width={800}
|
|
|
|
|
onOk={() => {
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('上传文件', uploadedFiles);
|
2024-07-15 18:41:42 +08:00
|
|
|
|
// return
|
2024-07-31 16:00:30 +08:00
|
|
|
|
// console.log('上传信息', aContent)
|
2024-07-15 18:41:42 +08:00
|
|
|
|
if (aContent == '') {
|
2024-07-15 16:58:47 +08:00
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: '请回复内容'
|
|
|
|
|
})
|
2024-07-15 18:41:42 +08:00
|
|
|
|
} else if (uploadedFiles.length == 0) {
|
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'error',
|
|
|
|
|
content: '请上传文件'
|
|
|
|
|
})
|
2024-07-15 18:41:42 +08:00
|
|
|
|
} else {
|
2024-07-15 16:58:47 +08:00
|
|
|
|
put({
|
|
|
|
|
messageApi,
|
|
|
|
|
url: `/api/proj/materials/add/update-a/${projMaterialsAddId}`,
|
|
|
|
|
body: {
|
|
|
|
|
aContent,
|
2024-07-15 18:41:42 +08:00
|
|
|
|
// aFiles: uploadedFiles.map(file => file.response.data.fileId)
|
|
|
|
|
aFiles: uploadedFiles.map(file => file.response.data.fileId).join(',')
|
2024-07-15 16:58:47 +08:00
|
|
|
|
},
|
|
|
|
|
onBefore() {
|
|
|
|
|
},
|
|
|
|
|
onSuccess() {
|
2024-07-15 18:41:42 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
// alert('编辑成功')
|
|
|
|
|
messageApi.open({
|
|
|
|
|
type: 'success',
|
|
|
|
|
content: '回复成功'
|
|
|
|
|
})
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
setReplyModal(false);
|
|
|
|
|
getQuestionList()
|
|
|
|
|
// window.location.reload(); // 刷新页面
|
|
|
|
|
}, 1000);
|
|
|
|
|
// getProjOwnerList()
|
2024-07-15 18:41:42 +08:00
|
|
|
|
|
2024-07-15 16:58:47 +08:00
|
|
|
|
},
|
|
|
|
|
onFinally() {
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// uploadedFiles.map(file => file.uid);
|
|
|
|
|
// put({
|
|
|
|
|
// messageApi,
|
|
|
|
|
// url: `/api/proj/materials/add/update-a/${projMaterialsAddId}`,
|
|
|
|
|
// body: {
|
|
|
|
|
// aContent,
|
|
|
|
|
// aFiles: uploadedFiles.map(file => file.response.data.fileId)
|
|
|
|
|
// },
|
|
|
|
|
// onBefore() {
|
|
|
|
|
// },
|
|
|
|
|
// onSuccess() {
|
|
|
|
|
|
|
|
|
|
// // alert('编辑成功')
|
|
|
|
|
// messageApi.open({
|
|
|
|
|
// type: 'success',
|
|
|
|
|
// content: '回复成功'
|
|
|
|
|
// })
|
|
|
|
|
// setTimeout(() => {
|
|
|
|
|
// setReplyModal(false);
|
|
|
|
|
// getQuestionList()
|
|
|
|
|
// // window.location.reload(); // 刷新页面
|
|
|
|
|
// }, 1000);
|
|
|
|
|
// // getProjOwnerList()
|
|
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
// onFinally() {
|
|
|
|
|
// }
|
|
|
|
|
// })
|
|
|
|
|
}}
|
|
|
|
|
onCancel={() => {
|
|
|
|
|
setReplyModal(false);
|
|
|
|
|
}}>
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
|
<TextArea style={{ height: '200px', resize: 'none', fontSize: 16 }} onChange={(e) => {
|
|
|
|
|
setaContent(e.target.value)
|
|
|
|
|
}} ></TextArea>
|
|
|
|
|
|
|
|
|
|
<div className='upload-box'>
|
|
|
|
|
<div className='uploadTitle'>
|
|
|
|
|
附件:
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<Upload {...props} listType="picture" multiple>
|
2024-07-15 18:41:42 +08:00
|
|
|
|
<Button disabled={isUploadDisabled} icon={<UploadOutlined />}>上传</Button>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
</Upload>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
2024-07-16 09:18:08 +08:00
|
|
|
|
<Modal title=""
|
|
|
|
|
destroyOnClose={true}
|
|
|
|
|
open={progressModal}
|
|
|
|
|
|
|
|
|
|
style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
justifyContent: 'center',
|
|
|
|
|
height: `${height}px`,
|
2024-08-27 18:29:20 +08:00
|
|
|
|
|
2024-07-16 09:18:08 +08:00
|
|
|
|
}}
|
|
|
|
|
|
2024-08-27 18:29:20 +08:00
|
|
|
|
footer={null}
|
2024-07-16 09:18:08 +08:00
|
|
|
|
onCancel={() => {
|
|
|
|
|
setprogressModal(false);
|
|
|
|
|
}}>
|
|
|
|
|
<div style={{
|
2024-07-16 17:56:28 +08:00
|
|
|
|
width: 600,
|
2024-07-16 09:18:08 +08:00
|
|
|
|
// marginTop: 20
|
2024-08-27 18:29:20 +08:00
|
|
|
|
fontSize: 18,
|
|
|
|
|
height: 500,
|
|
|
|
|
display: 'flex',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
justifyContent: 'center',
|
|
|
|
|
flexDirection: 'column'
|
2024-07-16 09:18:08 +08:00
|
|
|
|
}}>
|
2024-08-27 18:29:20 +08:00
|
|
|
|
<img src={progress == 'PRODUCTION' ? PRODUCTION : progress == 'SUBMIT_FOR_REVIEW' ? SUBMIT : progress == 'DONE' ? DONE : ING} alt="" width={300} />
|
|
|
|
|
<div style={{ marginTop: 10 }}>{progress == 'PRODUCTION' ? '您申请的软著正在制作中,预计一日内完成' : progress == 'SUBMIT_FOR_REVIEW' ? '您申请的软著已提交国家版权中心,预计60个工作日内下证' : progress == 'DONE' ? '您申请的软著已完成,请在页面证书下载处下载' : '您申请的软著等待制作中,预计两日内完成'}</div>
|
2024-07-16 09:18:08 +08:00
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
2024-07-15 16:58:47 +08:00
|
|
|
|
</div>
|
2024-04-12 14:12:38 +08:00
|
|
|
|
)
|
|
|
|
|
}
|