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

1109 lines
46 KiB
TypeScript
Raw Normal View History

2024-07-16 10:16:24 +08:00
import './proj-edit.css';
2024-07-31 16:00:30 +08:00
import { useDispatch } from 'react-redux'
2024-05-08 17:54:01 +08:00
// import {Link, useNavigate, useParams} from "react-router-dom";
2024-05-10 11:33:40 +08:00
import { useNavigate, useParams } from "react-router-dom";
2024-06-14 15:50:34 +08:00
import {
Button,
// FloatButton,
2025-01-17 16:50:18 +08:00
message, Modal,
notification
2024-06-14 15:50:34 +08:00
} 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-05-10 11:33:40 +08:00
import { Process } from "../../interfaces/step/IStepProj.ts";
2024-03-15 18:18:29 +08:00
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-05-10 11:33:40 +08:00
import { useEffect, useState } from "react";
import { Axios, get, post } from "../../util/AjaxUtils.ts";
import { EditStepEnum, IProjEdit } from "../../interfaces/card/ICardProj.ts";
import { MIN_MOD_SIZE } from "./edit/ProjConfigModList.tsx";
import { GenerateStatus } from "../../interfaces/proj/IProj.ts";
2024-04-19 18:20:51 +08:00
import AiHelper from "../../components/ai/AiHelper.tsx";
2024-05-28 18:00:42 +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'
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-06-14 15:50:34 +08:00
import aiGif from '../../static/ai.gif'
2024-04-19 18:20:51 +08:00
type AiHelperType = {
projId: string;
projIntroduction: string;
projDesc: string;
2024-04-22 18:20:26 +08:00
projMods: ProjModType[];
2025-01-21 11:50:09 +08:00
chargeType: any
2024-04-22 18:20:26 +08:00
}
type ProjModType = {
name: string,
desc: string
2024-04-19 18:20:51 +08:00
}
2024-03-14 23:34:40 +08:00
export default function ProjEdit() {
2024-08-27 18:29:20 +08:00
// 项目状态
const [projStatus, setprojStatus] = useState('')
2025-01-19 15:46:33 +08:00
const [payStatus, setpayStatus] = useState('')
2024-07-31 16:00:30 +08:00
const dispath = useDispatch()
// 更新所属者表格储存至redux
const upBelongArray = () => {
get({
messageApi,
url: `/api/proj-owner/list/self`,
onBefore() {
},
onSuccess(data: any) {
// console.log('所属者表格', data.data);
// setBelongPeopleArray(data.data)
// 存redux的belongArray
dispath({
type: 'uparray',
val: data.data
})
},
onFinally() {
}
})
}
2024-05-28 18:00:42 +08:00
//第一步 标题简介弹窗
const [titleIntroductionOpen, setTitleIntroductionOpen] = useState(false)
const [titleIntroductionShowOpen, setTitleIntroductionShowOpen] = useState(false)
//第二步 软件基本信息弹窗
const [softwareInfoOpen, setSoftwareOpen] = useState(false)
const [softwareInfoShowOpen, setSoftwareShowOpen] = useState(false)
// 第三步 软件功能特点弹窗
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)
// 第六步 显示顺序
2024-05-29 14:43:48 +08:00
const [displayOrderOpen, setDisplayOrderOpen] = useState(false)
const [displayOrderShowOpen, setDisplayOrderShowOpen] = useState(false)
2024-05-28 18:00:42 +08:00
2024-05-23 14:57:22 +08:00
// 判断是否完成状态 成功未处理/失败/正在处理
2024-05-22 18:08:16 +08:00
// 模块数量
2024-05-23 16:57:36 +08:00
// const [projModCount, setprojModCount] = useState(0)
2024-05-16 18:00:57 +08:00
const height = window.innerHeight - 180;
2024-03-15 18:18:29 +08:00
const nav = useNavigate();
2024-03-21 22:22:35 +08:00
const pathParams = useParams();
2024-05-23 16:49:57 +08:00
// 是否显示下载代码压缩包模块
2025-02-26 16:57:47 +08:00
// const [showZpi, setShowZpi] = useState(false)
// 是否显示下载安装包模块
const [showPkg, setShowPkg] = useState(false)
// 安装包模块生成状态
const [pkgStatus, setPkgStatus] = useState('')
// 视频模块生成状态
const [videoStatus, setVideoStatus] = useState('')
// 是否显示下载演示视频
const [showVideo, setShowVideo] = useState(false)
2024-03-21 22:22:35 +08:00
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);
2024-03-21 22:22:35 +08:00
const [canGenerate, setCanGenerate] = useState(false);
2024-03-25 19:25:57 +08:00
const [generateStatus, setGenerateStatus] = useState(GenerateStatus.NONE);
2024-03-26 11:54:30 +08:00
const [generateEmainingTime, setGenerateEmainingTime] = useState(0);
2024-03-25 19:25:57 +08:00
const [isGenerateModalOpen, setIsGenerateModalOpen] = useState(false);
const [previewUrl, setPreviewUrl] = useState('');
2024-04-12 14:12:38 +08:00
const [generateErrorModal, setGenerateErrorModal] = useState(false);
const [generateErrorMsg, setGenerateErrorMsg] = useState('');
2024-04-19 18:20:51 +08:00
const [aiHelperModalOpen, setAiHelperModalOpen] = useState(false);
const [aiHelper, setAiHelper] = useState<AiHelperType>({
projId: '',
projIntroduction: '',
2024-04-22 18:20:26 +08:00
projDesc: '',
projMods: [],
2025-01-21 11:50:09 +08:00
chargeType: ''
2024-04-19 18:20:51 +08:00
});
2024-07-16 10:57:43 +08:00
2025-02-26 16:57:47 +08:00
// 点击刷新页面数据获取安装包状态
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() {
2024-05-22 18:08:16 +08:00
2025-02-26 16:57:47 +08:00
},
onSuccess() {
messageApi.success('重新打包安装包');
setPkgStatus('PKGING')
},
onFinally() {
}
})
}
const againVideo = () => {
post<any>({
messageApi,
url: `/api/proj/video/save-pkg/proj-id/${pathParams.projId}`,
2024-03-26 11:54:30 +08:00
2025-02-26 16:57:47 +08:00
onBefore() {
},
onSuccess() {
messageApi.success('重新打包演示视频');
setVideoStatus('PKGING')
},
onFinally() {
}
})
}
2024-05-09 17:43:12 +08:00
// const height = window.innerHeight - 240;
2024-03-21 22:22:35 +08:00
2024-05-22 18:08:16 +08:00
const renderEditStep = (data: any, isEdited: boolean, isGenerateSuccess: boolean) => {
2024-07-31 16:00:30 +08:00
// console.log('嘻嘻', data);
2024-05-21 11:21:34 +08:00
// projIntroduction
2024-03-21 22:22:35 +08:00
const editStepArray: IProjEdit[] = [];
editStepArray.push(
{
2024-05-28 18:00:42 +08:00
title: '第1步:软件简介确认',
desc: '修改软件系统的相关简介与详细介绍',
2024-03-21 22:22:35 +08:00
step: 1,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-05-22 18:08:16 +08:00
status: data.projIntroduction ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-26 11:54:30 +08:00
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step1/${pathParams.projId}`)
setTitleIntroductionOpen(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step1-show/${pathParams.projId}`)
setTitleIntroductionShowOpen(true)
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +08:00
},
{
2024-05-28 18:00:42 +08:00
title: '第2步:软件基本信息填写',
desc: '完善软件简称、版本号、软件所属者及联系人等信息',
2024-03-21 22:22:35 +08:00
step: 2,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-12-23 10:35:32 +08:00
status: data.apply.projVersion ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-12-26 11:49:31 +08:00
// status: data.apply.projDevCompleteDate ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2025-01-19 15:46:33 +08:00
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-05-12 07:45:51 +08:00
// if (generateStatus != GenerateStatus.SUCCESS) {
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step2/${pathParams.projId}`)
setSoftwareOpen(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step2-show/${pathParams.projId}`)
setSoftwareShowOpen(true)
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +08:00
},
{
2024-05-28 18:00:42 +08:00
title: '第3步:软件功能特点设置',
desc: '设置软件相关功能特点',
2024-03-21 22:22:35 +08:00
step: 3,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-05-22 18:08:16 +08:00
status: data.apply.envHardDev ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-26 11:54:30 +08:00
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step3/${pathParams.projId}`)
setSoftwareFeaturesOpen(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/step3-show/${pathParams.projId}`)
setSoftwareFeaturesShowOpen(true)
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +08:00
},
{
2024-05-28 18:00:42 +08:00
title: '第4步:登录页面设置',
desc: '对登录界面进行个性化设置,包括背景图片等',
2024-07-25 15:20:54 +08:00
step: 4,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-05-21 11:21:34 +08:00
// 状态判断lyp
2024-05-22 18:08:16 +08:00
status: data.loginpage.loginpageId ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-26 11:54:30 +08:00
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-loginpage/${pathParams.projId}`)
setLoginPageOpne(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-loginpage-show/${pathParams.projId}`)
setLoginPageShowOpne(true)
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +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}`)
// }
// }
// },
// {
// 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-03-21 22:22:35 +08:00
)
setEditStepArray(editStepArray);
2024-03-25 19:25:57 +08:00
setIsEditStepEdited(isEdited);
2024-03-21 22:22:35 +08:00
}
2024-03-26 11:54:30 +08:00
const renderSetting = (data: any, isConfig: boolean, isGenerateSuccess: boolean) => {
2024-03-21 22:22:35 +08:00
const configArray: IProjEdit[] = [];
configArray.push(
2024-05-21 11:21:34 +08:00
// {
// 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}`)
// }
// }
// },
2024-05-22 18:08:16 +08:00
{
2024-05-28 18:00:42 +08:00
title: '第5步:对软件功能进行管理',
desc: '可对软件功能列表进行添加与修改',
2024-03-21 22:22:35 +08:00
step: 2,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-04-25 15:37:50 +08:00
status: data.projModCount >= MIN_MOD_SIZE ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-26 11:54:30 +08:00
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-mod-list/${pathParams.projId}`)
setSoftwareManagementOpen(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-mod-list-show/${pathParams.projId}`)
setSoftwareManagementShowOpen(true)
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +08:00
},
{
2024-05-28 18:00:42 +08:00
title: '第6步:设置功能列表显示顺序',
2024-03-21 22:22:35 +08:00
desc: '调整菜单顺序',
step: 3,
2024-03-26 11:54:30 +08:00
btnName: !isGenerateSuccess ? '设置' : '查看',
2024-04-25 15:37:50 +08:00
status: data.projModCount >= MIN_MOD_SIZE ? EditStepEnum.EDITED : EditStepEnum.UN_EDIT,
2024-03-21 22:22:35 +08:00
handleEdit() {
2024-03-26 11:54:30 +08:00
if (!isGenerateSuccess) {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-menu-list/${pathParams.projId}`)
setDisplayOrderOpen(true)
2024-03-26 11:54:30 +08:00
} else {
2024-05-28 18:00:42 +08:00
// nav(`/proj-edit/config-menu-list-show/${pathParams.projId}`)
setDisplayOrderShowOpen(true);
2024-03-26 11:54:30 +08:00
}
2024-07-25 15:20:54 +08:00
},
2024-07-29 17:22:42 +08:00
2024-03-21 22:22:35 +08:00
}
)
setConfigArray(configArray);
2024-03-25 19:25:57 +08:00
setIsConfigEdited(isConfig);
2024-03-21 22:22:35 +08:00
}
2024-03-25 19:25:57 +08:00
const renderData = () => {
2024-03-27 18:56:48 +08:00
get<any>({
2024-03-21 22:22:35 +08:00
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
2024-05-10 11:33:40 +08:00
onSuccess({ data }) {
2025-01-21 11:50:09 +08:00
// console.log(data);
2025-01-19 15:46:33 +08:00
// 当ai生成不是成功切 材料未生成时候弹出弹出框
// if (data.aiSetting.settingStatus !== "SUCCESS" && data.generate.generateStatus == GenerateStatus.NONE) {
// setAiHelperModalOpen(true)
// }
// 是否显示ai弹窗
2025-01-20 15:24:23 +08:00
const isModal = !data.projDesc || !data.projIntroduction || data.projModCount >= 10
2025-01-19 15:46:33 +08:00
// const isModal = !data.projDesc || !data.projIntroduction || data.aiSetting.modsStatus == "GENERATING"
if (!isModal && data.generate.generateStatus == GenerateStatus.NONE) {
setAiHelperModalOpen(true)
}
2025-01-20 15:24:23 +08:00
// if (data.projModCount < 10) {
// setAiHelperModalOpen(true)
// }
2025-01-19 15:46:33 +08:00
if (data.aiSetting.settingStatus == 'GENERATING') {
setAiHelperModalOpen(true)
}
2024-07-31 16:00:30 +08:00
// console.log('状态判断', data.pay.chargeAdditionals);
2024-05-23 16:49:57 +08:00
// setShowZpi(true)
2025-02-26 16:57:47 +08:00
// const isShow = data.pay.chargeAdditionals.includes('PKG')
// // console.log(isShow);
// if (isShow) {
// setShowZpi(true)
// } else {
// setShowZpi(false)
// }
// console.log(data.projVideo.videoStatus);
// console.log(data.projPkg.pkgStatus);
2024-05-28 18:00:42 +08:00
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)
}
2025-01-19 15:46:33 +08:00
2024-05-21 11:21:34 +08:00
// 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;
2024-05-23 16:57:36 +08:00
// setprojModCount(data.projModCount)
2024-12-26 11:49:31 +08:00
const isEdited = Boolean(data.projIntroduction) == true && Boolean(data.apply.projVersion) == true && Boolean(data.apply.envHardDev) == true && Boolean(data.loginpage.loginpageId) == true
2024-05-21 11:21:34 +08:00
// console.log('isEdited',isEdited);
2024-05-22 18:08:16 +08:00
const isConfig = data.loginpage.loginpageId && data.projModCount >= MIN_MOD_SIZE;
2024-03-25 19:25:57 +08:00
const isGenerate = isEdited && isConfig;
2024-05-22 18:08:16 +08:00
const isGenerateSuccess: boolean = data.generate.generateStatus == GenerateStatus.SUCCESS || data.generate.generateStatus == GenerateStatus.GENERATING;
2024-05-21 11:21:34 +08:00
renderEditStep(data, isEdited, isGenerateSuccess);
2024-03-26 11:54:30 +08:00
renderSetting(data, isConfig, isGenerateSuccess);
2024-03-25 19:25:57 +08:00
setCanGenerate(isGenerate);
setGenerateStatus(data.generate.generateStatus);
setPreviewUrl(data.previewUrl);
2024-04-12 14:12:38 +08:00
setGenerateEmainingTime(data.generate.generateEmainingTime);
setGenerateErrorMsg(data.generate.generateMsg);
2024-04-19 18:20:51 +08:00
setAiHelper({
projId: data.projId,
projIntroduction: data.projIntroduction,
2024-04-22 18:20:26 +08:00
projDesc: data.projDesc,
2025-01-21 11:50:09 +08:00
projMods: data.projMods,
chargeType: data.pay.chargeType
2024-04-19 18:20:51 +08:00
})
2024-07-16 10:57:43 +08:00
2024-08-27 18:29:20 +08:00
setprojStatus(data.projStatus)
2024-08-29 17:56:39 +08:00
setpayStatus(data.pay.payStatus)
2024-05-23 16:49:57 +08:00
// setAiHelperModalOpen(!data.projIntroduction || !data.projDesc)
2024-04-19 18:20:51 +08:00
2024-03-21 22:22:35 +08:00
}
})
2024-05-23 16:49:57 +08:00
2024-03-25 19:25:57 +08:00
}
2024-07-29 17:22:42 +08:00
// 获取ai信息
2024-07-16 10:16:24 +08:00
const getAiData = () => {
get<any>({
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
onSuccess({ data }) {
setAiHelper({
projId: data.projId,
projIntroduction: data.projIntroduction,
projDesc: data.projDesc,
2025-01-21 11:50:09 +08:00
projMods: data.projMods,
chargeType: data.pay.chargeType
2024-07-16 10:16:24 +08:00
})
2024-07-16 10:57:43 +08:00
if (!data.projIntroduction) {
setAiHelperModalOpen(true)
}
2024-07-16 10:16:24 +08:00
// setAiHelperModalOpen(!data.projIntroduction || !data.projDesc)
}
})
2024-05-22 18:08:16 +08:00
2024-07-16 10:16:24 +08:00
}
2024-07-16 10:57:43 +08:00
// 查看ai是否关闭
const getListMods = () => {
2024-07-29 17:22:42 +08:00
get<any>({
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
2024-07-16 10:57:43 +08:00
onSuccess({ data }) {
2024-07-29 17:22:42 +08:00
if (data.projIntroduction && data.projDesc) {
get<any[]>({
messageApi,
url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
onBefore() {
},
onSuccess({ data }) {
2024-07-31 16:00:30 +08:00
// console.log('模块信息', data);
2024-07-29 17:22:42 +08:00
// setListMods(data)
2024-08-27 11:35:08 +08:00
const allSuccess = data.every(item => item.aiFieldStatus === 'SUCCESS');
2025-01-20 15:24:23 +08:00
if (data.length >= 10 && allSuccess) {
2024-07-29 17:22:42 +08:00
setAiHelperModalOpen(false);
} else {
2025-01-20 15:24:23 +08:00
if (!allSuccess) {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
}
if (data.length < 10) {
messageApi.error('功能列表模块数量不能少于10,请点击AI继续生成功能列表');
}
// messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
2024-07-29 17:22:42 +08:00
}
},
onFinally() {
}
})
} else {
2024-07-22 17:22:35 +08:00
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
2024-07-16 10:57:43 +08:00
}
}
})
2024-07-29 17:22:42 +08:00
// get<any[]>({
// messageApi,
// url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
// onBefore() {
// },
// onSuccess({ data }) {
// console.log('模块信息',data);
// // setListMods(data)
// if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){
// setAiHelperModalOpen(false);
// }else{
// messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
// }
// },
// onFinally() {
// }
// })
2024-07-16 10:57:43 +08:00
}
2024-03-25 19:25:57 +08:00
useEffect(() => {
renderData();
2024-07-16 10:16:24 +08:00
// setAiHelperModalOpen(true)
getAiData()
2024-07-29 17:22:42 +08:00
2024-07-16 10:57:43 +08:00
2024-03-21 22:22:35 +08:00
}, [])
2024-05-10 11:33:40 +08:00
2024-03-14 23:34:40 +08:00
return (
2024-05-22 18:08:16 +08:00
<div className='proj-edit-box' style={{ height: `${height}px`, overflow: 'auto' }}>
2024-03-21 22:22:35 +08:00
{contextHolder}
2024-05-08 17:54:01 +08:00
{/* <Breadcrumb
2024-03-14 23:34:40 +08:00
items={[
{title: <Link to={'/'}></Link>},
{title: <Link to={'/proj-create'}></Link>},
{title: '编辑项目'},
]}
2024-05-08 17:54:01 +08:00
/> */}
2024-05-09 17:43:12 +08:00
{/* <div className="proj-edit" style={{height: `${height}px`}}> */}
<div className="proj-edit" style={{}}>
2024-03-22 21:22:12 +08:00
<StepProjEdit step={1} process={isEditStepEdited ? Process.COMPLETE : Process.PROCESSING}
2024-05-10 11:33:40 +08:00
descTitle="完善信息"
descDetail="完善项目的基本信息"
hasNext={true}>
2024-03-21 22:22:35 +08:00
{
editStepArray.map((item, index) => {
return <CardProjEdit key={`editStep-${index}`}
2024-05-10 11:33:40 +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-03-21 22:22:35 +08:00
/>
})
}
2024-03-15 18:18:29 +08:00
</StepProjEdit>
2024-04-22 18:20:26 +08:00
{/*trueisEditStepEdited*/}
2024-03-22 21:22:12 +08:00
<StepProjEdit step={2}
2024-05-10 11:33:40 +08:00
process={!isEditStepEdited ? Process.PENDING : (isConfigEdited ? Process.COMPLETE : Process.PROCESSING)}
descTitle="功能设置"
descDetail="设置系统的菜单功能" hasNext={true}>
2024-03-21 22:22:35 +08:00
{
configArray.map((item, index) => {
return <CardProjEdit key={`config-${index}`}
2024-05-10 11:33:40 +08:00
title={item.title}
desc={item.desc}
btnName={item.btnName}
2024-05-21 11:21:34 +08:00
canBtnClick={isEditStepEdited}
2024-05-10 11:33:40 +08:00
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-05-09 17:43:12 +08:00
2024-03-21 22:22:35 +08:00
/>
})
}
2024-03-22 21:22:12 +08:00
{
2025-01-19 15:46:33 +08:00
isEditStepEdited && isConfigEdited && projStatus != 'EXPIRED' && payStatus != 'CORRECTION2_REFUND' ? (
2024-03-22 21:22:12 +08:00
<CardProjJump title="预览系统"
2024-05-10 11:33:40 +08:00
desc="点击查看预览系统"
canBtnClick={true}
handleJump={() => {
window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank')
}}
2024-03-22 21:22:12 +08:00
/>
) : <></>
}
2024-03-15 18:18:29 +08:00
</StepProjEdit>
2024-03-26 11:54:30 +08:00
<StepProjEdit step={3}
2024-05-10 11:33:40 +08:00
process={generateStatus == GenerateStatus.SUCCESS ? Process.COMPLETE : (canGenerate ? Process.PROCESSING : Process.PENDING)}
descTitle="资料生成"
hasNext={true}>
2024-03-25 19:25:57 +08:00
{
generateStatus == GenerateStatus.NONE || generateStatus == GenerateStatus.FAILED ? (
2024-05-28 18:00:42 +08:00
<CardProjEdit title="第8步:资料生成"
2024-05-10 11:33:40 +08:00
desc="生成软著所需要的资料,此操作后项目无法再次编辑"
btnName="生成"
status={EditStepEnum.UN_EDIT}
canBtnClick={canGenerate}
handleEdit={() => {
2024-05-23 14:57:22 +08:00
setIsGenerateModalOpen(true);
2024-05-22 09:04:00 +08:00
// setTimeout(() => {
// window.location.reload();
// }, 1000)
2024-05-10 11:33:40 +08:00
}}
// background = {status == EditStepEnum.EDITED?'#F5FAFE':'#f3f3f3'}
// shadow = {status == EditStepEnum.EDITED?'0px 3px 0px 0px rgba(55,144,215,0.18)':''}
background='#f3f3f3'
2024-03-25 19:25:57 +08:00
/>
) : <></>
}
{
generateStatus == GenerateStatus.PENDING ? (
<CardProjLoading title="正在排队"
2024-05-10 11:33:40 +08:00
desc="资料正在排队"
duration={generateEmainingTime}
handleCountDownOver={() => {
setTimeout(() => {
window.location.reload();
}, 1000)
}}
2024-03-25 19:25:57 +08:00
/>
) : <></>
}
{
generateStatus == GenerateStatus.GENERATING ? (
<CardProjLoading title="正在生成"
2024-05-10 11:33:40 +08:00
desc="资料正在生成,点击刷新"
duration={generateEmainingTime}
handleClick={() => {
renderData();
}}
handleCountDownOver={() => {
renderData();
}}
2024-03-25 19:25:57 +08:00
/>
) : <></>
}
{
generateStatus == GenerateStatus.SUCCESS ? (
<CardProjResult title="生成成功"
2024-05-22 18:08:16 +08:00
isSuccess={true}
2024-03-25 19:25:57 +08:00
/>
) : <></>
}
{
generateStatus == GenerateStatus.FAILED ? (
<CardProjResult title="生成失败"
2024-05-10 11:33:40 +08:00
isSuccess={false}
handleFeedback={() => {
setGenerateErrorModal(true);
2025-01-19 15:46:33 +08:00
// console.log('反馈')
2024-05-10 11:33:40 +08:00
}}
2024-03-25 19:25:57 +08:00
/>
) : <></>
}
2024-03-15 18:18:29 +08:00
</StepProjEdit>
2024-03-26 11:54:30 +08:00
<StepProjEdit step={4}
2024-05-10 11:33:40 +08:00
process={generateStatus == GenerateStatus.SUCCESS ? Process.PROCESSING : Process.PENDING}
descTitle="资料下载">
2024-03-26 11:54:30 +08:00
<CardProjDownload title="申请表"
2024-05-10 11:33:40 +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
// window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/pdf/${pathParams.projId}`)
}}
2024-03-26 11:54:30 +08:00
/>
<CardProjDownload title="操作手册"
2024-05-10 11:33:40 +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-03-26 11:54:30 +08:00
/>
2025-02-26 16:57:47 +08:00
{/* {showZpi && (
2024-05-23 16:49:57 +08:00
<CardProjDownload title="代码压缩包"
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}`)
}}
2024-05-23 16:49:57 +08:00
/>
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="点击下载演示视频"
videoStatus={videoStatus}
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}`)
}}
upVideoData={() => {
upVideoData()
}}
againVideo={() => {
againVideo()
}}
/>
2024-05-23 16:49:57 +08:00
)}
{/* <CardProjDownload title=""
2024-05-10 11:33:40 +08:00
desc="点击下载代码压缩包"
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
handleDownload={() => {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`)
}}
2024-05-23 16:49:57 +08:00
/> */}
2024-07-17 11:51:21 +08:00
<CardProjDownload title="源代码"
desc="点击下载源代码"
2024-05-10 11:33:40 +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-03-15 18:18:29 +08:00
/>
2025-01-20 15:24:23 +08:00
{/* <CardProjDownload title=""
desc="点击下载源代码"
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
handleDownload={() => {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`)
}}
downPdf={() => {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/pdf/${pathParams.projId}`)
}}
/> */}
2025-01-21 11:50:09 +08:00
2024-04-22 18:20:26 +08:00
{/*<CardProjJump title="找代理"*/}
{/* desc="到软著代理完成软著申请"*/}
{/* handleJump={() => {*/}
{/* nav(`/agent-select/${pathParams.projId}`);*/}
{/* }}*/}
{/*/>*/}
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',
2024-05-22 18:08:16 +08:00
height: '40px',
2024-05-10 11:33:40 +08:00
fontSize: '16px',
2024-05-23 16:20:14 +08:00
backgroundColor: 'white',
// color: '#A0A0A0',
// border: 'none',
2024-03-21 22:22:35 +08:00
}} onClick={() => {
2024-03-15 18:18:29 +08:00
nav(-1);
}}></Button>
2024-03-14 23:34:40 +08:00
</div>
2024-06-14 15:50:34 +08:00
{/* <FloatButton.Group>
2024-04-19 18:20:51 +08:00
<FloatButton
2024-06-14 15:50:34 +08:00
shape="square" //报错处理
2024-05-10 11:33:40 +08:00
onClick={() => { setAiHelperModalOpen(true) }}
description={<span style={{ fontWeight: 'bold' }}>AI</span>}
2024-04-19 18:20:51 +08:00
>AI助手</FloatButton>
2024-06-14 15:50:34 +08:00
</FloatButton.Group> */}
<div className='aiImg' onClick={() => { setAiHelperModalOpen(true) }}>
<img src={aiGif} alt="" width={'100%'} height={'100%'} />
</div>
2024-04-19 18:20:51 +08:00
2024-03-25 19:25:57 +08:00
<Modal title="提示"
2024-05-10 11:33:40 +08:00
okText="确定"
cancelText="取消"
open={isGenerateModalOpen}
2025-01-20 15:24:23 +08:00
centered
2024-05-10 11:33:40 +08:00
onOk={() => {
2024-05-22 09:15:59 +08:00
setTimeout(() => {
window.location.reload();
}, 1000)
2024-05-10 11:33:40 +08:00
post({
messageApi,
url: `/api/proj/generate/proj-id/${pathParams.projId}`,
body: {},
onSuccess() {
messageApi.success('提交成功');
setIsGenerateModalOpen(false);
renderData();
}
})
}}
onCancel={() => {
setIsGenerateModalOpen(false);
}}>
2024-03-25 19:25:57 +08:00
<div>便</div>
</Modal>
2024-04-12 14:12:38 +08:00
<Modal open={generateErrorModal}
2024-05-10 11:33:40 +08:00
title="出错信息"
okText="确定"
cancelText={false}
footer={false}
okButtonProps={{
style: {
backgroundColor: 'var(--color-primary)',
}
}}
onCancel={() => {
setGenerateErrorModal(false)
}}
2024-04-12 14:12:38 +08:00
>
2024-05-10 11:33:40 +08:00
<p style={{ color: 'var(--color-red)' }}>{generateErrorMsg}</p>
2024-04-12 14:12:38 +08:00
</Modal>
2024-04-19 18:20:51 +08:00
<Modal open={aiHelperModalOpen}
2024-06-14 15:50:34 +08:00
title=""
2024-05-10 11:33:40 +08:00
width={1200}
footer={false}
maskClosable={false}
2024-06-18 14:38:26 +08:00
destroyOnClose={true}
2024-05-10 11:33:40 +08:00
onCancel={() => {
2025-01-17 16:50:18 +08:00
notification.destroy()
2024-07-16 10:57:43 +08:00
getListMods()
// if (aiHelper.projIntroduction && aiHelper.projDesc && listMods.length > 0) {
// setAiHelperModalOpen(false);
// }
// console.log(aiHelper.projMods);
2024-05-23 16:49:57 +08:00
renderData()
// setAiHelperModalOpen(false);
2024-05-21 11:21:34 +08:00
// console.log(123);
2024-05-22 18:08:16 +08:00
2024-05-10 11:33:40 +08:00
}}
2024-07-16 10:16:24 +08:00
2024-04-19 18:20:51 +08:00
>
2024-06-18 14:38:26 +08:00
<div style={{ height: `${height - 20}px`, overflow: 'hidden', }}>
2024-06-14 15:50:34 +08:00
<AiHelper
projId={aiHelper.projId}
projIntroduction={aiHelper.projIntroduction}
projDesc={aiHelper.projDesc}
2025-01-21 11:50:09 +08:00
chargeType={aiHelper.chargeType}
2024-06-14 15:50:34 +08:00
isFree={false}
2024-07-16 10:16:24 +08:00
renderData={() => {
2024-06-21 16:18:01 +08:00
renderData()
}}
2024-06-14 15:50:34 +08:00
/>
</div>
2024-04-19 18:20:51 +08:00
</Modal>
2024-05-28 18:00:42 +08:00
{/* 第1步设置 */}
<Modal open={titleIntroductionOpen}
title="软件简介确认"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
2024-05-29 14:43:48 +08:00
2024-05-28 18:00:42 +08:00
setTitleIntroductionOpen(false);
2024-05-29 15:11:52 +08:00
// setTimeout(() => {
// window.location.reload()
// }, 500)
2024-05-29 14:43:48 +08:00
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
2024-07-16 10:16:24 +08:00
<TitleIntroduction closeModal={() => {
setTitleIntroductionOpen(false)
2024-06-21 16:18:01 +08:00
renderData()
}}></TitleIntroduction>
2024-05-28 18:00:42 +08:00
</Modal>
{/* 第1步查看 */}
<Modal open={titleIntroductionShowOpen}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
title="软件简介查看"
width={1500}
onCancel={() => {
setTitleIntroductionShowOpen(false);
}}
footer={null}
>
<TitleIntroductionShow></TitleIntroductionShow>
</Modal>
{/* 第二步设置 */}
<Modal open={softwareInfoOpen}
title="软件基本信息填写"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
2024-07-31 16:00:30 +08:00
upBelongArray()
2024-05-28 18:00:42 +08:00
setSoftwareOpen(false);
2024-05-29 14:43:48 +08:00
// setTimeout(() => {
// props.closeModal()
// window.location.reload(); // 刷新页面
// }, 1000);
2024-05-29 15:11:52 +08:00
// setTimeout(() => {
// window.location.reload()
// }, 500)
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
2024-07-16 10:16:24 +08:00
<SoftwareInfo closeModal={() => {
2024-07-31 16:00:30 +08:00
upBelongArray()
2024-07-16 10:16:24 +08:00
setSoftwareOpen(false)
2024-06-21 16:18:01 +08:00
renderData()
}}></SoftwareInfo>
2024-05-28 18:00:42 +08:00
</Modal>
{/* 第二步查看 */}
<Modal open={softwareInfoShowOpen}
title="软件基本信息查看"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setSoftwareShowOpen(false);
}}
footer={null}
>
<SoftwareInfoShow></SoftwareInfoShow>
</Modal>
{/* 第三步 设置 */}
<Modal open={softwareFeaturesOpen}
title="软件功能特点设置"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setSoftwareFeaturesOpen(false);
2024-05-29 15:11:52 +08:00
// setTimeout(() => {
// window.location.reload()
// }, 500)
2024-05-29 14:43:48 +08:00
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
2024-07-16 10:16:24 +08:00
<SoftwareFeatures closeModal={() => {
setSoftwareFeaturesOpen(false)
2024-06-21 16:18:01 +08:00
renderData()
2024-07-16 10:16:24 +08:00
}}></SoftwareFeatures>
2024-05-28 18:00:42 +08:00
</Modal>
{/* 第三步 查看 */}
<Modal open={softwareFeaturesShowOpen}
title="软件功能特点查看"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setSoftwareFeaturesShowOpen(false);
}}
footer={null}
>
<SoftwareFeaturesShow ></SoftwareFeaturesShow>
</Modal>
{/* 第四步 设置 */}
<Modal open={loginPageOpne}
title="登陆页面设置"
width={1700}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setLoginPageOpne(false);
2024-05-29 15:11:52 +08:00
// setTimeout(() => {
// window.location.reload()
// }, 500)
2024-05-29 14:43:48 +08:00
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
2024-07-16 10:16:24 +08:00
<LoginPage closeModal={() => {
setLoginPageOpne(false)
2024-06-21 16:18:01 +08:00
renderData()
2024-07-16 10:16:24 +08:00
}}></LoginPage>
2024-05-28 18:00:42 +08:00
</Modal>
{/* 第四步 查看 */}
<Modal open={loginPageShowOpne}
title="登陆页面查看"
width={1700}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setLoginPageShowOpne(false);
}}
footer={null}
>
<LoginPageShow></LoginPageShow>
</Modal>
{/* 第五步 设置 */}
<Modal open={softwareManagementOpen}
title="软件功能管理设置"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
2024-06-21 16:18:01 +08:00
renderData()
2024-05-28 18:00:42 +08:00
setSoftwareManagementOpen(false);
2024-07-16 10:16:24 +08:00
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
<SoftwareManagement></SoftwareManagement>
</Modal>
{/* 第五步 查看 */}
<Modal open={softwareManagementShowOpen}
title="软件功能管理查看"
width={1500}
onCancel={() => {
setSoftwareManagementShowOpen(false);
}}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
footer={null}
>
<SoftwareManagementShow></SoftwareManagementShow>
</Modal>
{/* 第六步 设置 */}
<Modal open={displayOrderOpen}
title="设置功能列表显示顺序"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
2024-06-21 16:18:01 +08:00
renderData()
2024-05-28 18:00:42 +08:00
setDisplayOrderOpen(false);
2024-07-16 10:16:24 +08:00
2024-05-28 18:00:42 +08:00
}}
footer={null}
>
<DisplayOrder></DisplayOrder>
</Modal>
2024-05-29 14:43:48 +08:00
{/* 第六步 查看 */}
<Modal open={displayOrderShowOpen}
2024-05-28 18:00:42 +08:00
title="查看功能列表显示顺序"
width={1500}
2024-05-29 15:11:52 +08:00
destroyOnClose={true}
2024-05-28 18:00:42 +08:00
onCancel={() => {
setDisplayOrderShowOpen(false);
}}
footer={null}
>
<DisplayOrderShow></DisplayOrderShow>
</Modal>
2024-05-08 17:54:01 +08:00
</div>
2024-03-14 23:34:40 +08:00
)
}