You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xgd_system/src/pages/InstallExe/index.tsx

278 lines
9.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import { FC, useEffect, useState } from 'react';
import { history, useLocation, useParams } from "umi";
import { message } from 'antd';
import styles from './index.less';
import ContentWarp from '@/components/ContentWarp';
import ButtonComp from '@/components/ButtonComp';
import GBase from './exeDialog/GBase'
import HGoogleEarth from './exeDialog/HGoogleEarth';
import MSXML from './exeDialog/MSXML';
import FlashPlayer from './exeDialog/FlashPlayer';
import Net from './exeDialog/Net';
import NetSP1 from './exeDialog/NetSP1';
import CoreArea from './exeDialog/CoreArea';
import DutyArea from './exeDialog/DutyArea';
import CodeManage from './exeDialog/CodeManage';
import CodeDriver from './exeDialog/CodeDriver';
import DeviceDriver from './exeDialog/DeviceDriver';
import { subjectInfo } from '@/utils/sysSubjectInfo';
const typeData = [
// 依赖程序
{ name: 'GBase', select: false },
{ name: 'GBase升级程序', select: false },
{ name: 'FlashPlayer9', select: false },
{ name: 'MSXML4', select: false },
{ name: '.NET 2.0', select: false },
{ name: '.NET 2.0 SP1', select: false },
{ name: 'HGoogleEarth', select: false },
{ name: 'MySQLServer 5.1', select: false },
{ name: 'MyODBC 3.51', select: false },
// 专用核心密码管理分系统
{ name: '核心区安装程序', select: false },
{ name: '执勤区安装程序', select: false },
{ name: '密钥格式管理安装程序', select: false },
{ name: '密码资源输入输出设备驱动', select: false },
// 一体化密码机
{ name: '一体化密码机管理软件', select: false },
{ name: '一体化密码机驱动安装程序', select: false },
// JJP903C密码钥匙
{ name: '认证服务器Install', select: false },
{ name: '用户登录组件', select: false },
]
interface PageProps { }
const InstallExe: FC<PageProps> = ({ }) => {
const urlParams = useParams();
const [listData, setListData] = useState<any[]>(typeData);
const [open1, setOpen1] = useState(false); // Gbase
const [open2, setOpen2] = useState(false); // HGoogleEarth
const [open3, setOpen3] = useState(false); // MSXML4
const [open4, setOpen4] = useState(false); // FlashPlayer
const [open5, setOpen5] = useState(false); // Net2.0
const [open6, setOpen6] = useState(false); // NET 2.0 SP1
const [open7, setOpen7] = useState(false); // 核心区安装程序
const [open8, setOpen8] = useState(false); // 执勤区安装程序
const [open9, setOpen9] = useState(false); // 密码资源输入输出设备驱动
const [open11, setOpen11] = useState(false); // 一体化密码机管理软件
const [open12, setOpen12] = useState(false); // 一体化密码机驱动安装程序
let sysData = localStorage.getItem(`${urlParams?.fileType}`);
useEffect(() => {
if (sysData) {
let info = JSON.parse(sysData)
if (info?.installExe) {
setListData(info.installExe);
} else {
info.installExe = typeData
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info));
setListData(typeData);
}
} else {
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(subjectInfo));
}
}, [])
const itemDom = (item: any, index: number) => {
return (
<div className={`${styles.box} ${item.select ? styles.active_box : ''}`} key={index}
onClick={() => {
const notRequireds = [
'MySQLServer 5.1',
'MyODBC 3.51',
'密钥格式管理安装程序',
'认证服务器Install',
'用户登录组件'
]
// needArr 校验依赖程序中是否有未安装的
let needArr = false;
listData.slice(0, 7).forEach((k, i) => {
if (!k.select) { needArr = true }
})
const updatedList = listData.map((data: any, key: number) => {
if (data.name === item.name) {
// 如果(选中) 或者 (不需要安装的) 就返回
if (data.select || notRequireds.includes(item.name)) return data;
// 依赖程序必安装的完成后才能点就右侧2块的内容专用核心密码管理分系统、一体化密码机、JJP903C密码钥匙)
if (key > 8 && needArr) {
message.info('请将需要的依赖程序安装完成!');
return data
}
openDialog(item.name);
return { ...data, select: !data.select };
}
return data;
});
setListData(updatedList);
}}>
{item.name}
</div>
)
}
const openDialog = (name: string) => {
switch (name) {
case 'GBase':
setOpen1(true)
break;
case 'GBase升级程序':
if (sysData) {
let info = JSON.parse(sysData);
info.installExe[1].select = true;
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info));
message.success('GBase升级成功')
}
break;
case 'HGoogleEarth':
setOpen2(true)
break;
case 'MSXML4':
setOpen3(true)
break;
case 'FlashPlayer9':
setOpen4(true)
break;
case '.NET 2.0':
setOpen5(true)
break;
case '.NET 2.0 SP1':
setOpen6(true)
break;
case '核心区安装程序':
setOpen7(true)
break;
case '执勤区安装程序':
setOpen8(true)
break;
case '密码资源输入输出设备驱动':
setOpen9(true)
break;
case '一体化密码机管理软件':
setOpen11(true)
break;
case '一体化密码机驱动安装程序':
setOpen12(true)
break;
}
}
const setInstallExe = (index: number, text: string) => {
if (sysData) {
let info = JSON.parse(sysData);
info.installExe[index].select = true;
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info));
message.success(text)
}
}
// 取消选中
const uncheck = (name: any) => {
if (name) {
setListData((prevListData) => {
return prevListData.map((e) => {
if (e.name === name) {
return { ...e, select: false };
}
return e;
});
});
}
};
return (
<div className={styles.exeInstall}>
<div className={styles.title_con}></div>
<div className='flex_acB_jE'>
{/* 左 */}
<ContentWarp style={{ width: '28.5%', padding: '7vh 3vh 3vh 3vh' }} text={'依赖程序'}>
{listData.slice(0, 9).map((item: any, index: number) => { return itemDom(item, index) })}
</ContentWarp>
{/* 中 */}
<ContentWarp style={{ width: '28.5%', padding: '7vh 3vh 3vh 3vh' }} text={'专用核心密码管理分系统'}>
{listData.slice(9, 13).map((item: any, index: number) => { return itemDom(item, index) })}
</ContentWarp>
{/* 右 */}
<div style={{ width: '28.5%' }}>
<ContentWarp style={{ marginBottom: '8%', padding: '7vh 3vh 3vh 3vh', height: '25.7vh' }} text={'一体化密码机'}>
{listData.slice(13, 15).map((item: any, index: number) => { return itemDom(item, index) })}
</ContentWarp>
<ContentWarp text={'JJP903C密码钥匙'} style={{ padding: '7vh 3vh 3vh 3vh', height: '25.7vh' }}>
{listData.slice(15, 17).map((item: any, index: number) => { return itemDom(item, index) })}
</ContentWarp>
</div>
</div>
<div className='flex_jE' style={{ marginTop: '3vh', paddingRight: '4.5vh' }}>
<ButtonComp text={'退出'} onClick={() => { }} />
</div>
{/* 依赖程序安装--弹窗 */}
<GBase
open={open1}
onCancel={(e) => { uncheck(e); setOpen1(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }}
/>
<HGoogleEarth
open={open2}
onCancel={(e) => { uncheck(e); setOpen2(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<MSXML
open={open3}
onCancel={(e) => { uncheck(e); setOpen3(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<FlashPlayer
open={open4}
onCancel={(e) => { uncheck(e); setOpen4(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<Net
open={open5}
onCancel={(e) => { uncheck(e); setOpen5(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<NetSP1
open={open6}
onCancel={(e) => { uncheck(e); setOpen6(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
{/* 专用核心密码管理分系统--弹窗 */}
<CoreArea
open={open7}
onCancel={(e) => { uncheck(e); setOpen7(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<DutyArea
open={open8}
onCancel={(e) => { uncheck(e); setOpen8(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<DeviceDriver
open={open9}
onCancel={(e) => { uncheck(e); setOpen9(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
{/* 一体化密码机--弹窗 */}
<CodeManage
open={open11}
onCancel={(e) => { uncheck(e); setOpen11(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
<CodeDriver
open={open12}
onCancel={(e) => { uncheck(e); setOpen12(false) }}
setInstallExe={(i, t) => { setInstallExe(i, t) }} />
</div>
)
}
export default InstallExe;