外部逻辑完成闭环

master
鲁誉程 1 year ago
parent e203dc75d9
commit 2ddfc163a8

@ -9,70 +9,70 @@ const routes = [
{ path: '/installExe/:fileType', name: '01MMD049安装.exe', component: '@/pages/InstallExe', layout: false },
{ path: '/initialSystem/:fileType', name: '初装系统', component: '@/pages/InitialSystem', layout: false },
{ path: '/coreSystemEntrance/:fileType', name: '核心管理系统', component: '@/pages/CoreSystemEntrance', layout: false },
{ path: '/restartService/:fileType', name: '重启服务', component: '@/pages/restartService', layout: false },
// ------------------------------GLQ远程维护----------------------------------
// 建立远程链接
{ path: '/teamViewer/paramsSetting', name: '参数设置', component: '@/pages/GLQ/TeamViewer/ParamsSetting' },
{ path: '/teamViewer/paramsSetting/:fileType', name: '参数设置', component: '@/pages/GLQ/TeamViewer/ParamsSetting' },
// 交互维护命令
{ path: '/teamViewer/systemTime', name: '系统时间', component: '@/pages/GLQ/TeamViewer/SystemTime' },
{ path: '/teamViewer/currentIP', name: '当前IP', component: '@/pages/GLQ/TeamViewer/CurrentIP' },
{ path: '/teamViewer/pingCommand', name: 'PING命令', component: '@/pages/GLQ/TeamViewer/PingCommand' },
{ path: '/teamViewer/telnetCommand', name: 'TELNET命令', component: '@/pages/GLQ/TeamViewer/TelnetCommand' },
{ path: '/teamViewer/otherCommand', name: '其他命令', component: '@/pages/GLQ/TeamViewer/OtherCommand' },
{ path: '/teamViewer/systemTime/:fileType', name: '系统时间', component: '@/pages/GLQ/TeamViewer/SystemTime' },
{ path: '/teamViewer/currentIP/:fileType', name: '当前IP', component: '@/pages/GLQ/TeamViewer/CurrentIP' },
{ path: '/teamViewer/pingCommand/:fileType', name: 'PING命令', component: '@/pages/GLQ/TeamViewer/PingCommand' },
{ path: '/teamViewer/telnetCommand/:fileType', name: 'TELNET命令', component: '@/pages/GLQ/TeamViewer/TelnetCommand' },
{ path: '/teamViewer/otherCommand/:fileType', name: '其他命令', component: '@/pages/GLQ/TeamViewer/OtherCommand' },
// ---------------------------------------------------------------------------
// ------------------------------网络MMJ管理----------------------------------
{ path: '/webMMJ/mmjInitInstall', name: 'MMJ初装', component: '@/pages/GLQ/WebMMJ/MmjInitInstall' },
{ path: '/webMMJ/statusQuery', name: '状态查询', component: '@/pages/GLQ/WebMMJ/StatusQuery' },
{ path: '/webMMJ/keyDestruction', name: '密钥销毁', component: '@/pages/GLQ/WebMMJ/KeyDestruction' },
{ path: '/webMMJ/keyRemoteKill', name: '密钥遥毙', component: '@/pages/GLQ/WebMMJ/KeyRemoteKill' },
{ path: '/webMMJ/mmjRemoteKill', name: 'MMJ遥毙', component: '@/pages/GLQ/WebMMJ/MmjRemoteKill' },
{ path: '/webMMJ/mmjInitInstall/:fileType', name: 'MMJ初装', component: '@/pages/GLQ/WebMMJ/MmjInitInstall' },
{ path: '/webMMJ/statusQuery/:fileType', name: '状态查询', component: '@/pages/GLQ/WebMMJ/StatusQuery' },
{ path: '/webMMJ/keyDestruction/:fileType', name: '密钥销毁', component: '@/pages/GLQ/WebMMJ/KeyDestruction' },
{ path: '/webMMJ/keyRemoteKill/:fileType', name: '密钥遥毙', component: '@/pages/GLQ/WebMMJ/KeyRemoteKill' },
{ path: '/webMMJ/mmjRemoteKill/:fileType', name: 'MMJ遥毙', component: '@/pages/GLQ/WebMMJ/MmjRemoteKill' },
// ---------------------------------------------------------------------------
// ------------------------------网络GLQ配置----------------------------------
// 获取配置信息
{ path: '/webGLQ/serviceListInfo', name: '服务列表信息', component: '@/pages/GLQ/WebGLQ/ServiceListInfo' },
{ path: '/webGLQ/networkConfigInfo', name: '网络配置信息', component: '@/pages/GLQ/WebGLQ/NetworkConfigInfo' },
{ path: '/webGLQ/securityPolicyInfo', name: '安全策略信息', component: '@/pages/GLQ/WebGLQ/SecurityPolicyInfo' },
{ path: '/webGLQ/manageConfigInfo', name: '管理配置信息', component: '@/pages/GLQ/WebGLQ/ManageConfigInfo' },
{ path: '/webGLQ/vpnPolicyInfo', name: 'VPN策略信息', component: '@/pages/GLQ/WebGLQ/VpnPolicyInfo' },
{ path: '/webGLQ/firewallPolicyInfo', name: '防火墙策略信息', component: '@/pages/GLQ/WebGLQ/FirewallPolicyInfo'},
{ path: '/webGLQ/logRecordInfo', name: '日志记录信息', component: '@/pages/GLQ/WebGLQ/LogRecordInfo' },
{ path: '/webGLQ/serviceListInfo/:fileType', name: '服务列表信息', component: '@/pages/GLQ/WebGLQ/ServiceListInfo' },
{ path: '/webGLQ/networkConfigInfo/:fileType', name: '网络配置信息', component: '@/pages/GLQ/WebGLQ/NetworkConfigInfo' },
{ path: '/webGLQ/securityPolicyInfo/:fileType', name: '安全策略信息', component: '@/pages/GLQ/WebGLQ/SecurityPolicyInfo' },
{ path: '/webGLQ/manageConfigInfo/:fileType', name: '管理配置信息', component: '@/pages/GLQ/WebGLQ/ManageConfigInfo' },
{ path: '/webGLQ/vpnPolicyInfo/:fileType', name: 'VPN策略信息', component: '@/pages/GLQ/WebGLQ/VpnPolicyInfo' },
{ path: '/webGLQ/firewallPolicyInfo/:fileType', name: '防火墙策略信息', component: '@/pages/GLQ/WebGLQ/FirewallPolicyInfo' },
{ path: '/webGLQ/logRecordInfo/:fileType', name: '日志记录信息', component: '@/pages/GLQ/WebGLQ/LogRecordInfo' },
// 远程文件配置
{ path: '/webMMJ/serviceList', name: '服务列表', component: '@/pages/GLQ/WebGLQ/ServiceList' },
{ path: '/webMMJ/networkParams', name: '网络参数', component: '@/pages/GLQ/WebGLQ/NetworkParams' },
{ path: '/webMMJ/securityPolicy', name: '安全策略', component: '@/pages/GLQ/WebGLQ/SecurityPolicy' },
{ path: '/webMMJ/manageConfig', name: '管理配置', component: '@/pages/GLQ/WebGLQ/ManageConfig' },
{ path: '/webMMJ/vpnPolicy', name: 'VPN策略', component: '@/pages/GLQ/WebGLQ/VpnPolicy' },
{ path: '/webMMJ/serviceList/:fileType', name: '服务列表', component: '@/pages/GLQ/WebGLQ/ServiceList' },
{ path: '/webMMJ/networkParams/:fileType', name: '网络参数', component: '@/pages/GLQ/WebGLQ/NetworkParams' },
{ path: '/webMMJ/securityPolicy/:fileType', name: '安全策略', component: '@/pages/GLQ/WebGLQ/SecurityPolicy' },
{ path: '/webMMJ/manageConfig/:fileType', name: '管理配置', component: '@/pages/GLQ/WebGLQ/ManageConfig' },
{ path: '/webMMJ/vpnPolicy/:fileType', name: 'VPN策略', component: '@/pages/GLQ/WebGLQ/VpnPolicy' },
// ---------------------------------------------------------------------------
// ------------------------------MY管理----------------------------------
// 密钥体管理
{ path: '/KeyBodyManage/formatImport', name: '密钥体格式导入', component: '@/pages/MY/KeyBodyManage/FormatImport' },
{ path: '/KeyBodyManage/formatPublishing', name: '密钥体格式发布', component: '@/pages/MY/KeyBodyManage/FormatPublishing' },
{ path: '/KeyBodyManage/application', name: '密钥体申请', component: '@/pages/MY/KeyBodyManage/Application' },
{ path: '/KeyBodyManage/import', name: '密钥体导入', component: '@/pages/MY/KeyBodyManage/Import' },
{ path: '/KeyBodyManage/receiptForm', name: '密钥体接收单', component: '@/pages/MY/KeyBodyManage/ReceiptForm' },
{ path: '/KeyBodyManage/cleaned', name: '已清理密钥体', component: '@/pages/MY/KeyBodyManage/Cleaned' },
{ path: '/KeyBodyManage/codeComparisonTable', name: '密钥体代号对照表', component: '@/pages/MY/KeyBodyManage/CodeComparisonTable' },
{ path: '/KeyBodyManage/subordinateDistr', name: '向下级配发', component: '@/pages/MY/KeyBodyManage/SubordinateDistr' },
{ path: '/KeyBodyManage/emailDistr', name: '向邮箱配发', component: '@/pages/MY/KeyBodyManage/EmailDistr' },
{ path: '/KeyBodyManage/systemDistr', name: '向专用密码管理系统配发', component: '@/pages/MY/KeyBodyManage/SystemDistr' },
{ path: '/KeyBodyManage/distrTriple', name: '密钥体配发三联单', component: '@/pages/MY/KeyBodyManage/DistrTriple' },
{ path: '/KeyBodyManage/plaintext', name: '明文载体包封', component: '@/pages/MY/KeyBodyManage/Plaintext' },
{ path: '/KeyBodyManage/ciphertext', name: '密文载体包封', component: '@/pages/MY/KeyBodyManage/Ciphertext' },
{ path: '/KeyBodyManage/formatImport/:fileType', name: '密钥体格式导入', component: '@/pages/MY/KeyBodyManage/FormatImport' },
{ path: '/KeyBodyManage/formatPublishing/:fileType', name: '密钥体格式发布', component: '@/pages/MY/KeyBodyManage/FormatPublishing' },
{ path: '/KeyBodyManage/application/:fileType', name: '密钥体申请', component: '@/pages/MY/KeyBodyManage/Application' },
{ path: '/KeyBodyManage/import/:fileType', name: '密钥体导入', component: '@/pages/MY/KeyBodyManage/Import' },
{ path: '/KeyBodyManage/receiptForm/:fileType', name: '密钥体接收单', component: '@/pages/MY/KeyBodyManage/ReceiptForm' },
{ path: '/KeyBodyManage/cleaned/:fileType', name: '已清理密钥体', component: '@/pages/MY/KeyBodyManage/Cleaned' },
{ path: '/KeyBodyManage/codeComparisonTable/:fileType', name: '密钥体代号对照表', component: '@/pages/MY/KeyBodyManage/CodeComparisonTable' },
{ path: '/KeyBodyManage/subordinateDistr/:fileType', name: '向下级配发', component: '@/pages/MY/KeyBodyManage/SubordinateDistr' },
{ path: '/KeyBodyManage/emailDistr/:fileType', name: '向邮箱配发', component: '@/pages/MY/KeyBodyManage/EmailDistr' },
{ path: '/KeyBodyManage/systemDistr/:fileType', name: '向专用密码管理系统配发', component: '@/pages/MY/KeyBodyManage/SystemDistr' },
{ path: '/KeyBodyManage/distrTriple/:fileType', name: '密钥体配发三联单', component: '@/pages/MY/KeyBodyManage/DistrTriple' },
{ path: '/KeyBodyManage/plaintext/:fileType', name: '明文载体包封', component: '@/pages/MY/KeyBodyManage/Plaintext' },
{ path: '/KeyBodyManage/ciphertext/:fileType', name: '密文载体包封', component: '@/pages/MY/KeyBodyManage/Ciphertext' },
// 密钥管理
{ path: '/KeyManage/dataMaintenance', name: '管理系统管理盘数据维护', component: '@/pages/MY/KeyManage/DataMaintenance' },
{ path: '/KeyManage/relationConfig', name: '统型完善普密设备密钥互通关系配置', component: '@/pages/MY/KeyManage/RelationConfig' },
{ path: '/KeyManage/manageKeys', name: '管理密钥装配', component: '@/pages/MY/KeyManage/ManageKeys' },
{ path: '/KeyManage/userKey', name: '用户密钥装配', component: '@/pages/MY/KeyManage/UserKey' },
{ path: '/KeyManage/privateKey', name: '专用密钥装配', component: '@/pages/MY/KeyManage/PrivateKey' },
{ path: '/KeyManage/keyConfigQuery', name: '密钥配置查询', component: '@/pages/MY/KeyManage/KeyConfigQuery' },
{ path: '/KeyManage/tripleKeyDistri', name: '密钥配发三联单', component: '@/pages/MY/KeyManage/TripleKeyDistri' },
{ path: '/KeyManage/dataMaintenance/:fileType', name: '管理系统管理盘数据维护', component: '@/pages/MY/KeyManage/DataMaintenance' },
{ path: '/KeyManage/relationConfig/:fileType', name: '统型完善普密设备密钥互通关系配置', component: '@/pages/MY/KeyManage/RelationConfig' },
{ path: '/KeyManage/manageKeys/:fileType', name: '管理密钥装配', component: '@/pages/MY/KeyManage/ManageKeys' },
{ path: '/KeyManage/userKey/:fileType', name: '用户密钥装配', component: '@/pages/MY/KeyManage/UserKey' },
{ path: '/KeyManage/privateKey/:fileType', name: '专用密钥装配', component: '@/pages/MY/KeyManage/PrivateKey' },
{ path: '/KeyManage/keyConfigQuery/:fileType', name: '密钥配置查询', component: '@/pages/MY/KeyManage/KeyConfigQuery' },
{ path: '/KeyManage/tripleKeyDistri/:fileType', name: '密钥配发三联单', component: '@/pages/MY/KeyManage/TripleKeyDistri' },
// 邮箱管理
{ path: '/mailboxManage/index', name: '邮箱管理', component: '@/pages/MY/MailboxManage/index' },
// ---------------------------------------------------------------------------
@ -80,10 +80,10 @@ const routes = [
// ------------------------------SB管理----------------------------------
// 设备管理
{ path: '/deviceManage/dutyAreaConfig', name: '执勤区配置', component: '@/pages/SB/DeviceManage/DutyAreaConfig' },
{ path: '/deviceManage/dataSync', name: '数据同步', component: '@/pages/SB/DeviceManage/DataSync' },
{ path: '/deviceManage/remoteMaintenance', name: '远程维护', component: '@/pages/SB/DeviceManage/RemoteMaintenance' },
{ path: '/deviceManage/numberMaintenance', name: '报号维护', component: '@/pages/SB/DeviceManage/NumberMaintenance' },
{ path: '/deviceManage/dutyAreaConfig/:fileType', name: '执勤区配置', component: '@/pages/SB/DeviceManage/DutyAreaConfig' },
{ path: '/deviceManage/dataSync/:fileType', name: '数据同步', component: '@/pages/SB/DeviceManage/DataSync' },
{ path: '/deviceManage/remoteMaintenance/:fileType', name: '远程维护', component: '@/pages/SB/DeviceManage/RemoteMaintenance' },
{ path: '/deviceManage/numberMaintenance/:fileType', name: '报号维护', component: '@/pages/SB/DeviceManage/NumberMaintenance' },
// 日志管理
{ path: '/logManage/index', name: '日志管理', component: '@/pages/SB/LogManage/index' },
// 审计管理
@ -94,23 +94,23 @@ const routes = [
// ------------------------------SF管理----------------------------------
// 算法资源管理
{ path: '/resourceManage/algorithmMaintenance', name: '算法信息维护', component: '@/pages/SF/ResourceManage/AlgorithmMaintenance' },
{ path: '/resourceManage/paramMaintenance', name: '参数信息维护', component: '@/pages/SF/ResourceManage/ParamMaintenance' },
{ path: '/resourceManage/algorithmSetConfig', name: '算法集合配置', component: '@/pages/SF/ResourceManage/AlgorithmSetConfig' },
{ path: '/resourceManage/networkConfig', name: '管理类参数所属网络配置', component: '@/pages/SF/ResourceManage/NetworkConfig' },
{ path: '/resourceManage/algorithmDistr', name: '算法配发', component: '@/pages/SF/ResourceManage/AlgorithmDistr' },
{ path: '/resourceManage/algorithmParam', name: '算法参数配发', component: '@/pages/SF/ResourceManage/AlgorithmParam' },
{ path: '/resourceManage/algorithmMaintenance/:fileType', name: '算法信息维护', component: '@/pages/SF/ResourceManage/AlgorithmMaintenance' },
{ path: '/resourceManage/paramMaintenance/:fileType', name: '参数信息维护', component: '@/pages/SF/ResourceManage/ParamMaintenance' },
{ path: '/resourceManage/algorithmSetConfig/:fileType', name: '算法集合配置', component: '@/pages/SF/ResourceManage/AlgorithmSetConfig' },
{ path: '/resourceManage/networkConfig/:fileType', name: '管理类参数所属网络配置', component: '@/pages/SF/ResourceManage/NetworkConfig' },
{ path: '/resourceManage/algorithmDistr/:fileType', name: '算法配发', component: '@/pages/SF/ResourceManage/AlgorithmDistr' },
{ path: '/resourceManage/algorithmParam/:fileType', name: '算法参数配发', component: '@/pages/SF/ResourceManage/AlgorithmParam' },
// 算法配置管理
{ path: '/configManage/sfSingleInstallConfig', name: '单算法安装配置', component: '@/pages/SF/ConfigManage/SFSingleInstallConfig' },
{ path: '/configManage/sfSingleChangeConfig', name: '单算法更换配置', component: '@/pages/SF/ConfigManage/SFSingleChangeConfig' },
{ path: '/configManage/sfMultiInstallConfig', name: '多算法安装配置', component: '@/pages/SF/ConfigManage/SFMultiInstallConfig' },
{ path: '/configManage/sfMultiChangeConfig', name: '多算法更换配置', component: '@/pages/SF/ConfigManage/SFMultiChangeConfig' },
{ path: '/configManage/paramSingleInstallConfig', name: '单参数安装配置', component: '@/pages/SF/ConfigManage/ParamSingleInstallConfig' },
{ path: '/configManage/paramSingleChangeConfig', name: '单参数更换配置', component: '@/pages/SF/ConfigManage/ParamSingleChangeConfig' },
{ path: '/configManage/paramMultiInstallConfig', name: '多参数安装配置', component: '@/pages/SF/ConfigManage/ParamMultiInstallConfig' },
{ path: '/configManage/paramMultiChangeConfig', name: '多参数更换配置', component: '@/pages/SF/ConfigManage/ParamMultiChangeConfig' },
{ path: '/configManage/sfSingleInstallConfig/:fileType', name: '单算法安装配置', component: '@/pages/SF/ConfigManage/SFSingleInstallConfig' },
{ path: '/configManage/sfSingleChangeConfig/:fileType', name: '单算法更换配置', component: '@/pages/SF/ConfigManage/SFSingleChangeConfig' },
{ path: '/configManage/sfMultiInstallConfig/:fileType', name: '多算法安装配置', component: '@/pages/SF/ConfigManage/SFMultiInstallConfig' },
{ path: '/configManage/sfMultiChangeConfig/:fileType', name: '多算法更换配置', component: '@/pages/SF/ConfigManage/SFMultiChangeConfig' },
{ path: '/configManage/paramSingleInstallConfig/:fileType', name: '单参数安装配置', component: '@/pages/SF/ConfigManage/ParamSingleInstallConfig' },
{ path: '/configManage/paramSingleChangeConfig/:fileType', name: '单参数更换配置', component: '@/pages/SF/ConfigManage/ParamSingleChangeConfig' },
{ path: '/configManage/paramMultiInstallConfig/:fileType', name: '多参数安装配置', component: '@/pages/SF/ConfigManage/ParamMultiInstallConfig' },
{ path: '/configManage/paramMultiChangeConfig/:fileType', name: '多参数更换配置', component: '@/pages/SF/ConfigManage/ParamMultiChangeConfig' },
// 算法托收管理
{ path: '/collectionManage/dataSync', name: '算法托收管理', component: '@/pages/SF/CollectionManage/index' },
{ path: '/collectionManage/index', name: '算法托收管理', component: '@/pages/SF/CollectionManage/index' },
// 算法邮箱管理
{ path: '/mailboxManage/index', name: '算法邮箱管理', component: '@/pages/SF/MailboxManage/index' },
// ---------------------------------------------------------------------------
@ -123,15 +123,15 @@ const routes = [
// ------------------------------设备注册-----------------------------------
// 注册管理
{ path: '/registerManage/deviceRegister/:id', name: '设备注册管理', component: '@/pages/Register/RegisterManage/DeviceRegister' },
{ path: '/registerManage/manageDiskMainten', name: '管理盘维护', component: '@/pages/Register/RegisterManage/ManageDiskMainten' },
{ path: '/registerManage/devicePhotoMainten', name: '设备照片维护', component: '@/pages/Register/RegisterManage/DevicePhotoMainten' },
{ path: '/registerManage/deviceSearch', name: '设备查找', component: '@/pages/Register/RegisterManage/DeviceSearch' },
{ path: '/registerManage/appSystemConfig', name: '应用系统配置', component: '@/pages/Register/RegisterManage/AppSystemConfig' },
{ path: '/registerManage/infoAggre', name: '信息汇总', component: '@/pages/Register/RegisterManage/InfoAggre' },
{ path: '/registerManage/deviceRegister/:fileType', name: '设备注册管理', component: '@/pages/Register/RegisterManage/DeviceRegister' },
{ path: '/registerManage/manageDiskMainten/:fileType', name: '管理盘维护', component: '@/pages/Register/RegisterManage/ManageDiskMainten' },
{ path: '/registerManage/devicePhotoMainten/:fileType', name: '设备照片维护', component: '@/pages/Register/RegisterManage/DevicePhotoMainten' },
{ path: '/registerManage/deviceSearch/:fileType', name: '设备查找', component: '@/pages/Register/RegisterManage/DeviceSearch' },
{ path: '/registerManage/appSystemConfig/:fileType', name: '应用系统配置', component: '@/pages/Register/RegisterManage/AppSystemConfig' },
{ path: '/registerManage/infoAggre/:fileType', name: '信息汇总', component: '@/pages/Register/RegisterManage/InfoAggre' },
// 位置管理
{ path: '/registerManage/unitLocation/:id', name: '单位位置管理', component: '@/pages/Register/PositionManage/UnitLocation' },
{ path: '/registerManage/regionalEdit', name: '地域编辑', component: '@/pages/Register/PositionManage/RegionalEdit' },
{ path: '/registerManage/unitLocation/:fileType', name: '单位位置管理', component: '@/pages/Register/PositionManage/UnitLocation' },
{ path: '/registerManage/regionalEdit/:fileType', name: '地域编辑', component: '@/pages/Register/PositionManage/RegionalEdit' },
// ---------------------------------------------------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

@ -18,8 +18,8 @@ interface PageProps {
const LeftMenuCom: FC<PageProps> = ({ data }) => {
const [list, setList] = useState<any>([]);
const route = useLocation();
const urlParams = useParams();
const location = useLocation();
const [selectedKeys, setSelectedKeys] = useState<any>([]);
const [contextMenuPosition, setContextMenuPosition] = useState({ x: 0, y: 0 });
@ -28,9 +28,13 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
const [menuItems, setMenuItems] = useState<any>([]);
let urlStr = `${urlParams?.fileType}${location?.search}`;
useEffect(() => {
menuItemsConfig();
}, [location?.pathname])
useEffect(() => {
data.forEach((item, index) => {
// 默认展开第一个
// item.check = (index == 0 ? true : false);
@ -54,17 +58,17 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
}, [])
const menuItemsConfig = () => {
if (`/registerManage/deviceRegister/${urlParams?.id}` == route?.pathname) {
if (`/registerManage/deviceRegister/${urlStr}` == `${location.pathname}${location.search}`) {
setMenuItems([
{key: '1', label: '删除'},
{key: '2', label: '刷新'},
{ key: '1', label: '删除' },
{ key: '2', label: '刷新' },
])
}else if (`/registerManage/unitLocation/${urlParams?.id}` == route?.pathname) {
} else if (`/registerManage/unitLocation/${urlStr}` == `${location.pathname}${location.search}`) {
setMenuItems([
{key: '1', label: '修改'},
{key: '2', label: '刷新'},
{key: '3', label: '新建'},
{key: '4', label: '删除'}
{ key: '1', label: '修改' },
{ key: '2', label: '刷新' },
{ key: '3', label: '新建' },
{ key: '4', label: '删除' }
])
}
}
@ -79,17 +83,7 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
};
const handleSelect = (selectedKeys: any, name: any) => {
if (selectedKeys.length == 0) return;
setSelectedKeys(selectedKeys);
switch (name) {
case '设备注册':
history.push(`/registerManage/deviceRegister/${selectedKeys[0]}`)
break;
case '单位位置管理':
history.push(`/registerManage/unitLocation/${selectedKeys[0]}`)
break;
}
};
const handleContextMenuClick = (e: any) => {
@ -98,37 +92,17 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
const treeData = [
{
title: 'Parent 1',
key: '0-1',
selectable: false,
title: 'xxx管理系统',
key: 'root',
selectable: true,
isFolder: true,
children: [
{
title: 'Child 1',
key: '0-1-1',
},
{
title: 'Child 2',
key: '0-1-2',
title: '用户管理',
key: 'user',
},
],
},
{
title: 'Parent 2',
key: '0-2',
selectable: false,
isFolder: true,
children: [
{
title: 'Child 3',
key: '0-2-1',
},
{
title: 'Child 4',
key: '0-2-2',
},
],
},
}
];
return (
@ -155,7 +129,13 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
style={{ padding: 20 }}
onContextMenu={(e) => e.preventDefault()}
onRightClick={({ event, node }) => handleRightClick(event, node)}
onSelect={(e) => { handleSelect(e, item.name) }}
onSelect={(e, {node}) => {
if (node.key === 'root') {
history.push(`/registerManage/deviceRegister/${urlStr}`)
}
handleSelect(e, item.name)
}}
selectedKeys={selectedKeys}
treeData={treeData}
blockNode={true}
@ -184,10 +164,10 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
return (
<div className={styles.item1} key={index1} onClick={() => {
setSelectedKeys([])
history.push(item1.url)
history.push(`${item1.url}/${urlStr}`)
}}>
<div className={styles.item1_img}></div>
<div className={styles.item1_name} style={{ color: (route.pathname == item1.url ? 'red' : '') }}>
<div className={styles.item1_name} style={{ color: (`${location.pathname}${location.search}` == `${item1.url}/${urlStr}` ? 'red' : '') }}>
{item1.name}
</div>
</div>

@ -1,5 +1,5 @@
import { FC, useEffect, useState } from 'react';
import { history, useLocation } from "umi";
import { history, useLocation, useParams } from "umi";
import styles from './index.less';
interface PageProps {
@ -16,7 +16,10 @@ interface PageProps {
const LeftMenuCom: FC<PageProps> = ({ data }) => {
const [list, setList] = useState<any>([]);
const route = useLocation();
const urlParams = useParams();
const location = useLocation();
let urlStr = `${urlParams?.fileType}${location?.search}`;
useEffect(() => {
setList([...data])
@ -26,9 +29,9 @@ const LeftMenuCom: FC<PageProps> = ({ data }) => {
<div>
{list.map((item: any, index: number) => {
return (
<div className={styles.item1} key={index} onClick={() => history.push(item.url)}>
<div className={styles.item1} key={index} onClick={() => history.push(`${item.url}/${urlStr}`)}>
<div className={styles.item1_img}></div>
<div className={styles.item1_name} style={{color: (route.pathname == item.url ? 'red' : '')}}>
<div className={styles.item1_name} style={{color: (`${location.pathname}${location.search}` == `${item.url}/${urlStr}` ? 'red' : '')}}>
{item.name}
</div>
</div>

@ -1,5 +1,5 @@
import { Outlet, history, useLocation } from 'umi';
import { Outlet, history, useLocation, useParams } from 'umi';
import styles from './index.less';
import { useEffect, useState } from 'react';
import { MenuType, tabsType } from '@/utils/menu';
@ -54,61 +54,36 @@ const leftMenuType: any = {
}
export default function Layout() {
const urlParams = useParams();
const location = useLocation();
const [routeName, setRouteName] = useState<string>('');
const [selectVal, setSelectVal] = useState<number>(1);
const [selectVal, setSelectVal] = useState<number>(6);
const [tabList, setTabList] = useState<any>([]);
const [active, setActive] = useState<number>(1);
const [activeName, setActiveName] = useState<any>('GLQ远程维护');
const [treeData, setTreeData] = useState<any>([
{
title: 'Parent 1',
key: '0-1',
selectable: false,
isFolder: true,
children: [
{
title: 'Child 1',
key: '0-1-1',
},
{
title: 'Child 2',
key: '0-1-2',
},
],
},
{
title: 'Parent 2',
key: '0-2',
selectable: false,
isFolder: true,
children: [
{
title: 'Child 3',
key: '0-2-1',
},
{
title: 'Child 4',
key: '0-2-2',
},
],
},
]);
const [activeName, setActiveName] = useState<any>('注册管理');
// 获取布局信息
let layoutInfo: any = localStorage.getItem('layoutInfo');
layoutInfo = JSON.parse(layoutInfo);
let sysData = localStorage.getItem(`${urlParams?.fileType}`);
let info = sysData ? JSON.parse(sysData) : null;
let urlStr = `${urlParams?.fileType}${location?.search}`;
useEffect(() => {
// 校验浏览器是否有储存的布局信息
if (layoutInfo) {
setActive(layoutInfo.active);
setActiveName(layoutInfo.activeName);
setSelectVal(layoutInfo.selectVal);
setTabList([...tabsType[layoutInfo.selectVal]]);
if (info?.layoutInfo) {
setActive(info?.layoutInfo.active);
setActiveName(info?.layoutInfo.activeName);
setSelectVal(info?.layoutInfo.selectVal);
setTabList([...tabsType[info?.layoutInfo.selectVal]]);
} else {
setTabList([...tabsType[selectVal]]);
let obj: any = {
selectVal: selectVal,
active: active,
activeName: activeName,
}
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, layoutInfo: obj }))
}
}, [])
@ -118,50 +93,46 @@ export default function Layout() {
// 页面销毁前记录下当前布局信息
window.addEventListener('beforeunload', function (event) {
let layoutInfo: any = {
let obj: any = {
selectVal: selectVal,
active: active,
activeName: activeName,
}
localStorage.setItem('layoutInfo', JSON.stringify(layoutInfo));
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, layoutInfo: obj }))
});
useEffect(() => {
// 条件判断: 当选择框的值发生改变时tabList长度大于0 并且 没有发现记录布局的数据)时 ,默认进入第一个模块的页面
if (tabList.length > 0 && !layoutInfo) {
if (tabList.length > 0 && !info?.layoutInfo) {
setActiveName(tabList[0].name)
let info = MenuType[tabList[0].name];
if (isTreeType(info)) return
if (info[0].data) {
history.push(`${info[0].data[0].url}`)
history.push(`${info[0].data[0].url}/${urlStr}`)
} else {
history.push(`${info[0].url}`)
history.push(`${info[0].url}/${urlStr}`)
}
}
}, [selectVal])
// 校验是否是树结构列表
const isTreeType = (info: any) => {
let isReturn = false;
if (info.length > 0) {
if (info[0]?.name === '设备注册') {
return navigateToPath(info, '/registerManage/deviceRegister/{key}');
isReturn = true;
history.push(`/registerManage/deviceRegister/${urlStr}`);
// return navigateToPath(info, '/registerManage/deviceRegister');
}
if (info[0]?.name === '单位位置管理') {
return navigateToPath(info, '/registerManage/unitLocation/{key}');
isReturn = true;
history.push(`/registerManage/unitLocation/${urlStr}`);
//return navigateToPath(info, '/registerManage/unitLocation');
}
}
return false;
};
// 前往对应的路由
const navigateToPath = (info: any, path: string) => {
const targetNode = treeData.find((node: any) => node.children.length > 0);
if (targetNode) {
history.push(path.replace('{key}', targetNode.children[0].key));
return true;
}
return false;
return isReturn;
};
@ -194,7 +165,7 @@ export default function Layout() {
style={{ width: 180 }}
onChange={(e) => {
// 改变下拉框数据时将布局信息清空
localStorage.setItem('layoutInfo', JSON.stringify(null));
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, layoutInfo: null }))
setSelectVal(e)
setTabList([...tabsType[e]])
setActive(1)
@ -237,9 +208,9 @@ export default function Layout() {
// 改变activeName时跳转菜单栏的第一个路由
if (info[0].data) {
history.push(`${info[0].data[0].url}`)
history.push(`${info[0].data[0].url}/${urlStr}`)
} else {
history.push(`${info[0].url}`)
history.push(`${info[0].url}/${urlStr}`)
}
}}>

@ -1,26 +1,40 @@
import { FC, useEffect, useState } from 'react';
import { FC, useEffect, useRef, useState } from 'react';
import { history, useLocation, useParams } from "umi";
import styles from './index.less';
import { Input, Modal, message } from 'antd';
import ButtonComp from '@/components/ButtonComp';
import { LeftOutlined } from '@ant-design/icons';
interface PageProps { }
const CoreSystemEntrance: FC<PageProps> = ({ }) => {
const urlParams = useParams();
const loaction = useLocation();
const inputRef = useRef(null);
const location = useLocation()
const [accessPermissions, setAccessPermissions] = useState<boolean>(false);
const [visibility, setVisibility] = useState<boolean>(false);
const [key, setKey] = useState<string>('一');
const [pin, setPin] = useState<any>('');
let sysInfo = localStorage.getItem(`${urlParams?.fileType}`);
let info = sysInfo ? JSON.parse(sysInfo) : null;
useEffect(() => {
let sysName = localStorage.getItem(`${urlParams?.fileType}`);
if (sysName) {
let data = JSON.parse(sysName);
console.log("1",data);
if (info) {
// 获取选中安装的内容
let installArr: string[] = []
info.installExe.forEach((e: any) => {
if (e.select) installArr.push(e.name)
})
if (!needInstall(installArr) && info?.powerOn && info?.restartService) {
setAccessPermissions(true)
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, accessPermissions: true }))
} else {
setAccessPermissions(false)
}
}
function handleKeyPress(e: any) {
if (e.key === 'Enter') {
@ -37,6 +51,19 @@ const CoreSystemEntrance: FC<PageProps> = ({ }) => {
};
}, [])
// 检查需要安装的内容
const needInstall = (installArr: string | any[]) => {
let res = false
let names = ['密码资源输入输出设备驱动', '一体化密码机驱动安装程序', '一体化密码机管理软件']
for (let i = 0; i < names.length; i++) {
if (!installArr.includes(names[i])) {
res = true;
break;
}
}
return res
}
const initData = () => {
setVisibility(false);
setKey('一');
@ -47,52 +74,79 @@ const CoreSystemEntrance: FC<PageProps> = ({ }) => {
if (key == '一' && pin == 'admin') {
setKey('二');
setPin('')
setVisibility(false);
setTimeout(() => { setVisibility(true) }, 300)
} else if (key == '二' && pin == 'test') {
initData()
// 记录登陆成功状态
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, pingLoginStatus: true }))
// 登录成功进入系统
history.push('/teamViewer/paramsSetting')
}else {
history.push(`/registerManage/deviceRegister/${urlParams?.fileType}${location?.search}`)
setVisibility(false);
} else {
message.error('PIN码错误请重新输入')
}
}
return (
<div className={styles.entrance}>
<div className={styles.text_warp}>
<div></div>
<div></div>
<div></div>
</div>
<div className={styles.prompt}>...</div>
{/* 登录弹窗 */}
<Modal
title="用户登录"
open={visibility}
centered
width={550}
onCancel={() => setVisibility(false)}
footer={null}
maskClosable={false}
>
<div className={styles.login_warp}>
<div className={styles.imges}></div>
<div>
<div style={{ display: 'flex', alignItems: 'center' }}>
<div style={{ width: 120, marginRight: 16 }}>PIN</div>
<Input placeholder="请输入PIN码" value={pin} onChange={(e) => setPin(e.target.value)} onPressEnter={() => submit()} />
<>
{
accessPermissions ?
<div className={styles.entrance}>
<div className={styles.text_warp}>
<div></div>
<div></div>
<div></div>
</div>
<div className='mt20'>{key}PIN</div>
<div className={styles.prompt}>...</div>
{/* 登录弹窗 */}
<Modal
title="用户登录"
open={visibility}
centered
width={550}
onCancel={() => setVisibility(false)}
footer={null}
maskClosable={false}
afterOpenChange={() => {
inputRef.current?.focus();
}}
>
<div className={styles.login_warp}>
<div className={styles.imges}></div>
<div>
<div style={{ display: 'flex', alignItems: 'center' }}>
<div style={{ width: 120, marginRight: 16 }}>PIN</div>
<Input ref={inputRef} placeholder="请输入PIN码" value={pin} onChange={(e) => setPin(e.target.value)} onPressEnter={() => submit()} />
</div>
<div className='mt20'>{key}PIN</div>
</div>
</div>
<div className='flex_jE mt20'>
<ButtonComp style={{ marginRight: 20 }} text={'确定'} onClick={() => submit()} />
<ButtonComp type="cancel" text={'退出'} onClick={() => initData()} />
</div>
</Modal>
</div>
</div>
<div className='flex_jE mt20'>
<ButtonComp style={{ marginRight: 20 }} text={'确定'} onClick={() => submit()} />
<ButtonComp type="cancel" text={'退出'} onClick={() => initData()} />
</div>
</Modal>
</div>
: <Modal
title={'系统提示'}
open={!accessPermissions}
centered
width={500}
closeIcon={false}
footer={null}
maskClosable={false}
>
<div style={{ padding: '20px 0' }}>
</div>
</Modal>
}
</>
)
}

@ -4,7 +4,7 @@ import { Input, Upload, UploadProps, message } from 'antd';
import ButtonComp from '@/components/ButtonComp';
import { college_table_query, deviceInit_init, deviceInstall_deviceInstall } from '@/services/api';
import { useParams } from 'umi';
import { fileStr, sysType } from '@/utils';
import { fileStr, sysType, sysTypeStr } from '@/utils';
interface PageProps {
}
@ -26,10 +26,12 @@ const DeviceInstall: FC<PageProps> = ({ }) => {
"dataInstalled": null
});
let sysInfo = localStorage.getItem(`${urlParams?.fileType}`);
let info = sysInfo ? JSON.parse(sysInfo) : null;
useEffect(() => {
let layoutInfo: any = localStorage.getItem('deviceInit');
if (layoutInfo) {
setFileInfo(JSON.parse(layoutInfo))
if (info?.deviceInit?.data) {
setFileInfo(info?.deviceInit?.data)
setDataLoading(true);
}
}, [])
@ -38,15 +40,15 @@ const DeviceInstall: FC<PageProps> = ({ }) => {
const props: UploadProps = {
maxCount: 1,
beforeUpload: (file: any) => {
let str = sysType[urlParams?.fileType] + fileStr[urlParams?.fileType]
let str: string = sysType[urlParams?.fileType] + fileStr[urlParams?.fileType]
const formData = new FormData();
formData.append('file', file);
formData.append('sysType ', str);
formData.append('sysType ', sysTypeStr[str]);
deviceInit_init(formData).then((res) => {
if (res?.result == "success" && res?.data.length > 0) {
message.success('数据加载成功')
setFileInfo(res?.data[0]);
localStorage.setItem('deviceInit', JSON.stringify(res?.data[0]));
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, deviceInit: {data: res?.data[0], install: false} }));
setDataLoading(true);
} else {
message.error(res?.errorMsg);
@ -86,6 +88,8 @@ const DeviceInstall: FC<PageProps> = ({ }) => {
deviceInstall_deviceInstall({}).then((res) => {
if (res?.result == "success") {
message.success('数据安装成功')
info.deviceInit.install = true
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info}));
} else {
message.error(res?.errorMsg);
}

@ -3,11 +3,15 @@ import styles from './index.less';
import { Modal, message } from 'antd';
import ButtonComp from '@/components/ButtonComp';
import { college_table_query } from '@/services/api';
import { useParams } from 'umi';
import DEV from '@/utils/env/dev';
import { countType } from '@/utils';
interface PageProps {
}
const PowerOnAuth: FC<PageProps> = ({ }) => {
const urlParams = useParams();
const [visibility, setVisibility] = useState<boolean>(false);
const [deviceInfo, setDeviceInfo] = useState<any>({
"createTime": "",
@ -26,17 +30,19 @@ const PowerOnAuth: FC<PageProps> = ({ }) => {
});
const [isDeviceInit, setIsDeviceInit] = useState<boolean>(false);
let sysInfo = localStorage.getItem(`${urlParams?.fileType}`);
let info = sysInfo ? JSON.parse(sysInfo) : null;
useEffect(() => {
let deviceInit = localStorage.getItem('deviceInit');
if (deviceInit) {
if (info?.deviceInit?.data && info?.deviceInit?.install) {
setIsDeviceInit(true);
college_table_query({}).then((res) => {
if (res?.result == "success" && res?.data.length > 0) {
let layoutInfo: any = localStorage.getItem('powerOn');
if (!JSON.parse(layoutInfo)) {
if (!info?.powerOn) {
setVisibility(true);
localStorage.setItem('powerOn', JSON.stringify({ powerOn: true }));
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, powerOn: true }))
}
installSuccess()
setDeviceInfo(res?.data[0]);
} else {
message.error(res?.errorMsg);
@ -47,6 +53,25 @@ const PowerOnAuth: FC<PageProps> = ({ }) => {
}
}, [])
// 在指定的目录下安装快捷方式
const installSuccess = async () => {
try {
const response = await fetch('http://localhost:3000/createShortcut', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
mode: "cors",
body: JSON.stringify({
folderPath: `${DEV.FILE_URL}/${countType[urlParams?.fileType]}`,
shortcutName: '重启服务',
shortcutURL: `${DEV.LOCAL_URL}/restartService/${urlParams?.fileType}`
}),
});
} catch (error) {
message.error(error); // 处理请求错误
}
}
return (
<div className={styles.con_warp}>
<div style={{ padding: 30 }}>

@ -72,7 +72,7 @@ const CoreArea: FC<PageProps> = ({
body: JSON.stringify({
folderPath: `${DEV.FILE_URL}/${countType[urlParams?.fileType]}`,
shortcutName: '核心区客户端',
shortcutURL: `${DEV.LOCAL_URL}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + '核心区')}`
shortcutURL: `${DEV.LOCAL_URL}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + 'hx')}`
}),
});
const data = await response.text();

@ -72,7 +72,7 @@ const DutyArea: FC<PageProps> = ({
body: JSON.stringify({
folderPath: `${DEV.FILE_URL}/${countType[urlParams?.fileType]}`,
shortcutName: '执勤区客户端',
shortcutURL: `${DEV.LOCAL_URL}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + '执勤区')}`
shortcutURL: `${DEV.LOCAL_URL}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + 'zq')}`
}),
});
const data = await response.text();

@ -15,6 +15,7 @@ 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 = [
// 依赖程序
@ -60,10 +61,11 @@ const InstallExe: FC<PageProps> = ({ }) => {
const [open11, setOpen11] = useState(false); // 一体化密码机管理软件
const [open12, setOpen12] = useState(false); // 一体化密码机驱动安装程序
let sysData = localStorage.getItem(`${urlParams?.fileType}`);
useEffect(() => {
let sysName = localStorage.getItem(`${urlParams?.fileType}`);
if (sysName) {
let info = JSON.parse(sysName)
if (sysData) {
let info = JSON.parse(sysData)
if (info?.installExe) {
setListData(info.installExe);
} else {
@ -72,7 +74,7 @@ const InstallExe: FC<PageProps> = ({ }) => {
setListData(typeData);
}
} else {
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({}));
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(subjectInfo));
}
}, [])
@ -124,9 +126,8 @@ const InstallExe: FC<PageProps> = ({ }) => {
setOpen1(true)
break;
case 'GBase升级程序':
let sysName = localStorage.getItem(`${urlParams?.fileType}`);
if (sysName) {
let info = JSON.parse(sysName);
if (sysData) {
let info = JSON.parse(sysData);
info.installExe[1].select = true;
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info));
message.success('GBase升级成功')
@ -166,9 +167,8 @@ const InstallExe: FC<PageProps> = ({ }) => {
}
const setInstallExe = (index: number, text: string) => {
let sysName = localStorage.getItem(`${urlParams?.fileType}`);
if (sysName) {
let info = JSON.parse(sysName);
if (sysData) {
let info = JSON.parse(sysData);
info.installExe[index].select = true;
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info));
message.success(text)

@ -4,15 +4,9 @@ import styles1 from './index.less';
import { useEffect, useState } from 'react';
import DeviceTab from './DeviceTab';
import AdminsTab from './AdminsTab';
import { useParams } from 'umi';
export default function Page() {
const [activeTab, setActiveTab] = useState(1)
const urlParams = useParams();
useEffect(() => {
setActiveTab(1)
}, [urlParams?.id])
const [activeTab, setActiveTab] = useState(2)
return (
<div className={`${styles.params_warp} ${styles.params_warp}`}>

@ -0,0 +1,36 @@
import React, { FC } from 'react';
import styles from './index.less';
import { RedoOutlined } from '@ant-design/icons';
import { useParams } from 'umi';
import { message } from 'antd';
interface PageProps { }
const RestartService: FC<PageProps> = ({ }) => {
const urlParams = useParams();
let sysData = localStorage.getItem(`${urlParams?.fileType}`);
let info = sysData ? JSON.parse(sysData) : null;
return <div className={styles.index_con}>
<div style={{
width: 100,
height: 100,
background: 'rgba(0,0,0,.2)',
display: 'flex',
alignContent: 'center',
justifyContent: 'center',
flexWrap: 'wrap',
cursor: 'pointer'
}}
onClick={() => {
message.success('重启服务成功!')
localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify({ ...info, restartService: true }))
}}
>
<RedoOutlined style={{fontSize: 30}}/>
<div style={{width: '100%', textAlign: 'center', marginTop: 10}}></div>
</div>
</div>
}
export default RestartService;

@ -6,17 +6,24 @@ export const countType = {
}
export const fileStr = {
'hx1': '核心区',
'hx2': '核心区',
'zq1': '执勤区',
'zq2': '执勤区'
'hx1': 'hx',
'hx2': 'hx',
'zq1': 'zq',
'zq2': 'zq'
}
export const sysType = {
'hx1': '上级',
'hx2': '下级',
'zq1': '上级',
'zq2': '下级'
'hx1': 'up_',
'hx2': 'down_',
'zq1': 'up_',
'zq2': 'down_'
}
export const sysTypeStr = {
'up_hx': '上级核心区',
'up_zq': '上级执勤区',
'down_hx': '下级核心区',
'down_zq': '下级执勤区'
}
export const rowClassName = (record:any, index: any) => {

@ -45,7 +45,7 @@ app.post('/createShortcut', (req, res) => {
});
});
// 本地测试的话 需要进入到当前的文件夹目录打开终端 执行 node nodeService.js
// 运行项目 需要进入到当前的文件夹目录打开终端 执行 node nodeService.js
app.listen(port, () => {
console.log(`Server is running on port ${port}`);

@ -0,0 +1,92 @@
export const subjectInfo = {
// 数据库密码
"GBasePassword": null,
// 依赖安装信息
"installExe": [
{
"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
},
{
"name": "认证服务器Install",
"select": false
},
{
"name": "用户登录组件",
"select": false
}
],
// 设备初装信息
"deviceInit": {
// 设备初装数据加载
"data": null,
// 设备初装数据安装
"install": false
},
// 开机认证状态
"powerOn": false,
// 重启服务状态
"restartService": false,
// 是否可以进入系统权限状态
"accessPermissions": false,
// 系统登录状态
"pingLoginStatus": false,
// 当前系统页面位置记录
"layoutInfo": null
}
Loading…
Cancel
Save