system-copyright-react/src/route/proj/ProjEdit.tsx

247 lines
10 KiB
TypeScript
Raw Normal View History

2024-03-14 23:34:40 +08:00
import './proj-edit.css';
2024-03-21 22:22:35 +08:00
import {Link, useNavigate, useParams} from "react-router-dom";
import {Breadcrumb, Button, message} from "antd";
2024-03-14 23:34:40 +08:00
import StepProjEdit from "../../components/step/StepProjEdit.tsx";
import CardProjEdit from "../../components/card/CardProjEdit.tsx";
2024-03-15 18:18:29 +08:00
import {Process} from "../../interfaces/step/IStepProj.ts";
import CardProjLoading from "../../components/card/CardProjLoading.tsx";
import CardProjResult from "../../components/card/CardProjResult.tsx";
import CardProjDownload from "../../components/card/CardProjDownload.tsx";
import CardProjJump from "../../components/card/CardProjJump.tsx";
2024-03-21 22:22:35 +08:00
import {useEffect, useState} from "react";
import {get} from "../../util/AjaxUtils.ts";
import {EditStepEnum, IProjEdit} from "../../interfaces/card/ICardProj.ts";
2024-03-14 23:34:40 +08:00
export default function ProjEdit() {
2024-03-15 18:18:29 +08:00
const nav = useNavigate();
2024-03-21 22:22:35 +08:00
const pathParams = useParams();
const [messageApi, contextHolder] = message.useMessage();
const [editStepArray, setEditStepArray] = useState<IProjEdit[]>([]);
const [configArray, setConfigArray] = useState<IProjEdit[]>([]);
2024-03-22 21:22:12 +08:00
const [isEditStepEdited, setIsEditStepEdited] = useState(false);
const [isConfigEdited, setIsConfigEdited] = useState(false);
// const [isAllStepEdited, setIsAllStepEdited] = useState(false);
2024-03-21 22:22:35 +08:00
const [canGenerate, setCanGenerate] = useState(false);
2024-03-15 18:18:29 +08:00
const height = window.innerHeight - 240;
2024-03-21 22:22:35 +08:00
const renderEditStep = (editSteps: any[]) => {
const editStepArray: IProjEdit[] = [];
editStepArray.push(
{
title: '标题简介',
desc: '完善代码、样式类型和详细介绍等内容',
step: 1,
status: editSteps[0].editStatus,
handleEdit() {
nav(`/proj-edit/step1/${pathParams.projId}`)
}
},
{
title: '基本信息',
desc: '完善项目简介、编程语言、版本、公司等内容',
step: 2,
status: editSteps[1].editStatus,
handleEdit() {
nav(`/proj-edit/step2/${pathParams.projId}`)
}
},
{
title: '软件功能特点',
desc: '请完善软件功能特点',
step: 3,
status: editSteps[2].editStatus,
handleEdit() {
nav(`/proj-edit/step3/${pathParams.projId}`)
}
},
{
title: '著作人信息',
desc: '请完善著作人相关信息',
step: 4,
status: editSteps[3].editStatus,
handleEdit() {
nav(`/proj-edit/step4/${pathParams.projId}`)
}
},
{
title: '申请人信息',
desc: '请完善申请人信息',
step: 5,
status: editSteps[4].editStatus,
handleEdit() {
2024-03-22 21:22:12 +08:00
nav(`/proj-edit/step5/${pathParams.projId}`)
2024-03-21 22:22:35 +08:00
}
},
{
title: '选择登录页面',
desc: '选择软件的登录页面模板',
step: 6,
status: editSteps[5].editStatus,
handleEdit() {
2024-03-22 21:22:12 +08:00
nav(`/proj-edit/step6/${pathParams.projId}`)
2024-03-21 22:22:35 +08:00
}
}
)
setEditStepArray(editStepArray);
2024-03-22 21:22:12 +08:00
setIsEditStepEdited(
editSteps[0].editStatus == EditStepEnum.EDITED
&& editSteps[1].editStatus == EditStepEnum.EDITED
&& editSteps[2].editStatus == EditStepEnum.EDITED
&& editSteps[3].editStatus == EditStepEnum.EDITED
&& editSteps[4].editStatus == EditStepEnum.EDITED
&& editSteps[5].editStatus == EditStepEnum.EDITED
)
2024-03-21 22:22:35 +08:00
}
2024-03-22 21:22:12 +08:00
const renderSetting = (data: any) => {
2024-03-21 22:22:35 +08:00
const configArray: IProjEdit[] = [];
configArray.push(
{
title: '登录界面设置',
desc: '请对登录界面完成个性化设置',
step: 1,
btnName: '设置',
2024-03-22 21:22:12 +08:00
status: data.loginpage.loginpageId ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-22 21:22:12 +08:00
nav(`/proj-edit/config-loginpage/${pathParams.projId}`)
2024-03-21 22:22:35 +08:00
}
},
{
title: '系统菜单管理',
desc: '请对系统菜单进行设置',
step: 2,
btnName: '设置',
2024-03-22 21:22:12 +08:00
status: data.projModCount > 0 ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-22 21:22:12 +08:00
nav(`/proj-edit/config-mod-list/${pathParams.projId}`)
2024-03-21 22:22:35 +08:00
}
},
{
title: '菜单顺序',
desc: '调整菜单顺序',
step: 3,
btnName: '设置',
2024-03-22 21:22:12 +08:00
status: data.projModCount > 0 ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
}
}
)
setConfigArray(configArray);
}
useEffect(() => {
get({
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
onSuccess({data}) {
renderEditStep(data.editSteps);
2024-03-22 21:22:12 +08:00
renderSetting(data);
2024-03-21 22:22:35 +08:00
}
})
}, [])
2024-03-14 23:34:40 +08:00
return (
<>
2024-03-21 22:22:35 +08:00
{contextHolder}
2024-03-14 23:34:40 +08:00
<Breadcrumb
items={[
{title: <Link to={'/'}></Link>},
{title: <Link to={'/proj-create'}></Link>},
{title: '编辑项目'},
]}
/>
2024-03-15 18:18:29 +08:00
<div className="proj-edit" style={{height: `${height}px`}}>
2024-03-22 21:22:12 +08:00
<StepProjEdit step={1} process={isEditStepEdited ? Process.COMPLETE : Process.PROCESSING}
descTitle="完善信息"
2024-03-21 22:22:35 +08:00
descDetail="完善项目的基本信息"
2024-03-15 18:18:29 +08:00
hasNext={true}>
2024-03-21 22:22:35 +08:00
{
editStepArray.map((item, index) => {
return <CardProjEdit key={`editStep-${index}`}
title={item.title}
desc={item.desc}
status={item.status}
handleEdit={item.handleEdit}
/>
})
}
2024-03-15 18:18:29 +08:00
</StepProjEdit>
2024-03-22 21:22:12 +08:00
<StepProjEdit step={2}
process={!isEditStepEdited ? Process.PENDING : (isConfigEdited ? Process.COMPLETE : Process.PROCESSING)}
descTitle="功能设置"
2024-03-21 22:22:35 +08:00
descDetail="设置系统的菜单功能" hasNext={true}>
{
configArray.map((item, index) => {
return <CardProjEdit key={`config-${index}`}
title={item.title}
desc={item.desc}
btnName={item.btnName}
2024-03-22 21:22:12 +08:00
canBtnClick={isEditStepEdited}
2024-03-21 22:22:35 +08:00
status={item.status}
handleEdit={item.handleEdit}
/>
})
}
2024-03-22 21:22:12 +08:00
{
isEditStepEdited && isConfigEdited ? (
<CardProjJump title="预览系统"
desc="点击查看预览系统"
handleJump={() => {
nav('/agent-select/2');
}}
/>
) : <></>
}
2024-03-15 18:18:29 +08:00
</StepProjEdit>
<StepProjEdit step={3} process={Process.PENDING} descTitle="资料生成" hasNext={true}>
2024-03-21 22:22:35 +08:00
<CardProjEdit title="资料生成"
desc="生成软著所需要的资料,此操作后项目无法再次编辑"
btnName="生成"
status={EditStepEnum.UN_EDIT}
canBtnClick={canGenerate}
2024-03-15 18:18:29 +08:00
handleEdit={() => {
console.log('编辑')
}}
/>
<CardProjLoading title="正在排队"
desc="资料正在排队预计等待600秒"
/>
<CardProjResult title="生成成功"
isSuccess={true}
handleFeedback={() => {
console.log('反馈')
}}
/>
</StepProjEdit>
<StepProjEdit step={4} process={Process.PENDING} descTitle="资料下载">
<CardProjDownload title="软件基本信息"
desc="请完善软件的介绍,详细介绍等基本信息"
handleDownload={() => {
console.log('下载')
}}
/>
<CardProjJump title="跳转"
desc="请完善软件的介绍,详细介绍等基本信息"
handleJump={() => {
2024-03-17 18:36:00 +08:00
nav('/agent-select/2');
2024-03-15 18:18:29 +08:00
}}
/>
</StepProjEdit>
</div>
<div className="btn-container">
2024-03-21 22:22:35 +08:00
<Button size="large" style={{
width: '200px',
fontSize: '14px',
backgroundColor: 'var(--color-primary)',
color: 'var(--color-light)'
}} onClick={() => {
2024-03-15 18:18:29 +08:00
nav(-1);
}}></Button>
2024-03-14 23:34:40 +08:00
</div>
2024-03-21 22:22:35 +08:00
2024-03-14 23:34:40 +08:00
</>
)
}