diff --git a/config/routes/index.ts b/config/routes/index.ts index 997d1f3..6ef9158 100644 --- a/config/routes/index.ts +++ b/config/routes/index.ts @@ -3,152 +3,34 @@ const routes = [ // { path: '/', redirect: '/404', }, // 后续上线时开放 // 节点初始化工具 - { path: '/nodeInit', name: '节点初始化工具', component: '@/pages/NodeInitTool', layout: false }, + { path: '/nodeInit/:fileType', name: '节点初始化工具', component: '@/pages/NodeInitTool', layout: false }, + + // 063 + { path: '/restore/:fileType', name: '恢复出厂数据', component: '@/pages/M063/Restore', layout: false }, + { path: '/identifier/:fileType', name: '系统自检', component: '@/pages/M063/Init', layout: false }, + { path: '/passwordManage/:fileType', name: '密码管理', component: '@/pages/M063/PasswordManage' }, + { path: '/unify/:fileType', name: '一体化管理', component: '@/pages/M063/UnifyManage' }, + // ------------------------------设备管理---------------------------------- - { path: '/machineManage/register', name: '设备注册', component: '@/pages/MachineManage/MachineRegister' }, - { path: '/machineManage/offline/import', name: '离线管理导入', component: '@/pages/MachineManage/OffLineManage/ImportStep' }, - { path: '/machineManage/offline/export', name: '离线管理导出', component: '@/pages/MachineManage/OffLineManage/ExportStep' }, + { path: '/machineManage/register/:fileType', name: '设备注册', component: '@/pages/MachineManage/MachineRegister' }, + { path: '/machineManage/offline/:fileType', name: '离线管理', component: '@/pages/MachineManage/OffLineManage' }, + { path: '/machineManage/offline/import/:fileType', name: '离线管理导入', component: '@/pages/MachineManage/OffLineManage/ImportStep' }, + { path: '/machineManage/offline/export/:fileType', name: '离线管理导出', component: '@/pages/MachineManage/OffLineManage/ExportStep' }, // --------------------------------------------------------------------------- // ------------------------------密钥管理---------------------------------- - {path:'/secretmanage/receive',name:'接收预制密钥',component:'@/pages/SecretManage/ReceiveSecret'}, - {path:'/secretmanage/detail',name:'预制密钥信息',component:'@/pages/SecretManage/SecretInfo'}, - {path:'/secretmanage/assemble',name:'密钥装配',component:'@/pages/SecretManage/SecretAssemble'}, + {path:'/secretmanage/receive/:fileType',name:'接收预制密钥',component:'@/pages/SecretManage/ReceiveSecret'}, + {path:'/secretmanage/detail/:fileType',name:'预制密钥信息',component:'@/pages/SecretManage/SecretInfo'}, + {path:'/secretmanage/assemble/:fileType',name:'密钥装配',component:'@/pages/SecretManage/SecretAssemble'}, + { path: '/secretmanage/offline/:fileType', name: '离线管理', component: '@/pages/SecretManage/OffLineManage' }, + { path: '/secretmanage/offline/import/:fileType', name: '离线管理导入', component: '@/pages/SecretManage/OffLineManage/ImportStep' }, + { path: '/secretmanage/offline/export/:fileType', name: '离线管理导出', component: '@/pages/SecretManage/OffLineManage/ExportStep' }, // --------------------------------------------------------------------------- // 桌面 { path: '/index', name: '桌面', component: '@/pages/index', layout: false }, - // ------------------------------流程------------------------------ - { 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 }, - - - // ------------------------------GLQ远程维护---------------------------------- - // 建立远程链接 - { path: '/teamViewer/paramsSetting', 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' }, - // --------------------------------------------------------------------------- - - - // ------------------------------网络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' }, - // --------------------------------------------------------------------------- - - - // ------------------------------网络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: '/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' }, - // --------------------------------------------------------------------------- - - - // ------------------------------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: '/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: '/mailboxManage/index', name: '邮箱管理', component: '@/pages/MY/MailboxManage/index' }, - // --------------------------------------------------------------------------- - - - // ------------------------------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: '/logManage/index', name: '日志管理', component: '@/pages/SB/LogManage/index' }, - // 审计管理 - { path: '/auditManage/index', name: '审计管理', component: '@/pages/SB/AuditManage/index' }, - // 境外任务管理 - { path: '/overseasTaskManage/index', name: '境外任务管理', component: '@/pages/SB/OverseasTaskManage/index' }, - // --------------------------------------------------------------------------- - - // ------------------------------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: '/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: '/collectionManage/dataSync', name: '算法托收管理', component: '@/pages/SF/CollectionManage/index' }, - // 算法邮箱管理 - { path: '/mailboxManage/index', name: '算法邮箱管理', component: '@/pages/SF/MailboxManage/index' }, - // --------------------------------------------------------------------------- - - - // ------------------------------SBJK二维版----------------------------------- - - // --------------------------------------------------------------------------- - - - // ------------------------------设备注册----------------------------------- - // 注册管理 - { 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/unitLocation/:id', name: '单位位置管理', component: '@/pages/Register/PositionManage/UnitLocation' }, - { path: '/registerManage/regionalEdit', name: '地域编辑', component: '@/pages/Register/PositionManage/RegionalEdit' }, - // --------------------------------------------------------------------------- - // 建设中页面 { diff --git a/package-lock.json b/package-lock.json index 6b725f7..0017739 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,12 +7,15 @@ "hasInstallScript": true, "dependencies": { "antd": "^5.11.2", + "body-parser": "^1.20.2", "dayjs": "^1.11.10", "dva": "^2.4.1", + "express": "^4.18.2", "moment": "^2.29.4", "umi": "^4.0.88" }, "devDependencies": { + "@types/cors": "^2.8.17", "@types/react": "^18.0.33", "@types/react-dom": "^18.0.11", "typescript": "^5.0.3" @@ -2084,6 +2087,15 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmmirror.com/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/eslint": { "version": "8.56.1", "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.1.tgz", @@ -3382,6 +3394,18 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "peer": true }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz", @@ -3564,6 +3588,11 @@ "is-array-buffer": "^3.0.1" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, "node_modules/array-includes": { "version": "3.1.7", "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.7.tgz", @@ -3949,6 +3978,64 @@ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", @@ -4139,6 +4226,14 @@ "node": ">=12" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz", @@ -4365,11 +4460,43 @@ "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", @@ -4913,6 +5040,14 @@ "node": ">= 0.4" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/des.js": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz", @@ -4922,6 +5057,15 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-indent": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-7.0.1.tgz", @@ -5178,6 +5322,11 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "license": "MIT" }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, "node_modules/electron-to-chromium": { "version": "1.4.588", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", @@ -5215,6 +5364,14 @@ "node": ">= 4" } }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", @@ -5460,6 +5617,11 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -5843,6 +6005,14 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", @@ -5887,6 +6057,124 @@ "node": ">=8" } }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5994,6 +6282,36 @@ "node": ">=0.10.0" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", @@ -6166,6 +6484,14 @@ "node": ">=12.20.0" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", @@ -6174,6 +6500,14 @@ "node": "*" } }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", @@ -6712,6 +7046,21 @@ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", @@ -6870,6 +7219,14 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", @@ -8106,6 +8463,14 @@ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/memfs": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.6.0.tgz", @@ -8141,6 +8506,11 @@ "node": ">=10" } }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", @@ -8154,6 +8524,14 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", @@ -8187,7 +8565,6 @@ "version": "1.6.0", "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "optional": true, "bin": { "mime": "cli.js" }, @@ -8199,7 +8576,6 @@ "version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true, "engines": { "node": ">= 0.6" } @@ -8208,7 +8584,6 @@ "version": "2.1.35", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -8347,6 +8722,14 @@ "ms": "^2.1.1" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", @@ -8615,6 +8998,17 @@ "resolved": "https://registry.npmmirror.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", @@ -8758,6 +9152,14 @@ "node": ">= 0.10" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", @@ -9549,6 +9951,18 @@ "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", @@ -9656,6 +10070,39 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc-cascader": { "version": "3.20.0", "resolved": "https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.20.0.tgz", @@ -10950,6 +11397,47 @@ "semver": "bin/semver.js" } }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -10959,6 +11447,20 @@ "randombytes": "^2.1.0" } }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz", @@ -10991,6 +11493,11 @@ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", @@ -11299,6 +11806,14 @@ "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -11907,6 +12422,14 @@ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", "license": "MIT" }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -12348,6 +12871,18 @@ "node": ">=10" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -12469,6 +13004,14 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/untildify/-/untildify-4.0.0.tgz", @@ -12553,6 +13096,14 @@ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", @@ -14354,6 +14905,15 @@ "@babel/types": "^7.20.7" } }, + "@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmmirror.com/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/eslint": { "version": "8.56.1", "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.1.tgz", @@ -15406,6 +15966,15 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "peer": true }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, "acorn": { "version": "8.11.3", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz", @@ -15549,6 +16118,11 @@ "is-array-buffer": "^3.0.1" } }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, "array-includes": { "version": "3.1.7", "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.7.tgz", @@ -15857,6 +16431,56 @@ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", @@ -16030,6 +16654,11 @@ "run-applescript": "^5.0.0" } }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, "call-bind": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz", @@ -16217,11 +16846,34 @@ "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, "copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", @@ -16632,6 +17284,11 @@ "object-keys": "^1.1.1" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, "des.js": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz", @@ -16641,6 +17298,11 @@ "minimalistic-assert": "^1.0.0" } }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, "detect-indent": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-7.0.1.tgz", @@ -16862,6 +17524,11 @@ } } }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, "electron-to-chromium": { "version": "1.4.588", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", @@ -16898,6 +17565,11 @@ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", @@ -17116,6 +17788,11 @@ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -17398,6 +18075,11 @@ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", @@ -17435,6 +18117,110 @@ } } }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -17521,6 +18307,35 @@ "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", @@ -17653,11 +18468,21 @@ "fetch-blob": "^3.1.2" } }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, "fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", @@ -18101,6 +18926,18 @@ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", @@ -18220,6 +19057,11 @@ "loose-envify": "^1.0.0" } }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", @@ -19165,6 +20007,11 @@ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, "memfs": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.6.0.tgz", @@ -19193,6 +20040,11 @@ "yargs-parser": "^20.2.3" } }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", @@ -19203,6 +20055,11 @@ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", @@ -19231,20 +20088,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "optional": true + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, "requires": { "mime-db": "1.52.0" } @@ -19353,6 +20207,11 @@ } } }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", @@ -19577,6 +20436,14 @@ "resolved": "https://registry.npmmirror.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==" }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", @@ -19693,6 +20560,11 @@ "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, "pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", @@ -20234,6 +21106,15 @@ } } }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", @@ -20328,6 +21209,32 @@ "safe-buffer": "^5.1.0" } }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, "rc-cascader": { "version": "3.20.0", "resolved": "https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.20.0.tgz", @@ -21269,6 +22176,48 @@ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, "serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -21278,6 +22227,17 @@ "randombytes": "^2.1.0" } }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, "set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz", @@ -21304,6 +22264,11 @@ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", @@ -21565,6 +22530,11 @@ "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, "stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -22054,6 +23024,11 @@ "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -22274,6 +23249,15 @@ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "peer": true }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -22367,6 +23351,11 @@ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, "untildify": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/untildify/-/untildify-4.0.0.tgz", @@ -22436,6 +23425,11 @@ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, "v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", diff --git a/src/components/NodeInitWrap/index.less b/src/components/NodeInitWrap/index.less index 2d1959e..0262816 100644 --- a/src/components/NodeInitWrap/index.less +++ b/src/components/NodeInitWrap/index.less @@ -1,21 +1,23 @@ .cont_warp { - border: 1px solid #000; + // border: 1px solid #000; + width:100%; .header { - height: 40px; + // height: 40px; line-height: 40px; font-size: 16px; font-weight: 600; text-align: center; - border-bottom: 1px solid #000; + // border-bottom: 1px solid #000; } .main_body { display: flex; align-items: center; justify-content: flex-start; - border-bottom: 1px solid #000; - height: 500px; + border: 1px solid #000; + // max-height: 500px; + .body_left { width: 200px; @@ -29,11 +31,13 @@ display:flex; flex-direction: column; justify-content: flex-start; - height:100%; + flex:1; + // height:100%; + margin:20px; - .stepTitle{ - margin-top:30px; - } + // .stepTitle{ + // margin-top:30px; + // } .stepDesc{ margin-top:30px; } @@ -44,7 +48,7 @@ display: flex; align-items: center; justify-content: space-between; - margin: 0 10px; + margin: 20px 0; .btns { display: flex; align-items: center; diff --git a/src/components/NodeInitWrap/index.tsx b/src/components/NodeInitWrap/index.tsx index 41518ef..6a0b5ed 100644 --- a/src/components/NodeInitWrap/index.tsx +++ b/src/components/NodeInitWrap/index.tsx @@ -3,7 +3,7 @@ import styles from './index.less'; import ButtonComp from '@/components/ButtonComp'; interface PageProps { - headTitle: string; //顶部标题 + // headTitle: string; //顶部标题 stepTitle: string; //步骤标题 stepDesc: string; //步骤描述 leftStep: string; //左侧步骤描述 @@ -19,7 +19,7 @@ interface PageProps { } const NodeInitWrap: FC = ({ - headTitle, + // headTitle, stepTitle, stepDesc, leftStep, @@ -37,7 +37,7 @@ const NodeInitWrap: FC = ({ return (
{/* 标题 */} -
{headTitle}
+ {/*
{headTitle}
*/} {/* 中间左右结构的主体 */}
{leftStep}
@@ -51,10 +51,10 @@ const NodeInitWrap: FC = ({
注意:xxx
- {nextbtn && } - {prebtn && } - {finishbtn && } - {cancelbtn && } + {cancelbtn && } + {prebtn && } + {nextbtn && } + {finishbtn && }
diff --git a/src/layouts/LeftMenuA/index.less b/src/layouts/LeftMenuA/index.less new file mode 100644 index 0000000..a42af15 --- /dev/null +++ b/src/layouts/LeftMenuA/index.less @@ -0,0 +1,53 @@ +.menu_item { + width: 260px; + height: 32px; + background: linear-gradient(180deg, #4AB4E4 0%, #A2E1FF 100%); + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + font-weight: 600; + color: #FFFFFF; + cursor: pointer; + position: relative; + margin-top:20px; + + .triangle { + position: absolute; + right: 20px; + width: 0; + height: 0; + border-left: 6px solid #fff; + border-bottom: 6px solid transparent; + border-top: 6px solid transparent; + transition: all 0.15s ease-in; + } +} + +.item_warp { + transition: all 2s ease-in; + + .item1 { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + margin: 20px 0; + cursor: pointer; + } + + .item1_img { + width: 60px; + height: 60px; + background-color: saddlebrown; + } + + .item1_name { + width: 100%; + text-align: center; + font-size: 14px; + font-weight: 400; + color: #1A374A; + margin-top: 6px; + } +} \ No newline at end of file diff --git a/src/layouts/LeftMenuA/index.tsx b/src/layouts/LeftMenuA/index.tsx new file mode 100644 index 0000000..2ec64d0 --- /dev/null +++ b/src/layouts/LeftMenuA/index.tsx @@ -0,0 +1,49 @@ +import { FC, useEffect, useRef, useState } from 'react'; +import styles from './index.less'; +import { history, useLocation, useParams } from 'umi'; +import { Menu, Tree } from 'antd'; + +interface PageProps { + data: Array<{ + name: string; + url: string + }>; +} + +const LeftMenuCom: FC = ({ data }) => { + const urlParams = useParams(); + const [list, setList] = useState([]); + const [active,setActive] = useState(0) + + let urlStr = `${urlParams?.fileType}${location?.search}`; + + useEffect(() => { + setList([...data]) + }, []) + + + + + + return ( +
+ {list.map((item: any, index: number) => { + return ( +
+ {/* 类型 */} +
{ + history.push(`${item.url}/${urlStr}`) + setActive(index); + }}> +
{item.name}
+ {/*
*/} +
+
+ ) + })} +
+ ) +} + +export default LeftMenuCom + diff --git a/src/layouts/LeftMenuOne/index.tsx b/src/layouts/LeftMenuOne/index.tsx index 60257bb..0eccf4e 100644 --- a/src/layouts/LeftMenuOne/index.tsx +++ b/src/layouts/LeftMenuOne/index.tsx @@ -28,6 +28,8 @@ const LeftMenuCom: FC = ({ data }) => { const [menuItems, setMenuItems] = useState([]); + + useEffect(() => { menuItemsConfig(); diff --git a/src/pages/GLQ/TeamViewer/CurrentIP/index.less b/src/layouts/LeftMenuStep/index.less similarity index 100% rename from src/pages/GLQ/TeamViewer/CurrentIP/index.less rename to src/layouts/LeftMenuStep/index.less diff --git a/src/layouts/LeftMenuStep/index.tsx b/src/layouts/LeftMenuStep/index.tsx new file mode 100644 index 0000000..28d8efa --- /dev/null +++ b/src/layouts/LeftMenuStep/index.tsx @@ -0,0 +1,33 @@ +import { FC, useEffect, useRef, useState } from 'react'; +import styles from './index.less'; +import { history, useLocation, useParams } from 'umi'; + + +interface PageProps { + currStep: number, + allStep:number, + stepName:string, +} + +const LeftMenuCom: FC = ({ + currStep, + allStep, + stepName +}) => { + + + return ( +
+
步骤{currStep}of{allStep}:{stepName}
+
+ ) +} + +export default LeftMenuCom + diff --git a/src/layouts/LeftMenuTree/index.tsx b/src/layouts/LeftMenuTree/index.tsx index 60257bb..f51deef 100644 --- a/src/layouts/LeftMenuTree/index.tsx +++ b/src/layouts/LeftMenuTree/index.tsx @@ -4,16 +4,7 @@ import { history, useLocation, useParams } from 'umi'; import { Menu, Tree } from 'antd'; interface PageProps { - data: Array<{ - // 菜单名称 - name: string; - // 是否展开 - check: boolean; - // 内容是否有目录结构 - isTree?: boolean; - // 菜单列表 : name: 名称; url: 路由; img: 图标; - data: Array<{ name: string; url: string; img: any; }> - }>; + data: any } const LeftMenuCom: FC = ({ data }) => { @@ -29,16 +20,16 @@ const LeftMenuCom: FC = ({ data }) => { const [menuItems, setMenuItems] = useState([]); useEffect(() => { - menuItemsConfig(); + // menuItemsConfig(); - data.forEach((item, index) => { - // 默认展开第一个 - // item.check = (index == 0 ? true : false); - // 默认全部展开 - item.check = true; + // data.forEach((item, index) => { + // // 默认展开第一个 + // // item.check = (index == 0 ? true : false); + // // 默认全部展开 + // item.check = true; - if (item?.isTree) setSelectedKeys([urlParams?.id]) - }) + // if (item?.isTree) setSelectedKeys([urlParams?.id]) + // }) setList([...data]) const handleClickOutside = (e: any) => { @@ -56,15 +47,15 @@ const LeftMenuCom: FC = ({ data }) => { const menuItemsConfig = () => { if (`/registerManage/deviceRegister/${urlParams?.id}` == route?.pathname) { 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/${urlParams?.id}` == route?.pathname) { 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: '删除' } ]) } } @@ -133,72 +124,17 @@ const LeftMenuCom: FC = ({ data }) => { return (
- {list.map((item: any, index: number) => { - return ( -
- {/* 类型 */} -
{ - list[index].check = !list[index].check; - setList([...list]) - }}> -
{item.name}
-
-
- - {/* 列表 */} -
- { - item?.isTree ? - // 树结构 -
- e.preventDefault()} - onRightClick={({ event, node }) => handleRightClick(event, node)} - onSelect={(e) => { handleSelect(e, item.name) }} - selectedKeys={selectedKeys} - treeData={treeData} - blockNode={true} - defaultExpandAll={true} - /> - {showContextMenu && ( -
- -
- )} -
: - // 列表item - item.data.map((item1: any, index1: number) => { - return ( -
{ - setSelectedKeys([]) - history.push(item1.url) - }}> -
-
- {item1.name} -
-
- ) - }) - } -
-
- ) - })} -
+ e.preventDefault()} + onRightClick={({ event, node }) => handleRightClick(event, node)} + onSelect={(e) => { handleSelect(e, item.name) }} + selectedKeys={selectedKeys} + treeData={data} + blockNode={true} + defaultExpandAll={true} + /> +
) } diff --git a/src/layouts/index.less b/src/layouts/index.less index 4d5299d..d5f5eb7 100644 --- a/src/layouts/index.less +++ b/src/layouts/index.less @@ -78,7 +78,7 @@ .nav_warp_b { display:flex; align-items: center; - justify-content: space-between; + justify-content: flex-start; background: linear-gradient(rgb(74, 180, 228) 0%, rgb(162, 225, 255) 100%); box-shadow: 0px 2px 4px 0px rgba(36, 57, 75, 0.5); @@ -152,15 +152,15 @@ .main_warp { width: 100%; - height: calc(100vh - 114px); - min-height: 600px; + height: calc(100vh - 224px); + min-height: 500px; display: flex; .left_menu { width: 260px; min-width: 260px; height: 100%; - min-height: calc(100vh - 114px - 50px); + min-height: calc(100vh - 224px - 50px); background: #FFFFFF; border-right: 1px solid #D8D8D8; overflow: hidden; @@ -169,13 +169,14 @@ } .right_warp { - height: calc(100% - 114px); - min-height: calc(100vh - 114px); + height: calc(100% - 224px); + min-height: calc(100vh - 224px); width: calc(100% - 261px) } .right_route { position: relative; + height:100%; overflow: hidden; overflow-y: auto; background: #F9F9F9; diff --git a/src/layouts/index.tsx b/src/layouts/index.tsx index 4e0a55c..557f99c 100644 --- a/src/layouts/index.tsx +++ b/src/layouts/index.tsx @@ -1,11 +1,14 @@ -import { Outlet, history, useLocation } from 'umi'; +import { Outlet, history, useLocation,useParams } from 'umi'; import styles from './index.less'; -import { useEffect, useState } from 'react'; +import { useEffect, useState} from 'react'; import { MenuType, tabsType } from '@/utils/menu'; import { ConfigProvider, Select, message } from 'antd'; import LeftMenuOne from '@/layouts/LeftMenuOne'; import LeftMenuTwo from '@/layouts/LeftMenuTwo'; +import LeftMenuTree from '@/layouts/LeftMenuTree'; +import LeftMenuStep from '@/layouts/LeftMenuStep'; +import LeftMenuA from '@/layouts/LeftMenuA'; import BottomConfigInfo from '@/layouts/BottomConfigInfo'; import zhCN from 'antd/es/locale/zh_CN'; @@ -17,50 +20,54 @@ dayjs.locale('zh-cn'); import moment from 'moment' moment.locale('ZH-cn') - -const options2 = [ +const options55=[ { value: 1, label: '设备管理' }, - { value: 2, label: 'MY管理' }, - { value: 3, label: 'SB管理' }, - { value: 4, label: 'SF管理' }, - { value: 5, label: 'SBJK二维版', disabled: true }, - { value: 6, label: '日志管理' } + { value: 2, label: '密钥管理' }, + { value: 3, label: '算法管理' }, + { value: 4, label: '审计管理' }, + { value: 5, label: '监控管理' }, + { value: 6, label: '系统管理' }, + { value: 7, label: '日志管理' }, +] + +const options63=[ + { value: 8, label: '密码管理' }, + { value: 9, label: '一体化管理' }, ] + + const leftMenuType: any = { // 设备管理 - '设备注册': , - '在线管理': , - '离线管理': , - // MY管理 - '密钥体管理': , - '密钥管理': , - '邮箱管理': , - // SB管理 - '设备管理': , - '日志管理': , - '审计管理': , - '境外任务管理': , - // SF管理 - '算法资源管理': , - '算法配置管理': , - '算法托收管理': , - '算法邮箱管理': , - // SBJK二维版 - '设备监控二维版':
, - // 设备注册 - '注册管理': , - '位置管理': + '设备注册': , + '离线管理1':, + // 密钥管理 + '预制密钥':, + '密钥装配': , + '离线管理2':, + + // 063 + '密码管理': , } export default function Layout() { + const urlParams = useParams(); const location = useLocation(); const [routeName, setRouteName] = useState(''); const [selectVal, setSelectVal] = useState(1); //当前选中的是哪个一级菜单 const [tabList, setTabList] = useState([]); //一级菜单包含的二级菜单列表 const [active, setActive] = useState(1); //当前选中的是哪个二级菜单 - const [activeName, setActiveName] = useState('GLQ远程维护'); + const [activeName, setActiveName] = useState('设备注册'); + + // 获取布局信息 + let sysData = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysData ? JSON.parse(sysData) : null; + + let urlStr = `${urlParams?.fileType}${location?.search}`; + + const [options2,setOptios2] = useState([...options55]) + const [treeData, setTreeData] = useState([ { title: 'Parent 1', @@ -110,6 +117,12 @@ export default function Layout() { } else { setTabList([...tabsType[selectVal]]); } + + if(urlParams?.fileType === 's63'){ + setOptios2(options63) + }else{ + setOptios2(options55) + } }, []) useEffect(() => { @@ -126,20 +139,20 @@ export default function Layout() { localStorage.setItem('layoutInfo', JSON.stringify(layoutInfo)); }); - useEffect(() => { - // 条件判断: 当选择框的值发生改变时,在(tabList长度大于0 并且 没有发现记录布局的数据)时 ,默认进入第一个模块的页面 - if (tabList.length > 0 && !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}`) - } else { - history.push(`${info[0].url}`) - } - } - }, [selectVal]) + // useEffect(() => { + // // 条件判断: 当选择框的值发生改变时,在(tabList长度大于0 并且 没有发现记录布局的数据)时 ,默认进入第一个模块的页面 + // if (tabList.length > 0 && !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}`) + // } else { + // history.push(`${info[0].url}`) + // } + // } + // }, [selectVal]) // 校验是否是树结构列表 const isTreeType = (info: any) => { @@ -200,6 +213,8 @@ export default function Layout() { setSelectVal(item.value) setTabList([...tabsType[item.value]]) setActive(1) + setActiveName(tabsType[item.value]?.[0]?.name) + history.push(`${tabsType[item.value]?.[0]?.url}/${urlStr}`) }} >
@@ -208,6 +223,12 @@ export default function Layout() { }) }
+ +
+
XXXX:3023-00-00 15:00:00
+
XXXX:3023-00-00 15:00:00
+
+
@@ -222,20 +243,21 @@ export default function Layout() { setActive(item.id) setActiveName(item.name) + history.push(`${item.url}/${urlStr}`) - if (isTreeType(info)) return + // if (isTreeType(info)) return - if (info.length == 0 || info[0].data && info[0].data.length == 0) { - history.push('/construction'); - return - } + // if (info.length == 0 || info[0].data && info[0].data.length == 0) { + // history.push('/construction'); + // return + // } // 改变activeName时跳转菜单栏的第一个路由 - if (info[0].data) { - history.push(`${info[0].data[0].url}`) - } else { - history.push(`${info[0].url}`) - } + // if (info[0].data) { + // history.push(`${info[0].data[0].url}`) + // } else { + // history.push(`${info[0].url}`) + // } }}> {item.name} @@ -244,10 +266,6 @@ export default function Layout() { }) }
-
-
XXXX:3023-00-00 15:00:00
-
XXXX:3023-00-00 15:00:00
-
{/* 二级导航标题 */} diff --git a/src/pages/CoreSystemEntrance/index.less b/src/pages/CoreSystemEntrance/index.less deleted file mode 100644 index f6cb524..0000000 --- a/src/pages/CoreSystemEntrance/index.less +++ /dev/null @@ -1,54 +0,0 @@ -.entrance { - position: relative; - width: 100vw; - min-height: 100vh; - background: url('../../assets/images/bk_img.png') no-repeat; - background-size: 100% 100%; - - .text_warp { - width: 80vw; - margin: 0 auto; - - div { - text-align: center; - } - - div:nth-child(1) { - font-size: 36px; - font-weight: 600; - padding-top: 30vh; - } - - div:nth-child(2) { - font-size: 50px; - font-weight: 600; - margin: 50px 0 80px 0; - letter-spacing: 2px; - } - - div:nth-child(3) { - font-size: 28px; - } - } - - .prompt { - position: fixed; - bottom: 45px; - right: 20px; - font-size: 24px; - color: red; - font-weight: bold; - } -} - -.login_warp { - display: flex; - align-items: center; - - .imges { - width: 81px; - height: 81px; - margin-right: 20px; - background-color: saddlebrown; - } -} \ No newline at end of file diff --git a/src/pages/CoreSystemEntrance/index.tsx b/src/pages/CoreSystemEntrance/index.tsx deleted file mode 100644 index 1e7f4a9..0000000 --- a/src/pages/CoreSystemEntrance/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { FC, useEffect, 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 = ({ }) => { - const urlParams = useParams(); - const loaction = useLocation(); - const [visibility, setVisibility] = useState(false); - const [key, setKey] = useState('一'); - const [pin, setPin] = useState(''); - - useEffect(() => { - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let data = JSON.parse(sysName); - console.log("1",data); - } - - - function handleKeyPress(e: any) { - if (e.key === 'Enter') { - setVisibility(true) - } - } - - // 添加事件监听器 - document.addEventListener('keydown', handleKeyPress); - - // 清除事件监听器 - return () => { - document.removeEventListener('keydown', handleKeyPress); - }; - }, []) - - const initData = () => { - setVisibility(false); - setKey('一'); - setPin('') - } - - const submit = () => { - if (key == '一' && pin == 'admin') { - setKey('二'); - setPin('') - } else if (key == '二' && pin == 'test') { - initData() - // 登录成功进入系统 - history.push('/teamViewer/paramsSetting') - }else { - message.error('PIN码错误,请重新输入') - } - } - - return ( -
-
-
总参谋部
-
一体化对称密码管理系统
-
总参谋部密码管理中心
-
- -
请插入电子钥匙...
- - {/* 登录弹窗 */} - setVisibility(false)} - footer={null} - maskClosable={false} - > -
-
-
-
-
请输入PIN码
- setPin(e.target.value)} onPressEnter={() => submit()} /> -
-
提示信息:请插入第{key}个钥匙并输入PIN码
-
-
- -
- submit()} /> - initData()} /> -
-
-
- ) -} - -export default CoreSystemEntrance \ No newline at end of file diff --git a/src/pages/GLQ/TeamViewer/CurrentIP/index.tsx b/src/pages/GLQ/TeamViewer/CurrentIP/index.tsx deleted file mode 100644 index 92c38b4..0000000 --- a/src/pages/GLQ/TeamViewer/CurrentIP/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from './index.less'; - -// GLQ远程维护 --> 交互维护命令--> 当前IP -export default function Page() { - return ( -
- {'GLQ远程维护 --> 交互维护命令--> 当前IP'} -
- ); -} diff --git a/src/pages/GLQ/TeamViewer/OtherCommand/index.less b/src/pages/GLQ/TeamViewer/OtherCommand/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/GLQ/TeamViewer/OtherCommand/index.tsx b/src/pages/GLQ/TeamViewer/OtherCommand/index.tsx deleted file mode 100644 index 92c38b4..0000000 --- a/src/pages/GLQ/TeamViewer/OtherCommand/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from './index.less'; - -// GLQ远程维护 --> 交互维护命令--> 当前IP -export default function Page() { - return ( -
- {'GLQ远程维护 --> 交互维护命令--> 当前IP'} -
- ); -} diff --git a/src/pages/GLQ/TeamViewer/ParamsSetting/index.tsx b/src/pages/GLQ/TeamViewer/ParamsSetting/index.tsx deleted file mode 100644 index 58fccec..0000000 --- a/src/pages/GLQ/TeamViewer/ParamsSetting/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import { Form, Input, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { setParameter } from '@/services/gql'; -import { validateIPAddress } from '@/utils/validate'; - -export default function Page() { - const [form] = Form.useForm(); - - const onFinish = (values: any) => { - setParameter({ - ipAddress: values.ipAddress - }).then((res) => { - if (res.result == 'success') { - message.success('连接成功') - }else { - message.success(res.errorMsg) - } - }) - }; - - return ( -
- -
配置与被控端连接的连接参数
-
-
-
- - - -
-
- form.submit()} /> - form.resetFields()} /> -
-
-
-
- ); -} diff --git a/src/pages/GLQ/TeamViewer/PingCommand/index.less b/src/pages/GLQ/TeamViewer/PingCommand/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/GLQ/TeamViewer/PingCommand/index.tsx b/src/pages/GLQ/TeamViewer/PingCommand/index.tsx deleted file mode 100644 index d763a91..0000000 --- a/src/pages/GLQ/TeamViewer/PingCommand/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from './index.less'; - -// GLQ远程维护 --> 交互维护命令--> PING命令 -export default function Page() { - return ( -
- {'GLQ远程维护 --> 交互维护命令--> PING命令'} -
- ); -} diff --git a/src/pages/GLQ/TeamViewer/SystemTime/index.less b/src/pages/GLQ/TeamViewer/SystemTime/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/GLQ/TeamViewer/SystemTime/index.tsx b/src/pages/GLQ/TeamViewer/SystemTime/index.tsx deleted file mode 100644 index 161ec38..0000000 --- a/src/pages/GLQ/TeamViewer/SystemTime/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from './index.less'; - -// GLQ远程维护 --> 交互维护命令--> 系统时间 -export default function Page() { - return ( -
- {'GLQ远程维护 --> 交互维护命令--> 系统时间'} -
- ); -} diff --git a/src/pages/GLQ/TeamViewer/TelnetCommand/index.less b/src/pages/GLQ/TeamViewer/TelnetCommand/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/GLQ/TeamViewer/TelnetCommand/index.tsx b/src/pages/GLQ/TeamViewer/TelnetCommand/index.tsx deleted file mode 100644 index b107b63..0000000 --- a/src/pages/GLQ/TeamViewer/TelnetCommand/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from './index.less'; - -// GLQ远程维护 --> 交互维护命令-->TELNET命令 -export default function Page() { - return ( -
- {'GLQ远程维护 --> 交互维护命令-->TELNET命令'} -
- ); -} diff --git a/src/pages/GLQ/WebGLQ/FirewallPolicyInfo/index.tsx b/src/pages/GLQ/WebGLQ/FirewallPolicyInfo/index.tsx deleted file mode 100644 index c40ca6a..0000000 --- a/src/pages/GLQ/WebGLQ/FirewallPolicyInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取防火墙策略 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 4}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取防火墙策略`, - `正在获取防火墙策略中...`, - `获取防火墙策略完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端防火墙策略配置情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/LogRecordInfo/index.tsx b/src/pages/GLQ/WebGLQ/LogRecordInfo/index.tsx deleted file mode 100644 index 5cdb0f5..0000000 --- a/src/pages/GLQ/WebGLQ/LogRecordInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取日志信息 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 4}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取日志信息`, - `正在获取日志信息中...`, - `获取日志信息完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端隔离器错误日志信息
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/ManageConfig/index.tsx b/src/pages/GLQ/WebGLQ/ManageConfig/index.tsx deleted file mode 100644 index ea83b01..0000000 --- a/src/pages/GLQ/WebGLQ/ManageConfig/index.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import { Form, Input, Select, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect } from 'react'; -import { remoteFileConfiSendData, remoteFileConfigClean } from '@/services/gql'; - -// 网络GLQ配置 --> 远程文件配置--> 管理配置 -export default function Page() { - - const [form] = Form.useForm(); - - useEffect(() => { - form.setFieldsValue({ - deviceLocation: '前端机平台', - deviceType: '类型1', - hotStandby: 'no', - deviceId: '', - }) - }, []) - - const onFinish = (values: any) => { - remoteFileConfiSendData({ - jsonStr: JSON.stringify(values), - type: 4 - }).then((res) => { - if (res?.result == "success") { - message.success('文件提交成功'); - form.resetFields(); - } else { - message.error(res?.errorMsg); - } - }) - }; - - const clearInfo = () => { - remoteFileConfigClean({type: 4}).then(res => { - if (res?.result == "success") { - message.success('清除信息成功'); - }else { - message.error(res?.errorMsg); - } - }) - } - - - return ( -
- -
配置隔离器应用程序运行管理参数
-
-
-
- - { }} - options={[ - { label: '类型1', value: '类型1' }, - { label: '类型2', value: '类型2' } - ]} - /> - - - - -
-
- form.submit()} /> - clearInfo()} /> -
-
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/ManageConfigInfo/index.tsx b/src/pages/GLQ/WebGLQ/ManageConfigInfo/index.tsx deleted file mode 100644 index 46dac1f..0000000 --- a/src/pages/GLQ/WebGLQ/ManageConfigInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取管理配置 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 4}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取管理配置`, - `正在获取管理配置中...`, - `获取管理配置完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端服务管理配置情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/NetworkConfigInfo/index.tsx b/src/pages/GLQ/WebGLQ/NetworkConfigInfo/index.tsx deleted file mode 100644 index 8098e99..0000000 --- a/src/pages/GLQ/WebGLQ/NetworkConfigInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取网络配置 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 2}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取网络配置`, - `正在获取网络配置中...`, - `获取网络配置完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端网络状态信息配置情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/NetworkParams/index.less b/src/pages/GLQ/WebGLQ/NetworkParams/index.less deleted file mode 100644 index a0520f1..0000000 --- a/src/pages/GLQ/WebGLQ/NetworkParams/index.less +++ /dev/null @@ -1,6 +0,0 @@ -.params_warp1 { - [class~='ant-form-item-label'] { - width: 80px; - justify-content: flex-end; - } -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/NetworkParams/index.tsx b/src/pages/GLQ/WebGLQ/NetworkParams/index.tsx deleted file mode 100644 index 47dbc9e..0000000 --- a/src/pages/GLQ/WebGLQ/NetworkParams/index.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import styles1 from './index.less'; -import { Form, Input, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { remoteFileConfiSendData, remoteFileConfigClean } from '@/services/gql'; -import { subnetMaskValidator, validateIPAddress } from '@/utils/validate'; - -// 网络GLQ配置 --> 远程文件配置--> 网络参数 -export default function Page() { - - const [form] = Form.useForm(); - - const onFinish = (values: any) => { - remoteFileConfiSendData({ - jsonStr: JSON.stringify(values), - type: 2 - }).then( (res) => { - if (res?.result == "success") { - message.success('文件提交成功'); - form.resetFields(); - }else { - message.error(res?.errorMsg); - } - }) - }; - - const clearInfo = () => { - remoteFileConfigClean({type: 2}).then(res => { - if (res?.result == "success") { - message.success('清除信息成功'); - }else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- -
配置隔离器网络运行参数
-
-
-
- - - - - - - - - -
-
- form.submit()} /> - clearInfo()} /> -
-
-
-
- ); -} diff --git a/src/pages/GLQ/WebGLQ/SecurityPolicy/index.tsx b/src/pages/GLQ/WebGLQ/SecurityPolicy/index.tsx deleted file mode 100644 index c799736..0000000 --- a/src/pages/GLQ/WebGLQ/SecurityPolicy/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import { ConfigProvider, Form, Input, Table, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useState } from 'react'; - -import { rowClassName } from '@/utils'; -import { getTextSecretInfo, remoteFileConfiSendData } from '@/services/gql'; -import { validateIPAddress } from '@/utils/validate'; - -// 网络GLQ配置 --> 远程文件配置--> 安全策略 -export default function Page() { - const [form] = Form.useForm(); - const [tableData, setTableData] = useState([]); - - useEffect(() => { - form.setFieldsValue({ip: '114.114.114.114'}) - }, []) - - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '单位名称', dataIndex: '单位名称', key: '单位名称', align: 'center' }, - { title: '设备名称', dataIndex: '设备名称', key: '设备名称', align: 'center' }, - { title: '设备IP', dataIndex: '设备ip', key: '设备ip', align: 'center' }, - { title: '电话号码', dataIndex: '电话号码', key: '电话号码', align: 'center' }, - { title: '设备属性', dataIndex: '设备属性', key: '设备属性', align: 'center' }, - { title: '设备型号', dataIndex: '设备型号', key: '设备型号', align: 'center' }, - ] - - const onFinish = (values: any) => { - getTextSecretInfo(values).then(res => { - if (res?.result == "success") { - setTableData(res?.data[0].jsonStr) - message.success('获取成功'); - } else { - message.error(res?.errorMsg); - } - }) - }; - - const sending = () => { - if (tableData.length == 0) { - message.info('请获取普密信息后再发送数据'); - return - } - - remoteFileConfiSendData({ - jsonStr: JSON.stringify(tableData), - type: 3 - }).then( (res) => { - if (res?.result == "success") { - message.success('发送数据成功'); - }else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- -
配置隔离器与外网设备通信白名单列表
-
-
- - 0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - - - - - form.submit()} /> - - -
尚未连接普密对外服务器!
- -
- sending()} /> -
- - - - ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/SecurityPolicyInfo/index.tsx b/src/pages/GLQ/WebGLQ/SecurityPolicyInfo/index.tsx deleted file mode 100644 index dd8dcf5..0000000 --- a/src/pages/GLQ/WebGLQ/SecurityPolicyInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取安全策略 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 3}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取安全策略`, - `正在获取安全策略中...`, - `获取安全策略完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端报文过滤策略配置情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/ServiceList/index.tsx b/src/pages/GLQ/WebGLQ/ServiceList/index.tsx deleted file mode 100644 index cd746e9..0000000 --- a/src/pages/GLQ/WebGLQ/ServiceList/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ - -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import { ConfigProvider, Form, Input, Table, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useState } from 'react'; - -import { rowClassName } from '@/utils'; -import { validateIPAddress, validatePort } from '@/utils/validate'; -import { remoteFileConfiSendData, remoteFileConfigClean } from '@/services/gql'; - -// 网络GLQ配置 --> 远程文件配置--> 服务列表 -export default function Page() { - const [form] = Form.useForm(); - const [tableData, setTableData] = useState([]); - - const onFinish = (values: any) => { - values.rowKey = Math.random(); - setTableData([...tableData, values]) - }; - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '服务名称', dataIndex: 'serviceName', key: 'serviceName', align: 'center' }, - { title: '服务器IP', dataIndex: 'serviceIP', key: 'serviceIP', align: 'center' }, - { title: '服务端口', dataIndex: 'servicePort', key: 'servicePort', align: 'center' }, - ] - - const sending = () => { - if(tableData.length == 0) { - message.info('请添加数据'); - return - } - - let serviceList = tableData.map(({serviceName, serviceIP, servicePort}: any) => { - return {serviceName, serviceIP, servicePort} - }) - remoteFileConfiSendData({ - jsonStr: JSON.stringify({ serviceList: serviceList }), - type: 1 - }).then( (res) => { - if (res?.result == "success") { - message.success('发送数据成功'); - form.resetFields(); - }else { - message.error(res?.errorMsg); - } - }) - } - - const clearInfo = () => { - remoteFileConfigClean({type: 1}).then(res => { - if (res?.result == "success") { - message.success('清除信息成功'); - }else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- -
配置隔离器与应用服务器通信参数列表
-
-
- -
- - - - - - - - - - form.submit()} /> - - -
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.rowKey} - rowClassName={rowClassName} - /> - -
- sending()} /> - clearInfo()} /> -
- - - - ); -} - diff --git a/src/pages/GLQ/WebGLQ/ServiceListInfo/index.tsx b/src/pages/GLQ/WebGLQ/ServiceListInfo/index.tsx deleted file mode 100644 index ef3fa7f..0000000 --- a/src/pages/GLQ/WebGLQ/ServiceListInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取服务列表 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 1}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取服务列表`, - `正在获取服务列表中...`, - `获取服务列表完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
获取被控端服务列表情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/VpnPolicy/index.less b/src/pages/GLQ/WebGLQ/VpnPolicy/index.less deleted file mode 100644 index c256ad8..0000000 --- a/src/pages/GLQ/WebGLQ/VpnPolicy/index.less +++ /dev/null @@ -1,6 +0,0 @@ -.params_warp1 { - [class~='ant-form-item-label'] { - width: 110px; - justify-content: flex-end; - } -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/VpnPolicy/index.tsx b/src/pages/GLQ/WebGLQ/VpnPolicy/index.tsx deleted file mode 100644 index 5455de5..0000000 --- a/src/pages/GLQ/WebGLQ/VpnPolicy/index.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import styles1 from './index.less'; -import { Form, Input, Select, Table, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useState } from 'react'; -import { rowClassName } from '@/utils'; -import { validateIPAddress } from '@/utils/validate'; -import { remoteFileConfiSendData, remoteFileConfigClean } from '@/services/gql'; - -// 网络GLQ配置 --> 远程文件配置--> VPN策略 -export default function Page() { - - const [form] = Form.useForm(); - const [tableData, setTableData] = useState([]); - const [activeList, setActiveList] = useState([]); - - useEffect(() => { - form.setFieldsValue({ - unitName: '', - deviceName: '', - deviceIp: '', - deviceId: '', - messageComm: '加密通信', - pingComm: '允许互PING', - }) - }, []) - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '单位名称', dataIndex: 'unitName', key: 'unitName', align: 'center' }, - { title: '设备名称', dataIndex: 'deviceName', key: 'deviceName', align: 'center' }, - { title: '设备IP', dataIndex: 'deviceIp', key: 'deviceIp', align: 'center' }, - { title: '设备ID', dataIndex: 'deviceId', key: 'deviceId', align: 'center' }, - { title: '报文通信策略', dataIndex: 'messageComm', key: 'messageComm', align: 'center' }, - { title: 'PING通信策略', dataIndex: 'pingComm', key: 'pingComm', align: 'center' }, - ] - - const onFinish = (values: any) => { - values.rowKey = Math.floor(Math.random() * 10000); - setTableData([...tableData, values]) - }; - - const sending = () => { - if (tableData.length == 0) { - message.info('请添加数据'); - return - }else if (activeList.length == 0) { - message.info('请勾选需要发送的数据'); - return - } - - let serviceList = activeList.map(({ unitName, deviceName, deviceIp, deviceId, messageComm, pingComm }: any) => { - return { unitName, deviceName, deviceIp, deviceId, messageComm, pingComm } - }) - remoteFileConfiSendData({ - jsonStr: JSON.stringify({ serviceList: serviceList }), - type: 5 - }).then((res) => { - if (res?.result == "success") { - message.success('发送数据成功'); - form.resetFields(); - } else { - message.error(res?.errorMsg); - } - }) - } - - const clearInfo = () => { - remoteFileConfigClean({ type: 5 }).then(res => { - if (res?.result == "success") { - message.success('清除信息成功'); - } else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- -
配置本地Ⅰ型隔离器与对端Ⅰ型隔离器之间数据通信的VPN策略
-
-
-
- - - - - - -
- - - - - - -
-
- - { }} - options={[ - { label: '允许互PING', value: '允许互PING' }, - { label: '阻断互PING', value: '阻断互PING' } - ]} - /> - - form.submit()} /> -
- - -
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.rowKey} - rowClassName={rowClassName} - rowSelection={{ - onChange: (selectedRowKeys: any, selectedRows: any) => { - setActiveList(selectedRows) - } - }} - /> - -
- sending()} /> - clearInfo()} /> -
- - - - ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebGLQ/VpnPolicyInfo/index.tsx b/src/pages/GLQ/WebGLQ/VpnPolicyInfo/index.tsx deleted file mode 100644 index 472a4c4..0000000 --- a/src/pages/GLQ/WebGLQ/VpnPolicyInfo/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { getGlqInfo } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络GQL管理 --> 获取VPN策略 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - getGlqInfo({type: 4}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `获取VPN策略`, - `正在获取VPN策略中...`, - `获取VPN策略完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
被控端VPN过滤策略配置情况
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/WebMMJ/KeyDestruction/index.tsx b/src/pages/GLQ/WebMMJ/KeyDestruction/index.tsx deleted file mode 100644 index 0ff6d1b..0000000 --- a/src/pages/GLQ/WebMMJ/KeyDestruction/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { secretInit_sendCommand } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; - -// 网络MMJ管理 --> 密钥销毁 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const sending = () => { - - secretInit_sendCommand({type: 1}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `执行密码销毁`, - `正在密码销毁中...`, - `密码销毁完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
销毁被控端设备的安装密钥和分发密钥
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- sending()} /> - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} diff --git a/src/pages/GLQ/WebMMJ/KeyRemoteKill/index.tsx b/src/pages/GLQ/WebMMJ/KeyRemoteKill/index.tsx deleted file mode 100644 index 198b3d2..0000000 --- a/src/pages/GLQ/WebMMJ/KeyRemoteKill/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { secretInit_sendCommand } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; - -// 网络MMJ管理 --> 密码遥毙 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const sending = () => { - - secretInit_sendCommand({type: 2}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `执行密码遥毙`, - `正在密码遥毙中...`, - `密码遥毙完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
销毁被控端设备的初装密钥、安装密钥及分发密钥
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- sending()} /> - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} diff --git a/src/pages/GLQ/WebMMJ/MmjInitInstall/index.less b/src/pages/GLQ/WebMMJ/MmjInitInstall/index.less deleted file mode 100644 index 3cb21bf..0000000 --- a/src/pages/GLQ/WebMMJ/MmjInitInstall/index.less +++ /dev/null @@ -1,6 +0,0 @@ -.params_warp1 { - [class~='ant-form-item-label'] { - width: 100px; - justify-content: flex-end; - } -} \ No newline at end of file diff --git a/src/pages/GLQ/WebMMJ/MmjInitInstall/index.tsx b/src/pages/GLQ/WebMMJ/MmjInitInstall/index.tsx deleted file mode 100644 index 198b7c1..0000000 --- a/src/pages/GLQ/WebMMJ/MmjInitInstall/index.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import styles1 from './index.less'; -import { Form, Input, Upload, UploadProps, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { secretInit_cleanInfo, secretInit_loadData, secretInit_sendData } from '@/services/gql'; -import { useEffect, useState, } from 'react'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; - -// 网络MMJ管理 --> MMJ初装 -export default function Page() { - const [dataLoading, setDataLoading] = useState(false); - const [form] = Form.useForm(); - const [visibility, setVisibility] = useState(false); - - const onFinish = (values: any) => { - console.log('表单提交:', values); - }; - - useEffect(() => { - let layoutInfo: any = localStorage.getItem('MMJInit'); - if (layoutInfo) { - form.setFieldsValue({ ...JSON.parse(layoutInfo) }) - setDataLoading(true); - } - }, []) - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - const formData = new FormData(); - formData.append('file', file); - secretInit_loadData(formData).then((res) => { - if (res?.result == "success" && res?.data.length > 0) { - message.success('加载数据成功'); - form.setFieldsValue({ ...res?.data[0] }) - localStorage.setItem('MMJInit', JSON.stringify(res?.data[0])); - setDataLoading(true); - } else { - message.error(res?.errorMsg); - } - }) - } - }; - - const goData = () => { - if (!dataLoading) { - message.info('请先加载数据'); - return - } - secretInit_sendData({}).then((res) => { - if (res?.result == "success") { - message.success('发送数据成功'); - } else { - message.error(res?.errorMsg); - } - }) - } - - const clearInfo = () => { - secretInit_cleanInfo({}).then((res) => { - if (res?.result == "success") { - message.success('清空信息成功'); - form.resetFields() - localStorage.removeItem('MMJInit'); - } else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- -
发送密码机初装数据到被控端设备
-
-
-
- - - - - - - - - - -
- - - - { - goData() - }} /> - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - clearInfo() - setVisibility(false) - }}> -
确定清空信息吗?
-
-
- ); -} diff --git a/src/pages/GLQ/WebMMJ/MmjRemoteKill/index.tsx b/src/pages/GLQ/WebMMJ/MmjRemoteKill/index.tsx deleted file mode 100644 index 336e892..0000000 --- a/src/pages/GLQ/WebMMJ/MmjRemoteKill/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { secretInit_sendCommand } from '@/services/gql'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; - -// 网络MMJ管理 --> 密码机遥毙 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const sending = () => { - - secretInit_sendCommand({type: 2}).then((res) => { - if (res?.result == "success") { - setLines([ - ...lines, - '发送命令成功', - `执行密码机遥毙`, - `正在密码机遥毙中...`, - `密码机遥毙完成` - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
销毁被控端设备的二次构造数据及全部密钥
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
注意:执行此操作后,设备需返厂修复!
-
- sending()} /> - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} diff --git a/src/pages/GLQ/WebMMJ/StatusQuery/index.tsx b/src/pages/GLQ/WebMMJ/StatusQuery/index.tsx deleted file mode 100644 index f77562c..0000000 --- a/src/pages/GLQ/WebMMJ/StatusQuery/index.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../index.less'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect, useRef, useState } from 'react'; -import { secretInit_getStatus } from '@/services/gql'; -import { message } from 'antd'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import SaveAs from '@/components/SaveAs'; - -// 网络MMJ管理 --> 状态查询 -export default function Page() { - const [lines, setLines] = useState([]); - const [currentLineIndex, setCurrentLineIndex] = useState(0); - const [visibility, setVisibility] = useState(false); - const outputRef: any = useRef(null); - - useEffect(() => { - const timer = setInterval(() => { - if (currentLineIndex < lines.length) { - setCurrentLineIndex((prevIndex) => prevIndex + 1); - } else { - clearInterval(timer); - } - }, 300); - - if (outputRef.current.scrollHeight > 330) { - outputRef.current.scrollTop = outputRef.current.scrollHeight; - } - - return () => { - clearInterval(timer); // 组件卸载时清除定时器 - }; - }, [currentLineIndex, lines.length]); - - const statusQuery = () => { - secretInit_getStatus({}).then((res) => { - if (res?.result == "success") { - let data = res?.data[0]; - setLines([ - ...lines, - `算法参数--${data?.algorithmParam}`, - `创建时间--${data?.createTime}`, - `导入文件名--${data?.fileName}`, - `未遥毙--${data?.mmjKill}`, - `参数自检码--${data?.paramCode}`, - `初装秘钥--${data?.passwordInit}`, - `秘钥数据状态--${data?.secretDataStatus}`, - `秘钥机未遥毙--${data?.secretKill}`, - `秘钥未销毁--${data?.secretRain}`, - `更新时间--${data?.updateTime}`, - ]) - } else { - setLines([`${res?.errorMsg}`]) - } - }) - } - - return ( -
- -
隔离器所用密钥数据信息
-
-
-
-
- {lines.slice(0, currentLineIndex).map((line: string, index: number) => ( -

{line}

- ))} -
-
-
- { statusQuery() }} /> - - setVisibility(true)} /> -
-
-
- - setVisibility(false)} - onOk={() => { - setLines([]); - setCurrentLineIndex(0); - setVisibility(false); - }}> -
确定清空信息吗?
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/GLQ/index.less b/src/pages/GLQ/index.less deleted file mode 100644 index ab1a135..0000000 --- a/src/pages/GLQ/index.less +++ /dev/null @@ -1,32 +0,0 @@ -.params_warp { - position: relative; - padding: 20px; -} - -.btn_warp { - position: absolute; - bottom: 20px; - right: 20px; - display: flex; - align-items: flex-end; - justify-content: flex-end; -} - -.erroInfo { - position: absolute; - bottom: 20px; - left: 20px; - height: 32px; - line-height: 32px; - color: red; -} - -.html_con { - background: #FFFFFF; - box-shadow: inset 1px 1px 3px 0px rgba(35, 44, 48, 0.22); - border-radius: 1px; - border: 1px solid #E3E3E3; - width: 100%; - height: 330px; - overflow-y: scroll; -} \ No newline at end of file diff --git a/src/pages/InitialSystem/DeviceInstall/index.less b/src/pages/InitialSystem/DeviceInstall/index.less deleted file mode 100644 index 992ce60..0000000 --- a/src/pages/InitialSystem/DeviceInstall/index.less +++ /dev/null @@ -1,32 +0,0 @@ -.con_warp { - width: calc(100% - 40px); - height: calc(100% - 40px); - background-color: #fff; - font-size: 14px; - margin: 20px; - - .title1 { - font-size: 18px; - font-weight: 600; - color: #191919; - } - - .title2 { - font-size: 14px; - font-weight: 600; - color: #333333; - margin: 20px 0 30px 0; - } - - .flex { - display: flex; - align-items: center; - margin-bottom: 20px; - - div:nth-child(1) { - width: 80px; - text-align: right; - margin-right: 16px; - } - } -} \ No newline at end of file diff --git a/src/pages/InitialSystem/DeviceInstall/index.tsx b/src/pages/InitialSystem/DeviceInstall/index.tsx deleted file mode 100644 index 19205b8..0000000 --- a/src/pages/InitialSystem/DeviceInstall/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -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'; - -interface PageProps { -} - -const DeviceInstall: FC = ({ }) => { - const urlParams = useParams(); - const [dataLoading, setDataLoading] = useState(false); - const [fileInfo, setFileInfo] = useState({ - "secret": "", - "algorithm": "", - "selfInspectionCode": "", - "deviceName": "", - "initNumber": "", - "versionNumber": "", - "localNum": "", - "firmwareVersion": "", - "deviceStatus": "", - "fileName": null, - "dataInstalled": null - }); - - useEffect(() => { - let layoutInfo: any = localStorage.getItem('deviceInit'); - if (layoutInfo) { - setFileInfo(JSON.parse(layoutInfo)) - setDataLoading(true); - } - }, []) - - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - let str = sysType[urlParams?.fileType] + fileStr[urlParams?.fileType] - const formData = new FormData(); - formData.append('file', file); - formData.append('sysType ', 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])); - setDataLoading(true); - } else { - message.error(res?.errorMsg); - } - }) - } - }; - - return ( -
-
-
操作说明
-
请选取初装数据文件夹下的任一文件进行数据加载。点击“数据安装”对密码机进行初装。
-
-
初装密钥
- -
-
-
算法参数
- -
-
-
参数自检码
- -
- -
- - - - { - if (!dataLoading) { - message.info('请先数据加载'); - return - } - - deviceInstall_deviceInstall({}).then((res) => { - if (res?.result == "success") { - message.success('数据安装成功') - } else { - message.error(res?.errorMsg); - } - }) - }} /> -
- -
出装盘信息
-
设备名称:{fileInfo.deviceName || '--'}
-
-
初装盘号:{fileInfo.initNumber || '--'}
-
版本号:{fileInfo.versionNumber || '--'}
-
-
-
- ) -} - -export default DeviceInstall \ No newline at end of file diff --git a/src/pages/InitialSystem/PowerOnAuth/index.less b/src/pages/InitialSystem/PowerOnAuth/index.less deleted file mode 100644 index 3431023..0000000 --- a/src/pages/InitialSystem/PowerOnAuth/index.less +++ /dev/null @@ -1,26 +0,0 @@ -.con_warp { - width: calc(100% - 40px); - height: calc(100% - 40px); - background-color: #fff; - font-size: 14px; - margin: 20px; - - .title1 { - font-size: 18px; - font-weight: 600; - color: #191919; - } - - .title2 { - font-size: 14px; - font-weight: 600; - color: #333333; - margin: 20px 0 30px 0; - } - - .flex { - display: flex; - align-items: center; - margin-top: 30px; - } -} \ No newline at end of file diff --git a/src/pages/InitialSystem/PowerOnAuth/index.tsx b/src/pages/InitialSystem/PowerOnAuth/index.tsx deleted file mode 100644 index b76ce19..0000000 --- a/src/pages/InitialSystem/PowerOnAuth/index.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Modal, message } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { college_table_query } from '@/services/api'; - -interface PageProps { -} - -const PowerOnAuth: FC = ({ }) => { - const [visibility, setVisibility] = useState(false); - const [deviceInfo, setDeviceInfo] = useState({ - "createTime": "", - "updateTime": "", - "secret": "", - "algorithm": "", - "selfInspectionCode": "", - "deviceName": "", - "initNumber": "", - "versionNumber": "", - "localNum": "", - "firmwareVersion": "", - "deviceStatus": "", - "fileName": null, - "dataInstalled": "" - }); - const [isDeviceInit, setIsDeviceInit] = useState(false); - - useEffect(() => { - let deviceInit = localStorage.getItem('deviceInit'); - if (deviceInit) { - 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)) { - setVisibility(true); - localStorage.setItem('powerOn', JSON.stringify({ powerOn: true })); - } - setDeviceInfo(res?.data[0]); - } else { - message.error(res?.errorMsg); - } - }) - }else { - setVisibility(true); - } - }, []) - - return ( -
-
-
设备状态
-
本机编号:{deviceInfo.deviceName || '--'}
-
-
开机状态:{deviceInfo.deviceStatus || '--'}
-
初装盘号:{deviceInfo.initNumber || '--'}
-
-
-
固件版本:{deviceInfo.firmwareVersion || '--'}
-
初装时间:{deviceInfo.createTime || '--'}
-
- -
密钥状态
-
-
系统间通信
-
-
第一区 {'无密钥'}
-
第二区 {'无密钥'}
-
-
-
-
VPN间通信
-
-
第一区 {'无密钥'}
-
第二区 {'无密钥'}
-
-
-
-
与专核设备
-
-
第一区 {'无密钥'}
-
第二区 {'无密钥'}
-
-
-
-
与普密设备
-
-
第一区 {'无密钥'}
-
第二区 {'无密钥'}
-
-
-
- - - {/* 开机认证 */} - setVisibility(false)} - footer={null} - maskClosable={false} - > -
- {isDeviceInit ? '开机认证成功!' :'开机认证失败,请先完成设备初装!'} -
- -
- setVisibility(false)} /> -
-
-
- ) -} - -export default PowerOnAuth \ No newline at end of file diff --git a/src/pages/InitialSystem/index.less b/src/pages/InitialSystem/index.less deleted file mode 100644 index d277b01..0000000 --- a/src/pages/InitialSystem/index.less +++ /dev/null @@ -1,120 +0,0 @@ -.initial_warp { - width: 100vw; - min-height: 100vh; - - .header_warp { - height: 56px; - background: linear-gradient(180deg, #6DCFEA 0%, #3BA1CF 100%); - box-shadow: inset 0px 2px 3px 0px rgba(255, 255, 255, 0.5); - - display: flex; - align-items: center; - justify-content: space-between; - - font-size: 16px; - font-weight: 600; - color: #FFFFFF; - - letter-spacing: 1px; - } - - .main_warp { - width: 100%; - height: calc(100vh - 58px); - min-height: 600px; - display: flex; - } - - .nav_title { - height: 32px; - background: #3EA4D1; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - color: #FFFFFF; - font-weight: bold; - } - - .left_menu { - width: 260px; - min-width: 260px; - height: 100%; - min-height: calc(100vh - 58px); - background: #fff; - border-right: 1px solid #D8D8D8; - overflow: hidden; - overflow-y: auto; - user-select: none; - } - - .right_warp { - height: calc(100% - 58px); - min-height: calc(100vh - 58px); - width: calc(100vw - 261px); - background: #F1F1F1; - overflow: hidden; - overflow-y: auto; - padding: 0; - } - -} - -.start_warp { - position: relative; - width: calc(100% - 40px); - height: calc(100% - 40px); - background-color: #fff; - margin: 20px; - - display: flex; - align-items: center; - justify-content: center; - - .start_title { - font-size: 48px; - font-weight: 600; - color: #191919; - margin-bottom: 60px; - letter-spacing: 1px; - } - - .introduce { - position: absolute; - right: 40px; - bottom: 40px; - font-size: 16px; - font-weight: 500; - color: #333333; - line-height: 26px; - - div:nth-child(2) { - margin: 10px 0; - } - } -} - - -.item1 { - display: flex; - align-items: center; - justify-content: center; - flex-wrap: wrap; - margin: 20px 0; - cursor: pointer; -} - -.item1_img { - width: 60px; - height: 60px; - background-color: saddlebrown; -} - -.item1_name { - width: 100%; - text-align: center; - font-size: 14px; - font-weight: 400; - color: #1A374A; - margin-top: 6px; -} \ No newline at end of file diff --git a/src/pages/InitialSystem/index.tsx b/src/pages/InitialSystem/index.tsx deleted file mode 100644 index 7249bf2..0000000 --- a/src/pages/InitialSystem/index.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { FC, useEffect, useState } from 'react'; -import { history, useLocation, useParams } from 'umi'; -import styles from './index.less'; -import DeviceInstall from './DeviceInstall'; -import PowerOnAuth from './PowerOnAuth'; -import { LeftOutlined } from '@ant-design/icons'; -import { Modal } from 'antd'; - -interface PageProps { } - -const InitialSystem: FC = ({ }) => { - const [activeItem, setActiveItem] = useState(null) - const location = useLocation(); - const queryParams = new URLSearchParams(location.search); - const type = queryParams.get('type'); - const count = queryParams.get('count'); - const [visibility, setVisibility] = useState(true); - - const urlParams = useParams(); - let installExe = localStorage.getItem(`${urlParams?.fileType}`); - let info = installExe ? JSON.parse(installExe) : null; - - const MenuList: any = { - 'admin': [ - { name: '算法加载', dom:
暂无内容
, img: '' }, - { name: '设备初装', dom: , img: '' }, - { name: '开机认证', dom: , img: '' }, - { name: '状态查询', dom:
暂无内容
, img: '' }, - { name: '安全销毁', dom:
暂无内容
, img: '' }, - ], - 'test': [ - { name: '硬件检测', dom:
暂无内容
, img: '' }, - { name: '传输加解密', dom:
暂无内容
, img: '' }, - { name: '存储加解密', dom:
暂无内容
, img: '' }, - { name: '认证/验证', dom:
暂无内容
, img: '' }, - { name: '非对称算法', dom:
暂无内容
, img: '' }, - ] - } - - useEffect(() => { - if (type && count) { - setActiveItem(MenuList[type][count]) - } else { - setActiveItem(null) - } - }, [location.search]) - - const itemDom = (type: string, item: any, index: number) => { - return ( -
{ - setActiveItem(item) - history.push(`/initialSystem/${urlParams?.fileType}?type=${type}&count=${index}`) - }}> -
-
- {item.name} -
-
- ) - } - - return ( -
- {info.installExe[14].select ? <> - {/* 头部 */} -
-
专用核心密码机管理软件
-
-
- {/* 底部 */} -
- {/* 左侧菜单 */} -
- -
密码机管理
- {MenuList['admin'].map((item: any, index: number) => itemDom('admin', item, index))} - -
密码机测试
- {MenuList['test'].map((item: any, index: number) => itemDom('test', item, index))} - -
- {/* 右侧内容 */} -
- { - activeItem ? activeItem.dom : -
-
全军一体化对称密码管理系统
-
-
专用核心密码机管理系统
-
软件当前版本:2.0.3
-
总参谋第XXX研究所研制
-
-
- } -
-
- : -
- 缺少驱动,请先安装所需的驱动程序! -
-
- - } - - -
- ) -} - -export default InitialSystem \ No newline at end of file diff --git a/src/pages/InstallExe/exeDialog/CodeDriver.tsx b/src/pages/InstallExe/exeDialog/CodeDriver.tsx deleted file mode 100644 index 0f972fb..0000000 --- a/src/pages/InstallExe/exeDialog/CodeDriver.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const CodeDriver: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 3) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - const installSuccess = () => { - setInstallExe(14,'一体化密码机驱动安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('一体化密码机驱动安装程序') - }}>
- - {[1, 2].includes(active) &&
一体化密码机驱动 安装程序
} - {![1, 2].includes(active) &&
一体化密码机驱动 安装程序
} - - {active == 1 &&
一体化密码机驱动安装程序
} - {active == 2 &&
一体化密码机驱动
} - {active == 4 &&
一体化密码机驱动
} - - {[1, 2].includes(active) &&
setValue()}> -
} - - {active == 3 &&
- -
} - - {active == 4 &&
installSuccess()}> -
} -
-
- } - -}; - -export default CodeDriver; diff --git a/src/pages/InstallExe/exeDialog/CodeManage.tsx b/src/pages/InstallExe/exeDialog/CodeManage.tsx deleted file mode 100644 index 6c4220f..0000000 --- a/src/pages/InstallExe/exeDialog/CodeManage.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; -import { countType } from '@/utils'; -import { useParams } from 'umi'; -import DEV from '@/utils/env/dev'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const CodeManage: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - const urlParams = useParams(); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 3) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 在指定的目录下安装快捷方式 - 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}/initialSystem/${urlParams?.fileType}` - }), - }); - const data = await response.text(); - setInstallExe(13, data) - - onCancel() - } catch (error) { - message.error(error); // 处理请求错误 - } - } - - return <> - { - open && -
-
- - -
{ - onCancel('一体化密码机管理软件') - }}>
- - {[1, 2].includes(active) &&
一体化密码机管理软件 安装程序
} - {![1, 2].includes(active) &&
一体化密码机管理软件 安装程序
} - {active == 1 &&
一体化密码机管理软件安装程序
} - {active == 2 &&
一体化密码机管理软件
} - {active == 4 &&
一体化密码机管理软件
} - - {[1, 2].includes(active) &&
setValue()}> -
} - - {active == 3 &&
- -
} - - {active == 4 &&
installSuccess()}> -
} -
-
- } - -}; - -export default CodeManage; diff --git a/src/pages/InstallExe/exeDialog/CoreArea.tsx b/src/pages/InstallExe/exeDialog/CoreArea.tsx deleted file mode 100644 index ea31479..0000000 --- a/src/pages/InstallExe/exeDialog/CoreArea.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; -import { countType, sysType } from '@/utils'; -import { useParams } from 'umi'; -import DEV from '@/utils/env/dev'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const CoreArea: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - const [userName, setUserName] = useState('root'); - const [password, setPassword] = useState(''); - - const [serverIp, setServerIp] = useState('127.0.0.1'); - const [serverPort, setServerPort] = useState('2222'); - const [localPort, setLocalPort] = useState('11110'); - - const urlParams = useParams(); - - useEffect(() => { - if (open) { - setActive(1) - setPassword('') - setServerIp('127.0.0.1') - } - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 4) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 在指定的目录下安装快捷方式 - 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}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + '核心区')}` - }), - }); - const data = await response.text(); - setInstallExe(9, data) - onCancel() - } catch (error) { - message.error(error); // 处理请求错误 - } - } - - const verifyPassword = () => { - if (userName.trim().length == 0) { - message.error('请输入用户名!') - return true; - } - - if (password.trim().length == 0) { - message.error('请输入密码!'); - return true; - } - - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let info = JSON.parse(sysName) - if (password !== info.GBasePassword) { - message.error('密码错误!'); - return true; - } - } - } - - return <> - { - open && -
-
- - -
{ - onCancel('核心区安装程序') - }}>
- - {[1, 2, 3].includes(active) &&
核心区客户端 安装程序
} - {![1, 2, 3].includes(active) &&
核心区客户端 安装程序
} - - {active == 1 &&
核心区客户端安装程序
} - {active == 2 && <> -
填写GBase账号信息
-
用户名
-
密码
- { setUserName(e.target.value) }} className={styles.input1} style={{ top: 121, left: 59, width: 325 }} /> - { setPassword(e.target.value) }} className={styles.input2} style={{ top: 171, left: 59, width: 325 }} /> - } - {active == 3 &&
核心区客户端
} - {active == 5 &&
核心区客户端
} - - {active == 6 && <> -
填写GBase账号信息
-
服务器的ip地址
-
服务器端口
-
本地端口
- { setServerIp(e.target.value) }} className={styles.input1} style={{ top: 121, left: 109, width: 325 }} /> - { setServerPort(e.target.value) }} className={styles.input2} style={{ top: 171, left: 109, width: 325 }} /> - { setLocalPort(e.target.value) }} className={styles.input2} style={{ top: 221, left: 109, width: 325 }} /> -
确定
-
取消
-
应用
- } - - {[1, 2, 3].includes(active) &&
{ - if (active == 2 && verifyPassword()) return - setValue() - }}> -
} - - {active == 4 &&
- -
} - - {[5, 6].includes(active) &&
{ - active == 5 ? setValue() : installSuccess() - }}> -
} -
-
- } - -}; - -export default CoreArea; diff --git a/src/pages/InstallExe/exeDialog/DeviceDriver.tsx b/src/pages/InstallExe/exeDialog/DeviceDriver.tsx deleted file mode 100644 index e6c56ea..0000000 --- a/src/pages/InstallExe/exeDialog/DeviceDriver.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const CodeDriver: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 3) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - const installSuccess = () => { - setInstallExe(12, '密码资源输入输出设备驱动安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('密码资源输入输出设备驱动') - }}>
- - {[1, 2].includes(active) &&
密码资源输入输出设备驱动 安装程序
} - {![1, 2].includes(active) &&
密码资源输入输出设备驱动 安装程序
} - - {active == 1 &&
密码资源输入输出设备驱动安装程序
} - {active == 2 &&
密码资源输入输出设备驱动
} - {active == 4 &&
密码资源输入输出设备驱动
} - - {[1, 2].includes(active) &&
setValue()}> -
} - - {active == 3 &&
- -
} - - {active == 4 &&
installSuccess()}> -
} -
-
- } - -}; - -export default CodeDriver; diff --git a/src/pages/InstallExe/exeDialog/DutyArea.tsx b/src/pages/InstallExe/exeDialog/DutyArea.tsx deleted file mode 100644 index 7eb771b..0000000 --- a/src/pages/InstallExe/exeDialog/DutyArea.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; -import { countType, sysType } from '@/utils'; -import { useParams } from 'umi'; -import DEV from '@/utils/env/dev'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const DutyArea: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - const [userName, setUserName] = useState('root'); - const [password, setPassword] = useState(''); - - const [serverIp, setServerIp] = useState('127.0.0.1'); - const [serverPort, setServerPort] = useState('2222'); - const [localPort, setLocalPort] = useState('11110'); - - const urlParams = useParams(); - - useEffect(() => { - if (open) { - setActive(1) - setPassword('') - setServerIp('127.0.0.1') - } - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 4) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 在指定的目录下安装快捷方式 - 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}/coreSystemEntrance/${urlParams?.fileType}?sysType=${encodeURIComponent(sysType[urlParams?.fileType] + '执勤区')}` - }), - }); - const data = await response.text(); - setInstallExe(10, data) - onCancel() - } catch (error) { - message.error(error); // 处理请求错误 - } - } - - const verifyPassword = () => { - if (userName.trim().length == 0) { - message.error('请输入用户名!') - return true; - } - - if (password.trim().length == 0) { - message.error('请输入密码!'); - return true; - } - - if (false) { - message.error('用户名或密码错误!'); - return true; - } - } - - return <> - { - open && -
-
- - -
{ - onCancel('执勤区安装程序') - }}>
- - {[1, 2, 3].includes(active) &&
执勤区客户端 安装程序
} - {![1, 2, 3].includes(active) &&
执勤区客户端 安装程序
} - - {active == 1 &&
执勤区客户端安装程序
} - {active == 2 && <> -
填写GBase账号信息
-
用户名
-
密码
- { setUserName(e.target.value) }} className={styles.input1} style={{top: 121, left: 59, width: 325}}/> - { setPassword(e.target.value) }} className={styles.input2} style={{top: 171, left: 59, width: 325}}/> - } - {active == 3 &&
执勤区客户端
} - {active == 5 &&
执勤区客户端
} - - {active == 6 && <> -
填写GBase账号信息
-
服务器的ip地址
-
服务器端口
-
本地端口
- { setServerIp(e.target.value) }} className={styles.input1} style={{top: 121, left: 109, width: 325}}/> - { setServerPort(e.target.value) }} className={styles.input2} style={{top: 171, left: 109, width: 325}}/> - { setLocalPort(e.target.value) }} className={styles.input2} style={{top: 221, left: 109, width: 325}}/> -
确定
-
取消
-
应用
- } - - {[1, 2, 3].includes(active) &&
{ - if (active == 2 && verifyPassword()) return - setValue() - }}> -
} - - {active == 4 &&
- -
} - - {[5, 6].includes(active) &&
{ - active == 5 ? setValue() : installSuccess() - }}> -
} -
-
- } - -}; - -export default DutyArea; diff --git a/src/pages/InstallExe/exeDialog/FlashPlayer.tsx b/src/pages/InstallExe/exeDialog/FlashPlayer.tsx deleted file mode 100644 index d0e7584..0000000 --- a/src/pages/InstallExe/exeDialog/FlashPlayer.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const FlashPlayer: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 2) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(2, 'FlashPlayer安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('FlashPlayer9') - }}>
- - {active != 2 &&
{ - active == 1 ? setValue() : installSuccess() - }}> -
} - - {active == 2 && - <> -
{percentVal}
-
- -
- } -
-
- } - -}; - -export default FlashPlayer; diff --git a/src/pages/InstallExe/exeDialog/GBase.tsx b/src/pages/InstallExe/exeDialog/GBase.tsx deleted file mode 100644 index 41123a8..0000000 --- a/src/pages/InstallExe/exeDialog/GBase.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; -import { useParams } from 'umi'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const GBase: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const urlParams = useParams(); - const [active, setActive] = useState(1); - const [password, setPassword] = useState(''); - const [confirmPassword, setConfirmPassword] = useState(''); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) { - setActive(1) - setPassword('') - setConfirmPassword('') - } - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 11) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(0, 'Gbase安装成功!') - onCancel() - } - - const verifyPassword = () => { - if (password.trim().length == 0 || confirmPassword.trim().length == 0) { - message.error('请输入密码!') - return true; - } - - if (password != confirmPassword) { - message.error('两次输入的密码不相同!'); - return true; - } - } - - const setGBasePassword = () => { - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let info = JSON.parse(sysName); - info.GBasePassword = password; - localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info)); - } - } - - return <> - { - open && -
-
- - - {active == 1 &&
setValue()}>
} - {(active > 1 && active != 11) &&
{ - if (active == 8 && verifyPassword()) return; - if (active == 8) setGBasePassword(); - if (active == 12) { installSuccess(); return } - setValue() - }}>
} - - {/* 定位元素 */} - {active == 3 &&
-
-
-
下一步(N)
-
} - - {active == 8 &&
- { setPassword(e.target.value) }} className={styles.input1} /> - { setConfirmPassword(e.target.value) }} className={styles.input2} /> -
} - - {active == 11 &&
- -
} - - -
onCancel('GBase')}>
-
-
- } - -}; - -export default GBase; diff --git a/src/pages/InstallExe/exeDialog/HGoogleEarth.tsx b/src/pages/InstallExe/exeDialog/HGoogleEarth.tsx deleted file mode 100644 index 623b242..0000000 --- a/src/pages/InstallExe/exeDialog/HGoogleEarth.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const HGoogleEarth: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - const [showOk, setShowOk] = useState(false); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 2) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setShowOk(true) - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(6, 'HGoogleEarth安装成功!') - onCancel() - } - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - return <> - { - open && -
-
- - -
{ - onCancel('HGoogleEarth') - }}>
- - {active == 1 &&
setValue()}>
} - - {active == 2 && <> - {showOk &&
installSuccess()}>完成
} -
- -
- } -
-
- } - -}; - -export default HGoogleEarth; diff --git a/src/pages/InstallExe/exeDialog/MSXML.tsx b/src/pages/InstallExe/exeDialog/MSXML.tsx deleted file mode 100644 index 40746ef..0000000 --- a/src/pages/InstallExe/exeDialog/MSXML.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const MSXML: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 6) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(3, 'MSXML安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('MSXML4') - }}>
- - {![6, 7].includes(active) &&
setValue()}> -
} - - {active == 6 &&
- -
} - - {active == 7 &&
installSuccess()}> -
} -
-
- } - -}; - -export default MSXML; diff --git a/src/pages/InstallExe/exeDialog/Net.tsx b/src/pages/InstallExe/exeDialog/Net.tsx deleted file mode 100644 index 7dbbdb2..0000000 --- a/src/pages/InstallExe/exeDialog/Net.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const Net: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 3) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(4, 'Net安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('.NET 2.0') - }}>
- - {[1,2].includes(active) &&
setValue()}> -
} - - {active == 3 &&
- -
} - - {active == 4 &&
installSuccess()}> -
} -
-
- } - -}; - -export default Net; diff --git a/src/pages/InstallExe/exeDialog/NetSP1.tsx b/src/pages/InstallExe/exeDialog/NetSP1.tsx deleted file mode 100644 index 69207a7..0000000 --- a/src/pages/InstallExe/exeDialog/NetSP1.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { FC, useEffect, useState } from 'react'; -import styles from './index.less'; -import { Input, Progress, message } from 'antd'; - -interface PageProps { - open: boolean; - onCancel: (name?: string) => void; - setInstallExe: (index: number, text: string) => void; -} - -const NetSP1: FC = ({ - open = false, - onCancel, - setInstallExe -}) => { - const [active, setActive] = useState(1); - const [percentVal, setPercentVal] = useState(0); - - useEffect(() => { - if (open) setActive(1) - }, [open]) - - // 监听是否到安装进度条步骤 - useEffect(() => { - if (active == 3) { - const interval = setInterval(() => { - setPercentVal((val) => { - const randomStep = Math.round(Math.random() * (100 / 10)); - const newPercent = val + randomStep; - - if (newPercent >= 100) { - clearInterval(interval); - setValue() - return 100; - } - - return newPercent; - }); - }, 500); - - return () => clearInterval(interval); - } - }, [active]) - - // 设置安装步骤进度 - const setValue = () => { - setActive((e) => { return e + 1 }) - } - - // 安装完成后 记录安装的信息 - const installSuccess = () => { - setInstallExe(5, 'Net SP1安装成功!') - onCancel() - } - - return <> - { - open && -
-
- - -
{ - onCancel('.NET 2.0 SP1') - }}>
- - {[1,2].includes(active) &&
setValue()}> -
} - - {active == 3 &&
- -
} - - {active == 4 &&
installSuccess()}> -
} -
-
- } - -}; - -export default NetSP1; diff --git a/src/pages/InstallExe/exeDialog/index.less b/src/pages/InstallExe/exeDialog/index.less deleted file mode 100644 index 032cc9f..0000000 --- a/src/pages/InstallExe/exeDialog/index.less +++ /dev/null @@ -1,203 +0,0 @@ -.modalOverlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - background: rgba(0, 0, 0, 0.5); - - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+/Edge */ - user-select: none; /* 标准语法 */ -} - -.modal { - position: relative; - width: 689px; - height: 508px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); - - .a1 { - position: absolute; - bottom: 8px; - left: 385px; - width: 40px; - height: 35px; - cursor: pointer; - } - - .a2 { - position: absolute; - bottom: 8px; - right: 15px; - width: 115px; - height: 35px; - cursor: pointer; - z-index: 99; - } - - .dian { - position: absolute; - bottom: 101px; - right: 324px; - width: 6px; - height: 6px; - border-radius: 50%; - background-color: #fff; - } - - .dian1 { - bottom: 133px; - background-color: #333; - } - - .last { - position: absolute; - bottom: 25px; - right: 40px; - color: #444; - font-weight: bold; - font-size: 14px; - cursor: pointer; - } - - .input1, .input2 { - width: 344px; - height: 28px; - } - - .input1 { - position: absolute; - bottom: 251px; - right: 32px; - } - - .input2 { - position: absolute; - bottom: 208px; - right: 32px; - } - - .progress { - height: 20px; - width: 450px; - position: absolute; - bottom: 20px; - right: 15px; - background-color: #DCDFE6; - display: flex; - align-items: center; - justify-content: center; - } - - .g_e { - position: absolute; - width: 110px; - height: 28px; - bottom: 31px; - right: 155px; - cursor: pointer; - } - - .msx1 { - position: absolute; - width: 95px; - height: 25px; - bottom: 22px; - right: 214px; - cursor: pointer; - } - - .f_p { - position: absolute; - width: 170px; - height: 40px; - bottom: 30px; - right: 27px; - cursor: pointer; - } - - .net { - position: absolute; - width: 74px; - height: 20px; - bottom: 19px; - right: 110px; - cursor: pointer; - } - - .percentValVal { - position: absolute; - width: 100px; - text-align: right; - top: 116px; - right: 95px; - color: rgba(255, 255, 255, .8); - font-size: 13px; - } - - .h_g_e { - position: absolute; - width: 110px; - height: 26px; - color: #000; - background-color: rgba(153, 153, 153, 0.2); - border: 1px solid rgb(153, 153, 153); - display: flex; - align-items: center; - justify-content: center; - bottom: 20px; - right: 38px; - font-size: 13px; - cursor: pointer; - } - - .gbase_close { - position: absolute; - width: 18px; - height: 18px; - top: 3px; - right: 5px; - cursor: pointer; - } -} - - -.title{ - position: absolute; - top: 8px; - left: 25px; - color: #fff; - font-size: 12px; - font-weight: bold; -} -.title1{ - position: absolute; - top: 10px; - left: 25px; - color: #fff; - font-size: 12px; - font-weight: bold; -} -.pic1{ - position: absolute; - top: 41px; - left: 70px; - font-size: 13px; - font-weight: bold; -} -.close{ - width: 25px; - height: 25px; - // background: red; - position: absolute; - top: 0px; - right: 5px; - &:hover{ - cursor: pointer; - } -} \ No newline at end of file diff --git a/src/pages/InstallExe/index.less b/src/pages/InstallExe/index.less deleted file mode 100644 index e5f4bf6..0000000 --- a/src/pages/InstallExe/index.less +++ /dev/null @@ -1,50 +0,0 @@ -.exeInstall { - width: 100vw; - min-height: 100vh; - background: url('../../assets/images/bk_img.png') no-repeat; - background-size: 100% 100%; - - .title_con { - width: 100%; - padding: 2.2% 0; - text-align: center; - font-size: 24px; - font-weight: 600; - color: rgba(15, 61, 123, 0.8); - } - - .box { - width: 80%; - height: 4.4vh; - background: #FFFFFF; - border-radius: 4px; - border: 1px solid #EAEAEA; - margin: 0 auto; - margin-bottom: 3vh; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - - &:hover { - border-color: #41B0E2; - color: #41B0E2; - } - - &:last-child { - margin-bottom: 0; - } - } - - .active_box { - background-color: #41B0E2; - color: #fff; - border-color: #41B0E2; - - &:hover { - color: #fff; - border-color: #41B0E2; - } - } -} \ No newline at end of file diff --git a/src/pages/InstallExe/index.tsx b/src/pages/InstallExe/index.tsx deleted file mode 100644 index 6812c80..0000000 --- a/src/pages/InstallExe/index.tsx +++ /dev/null @@ -1,278 +0,0 @@ -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'; - -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 = ({ }) => { - const urlParams = useParams(); - - const [listData, setListData] = useState(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); // 一体化密码机驱动安装程序 - - useEffect(() => { - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let info = JSON.parse(sysName) - 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({})); - } - }, []) - - const itemDom = (item: any, index: number) => { - return ( -
{ - - 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} -
- ) - } - - const openDialog = (name: string) => { - switch (name) { - case 'GBase': - setOpen1(true) - break; - case 'GBase升级程序': - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let info = JSON.parse(sysName); - 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) => { - let sysName = localStorage.getItem(`${urlParams?.fileType}`); - if (sysName) { - let info = JSON.parse(sysName); - 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 ( -
-
一体化对称密码管理系统
-
- {/* 左 */} - - {listData.slice(0, 9).map((item: any, index: number) => { return itemDom(item, index) })} - - - {/* 中 */} - - {listData.slice(9, 13).map((item: any, index: number) => { return itemDom(item, index) })} - - - {/* 右 */} -
- - {listData.slice(13, 15).map((item: any, index: number) => { return itemDom(item, index) })} - - - - {listData.slice(15, 17).map((item: any, index: number) => { return itemDom(item, index) })} - -
-
-
- { }} /> -
- - {/* 依赖程序安装--弹窗 */} - { uncheck(e); setOpen1(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} - /> - { uncheck(e); setOpen2(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - { uncheck(e); setOpen3(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - { uncheck(e); setOpen4(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - { uncheck(e); setOpen5(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - { uncheck(e); setOpen6(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - - {/* 专用核心密码管理分系统--弹窗 */} - { uncheck(e); setOpen7(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - - { uncheck(e); setOpen8(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - - { uncheck(e); setOpen9(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - - {/* 一体化密码机--弹窗 */} - { uncheck(e); setOpen11(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> - - { uncheck(e); setOpen12(false) }} - setInstallExe={(i, t) => { setInstallExe(i, t) }} /> -
- ) -} - -export default InstallExe; \ No newline at end of file diff --git a/src/pages/M063/Init/index.tsx b/src/pages/M063/Init/index.tsx new file mode 100644 index 0000000..d33f72b --- /dev/null +++ b/src/pages/M063/Init/index.tsx @@ -0,0 +1,100 @@ +import { FC, useEffect, useState } from 'react'; +import { history, useLocation, useParams } from 'umi'; +import ButtonComp from '@/components/ButtonComp'; +import ClearInfoDialog from '@/components/ClearInfoDialog'; +import NodeInitWrap from '@/components/NodeInitWrap'; +import ContentWarp from '@/components/ContentWarp'; +import { Button, ConfigProvider, Form, Input, Modal, Radio, Checkbox, message, Space,Select } from 'antd'; + +import DEV from '@/utils/env/dev'; +import { countType } from '@/utils/sysType'; + +interface PageProps { + +} + +const NodeInitTool: FC = ({ }) => { + const urlParams = useParams(); + const [authOpen, setAuthOpen] = useState(true); + const [noticeOpen,setNoticeOpen] = useState(false) + + let sysInfo = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysInfo ? JSON.parse(sysInfo) : null; + + useEffect(() => { + installSuccess() + setAuthOpen(true) + }, []) + + + // 在指定的目录下安装快捷方式 + const installSuccess = async () => { + try { + const response = await fetch('http://localhost:3001/createShortcut', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + mode: "cors", + body: JSON.stringify({ + folderPath: `${DEV.FILE_URL}/${countType[urlParams?.fileType]}`, + shortcutName: 'MMD063', + shortcutURL: `${DEV.LOCAL_URL}/identifier/${urlParams?.fileType}` + }), + }); + } catch (error) { + message.error(error); // 处理请求错误 + } + } + + + return ( +
+ { + setAuthOpen(false) + }} + > +
+
输入口令
+
+
+ +
+ { + setAuthOpen(false) + setNoticeOpen(true) + }} /> +
+
+ { + setAuthOpen(false) + }} + > +
+
系统自检
+
进度条
+
提示文案
+
+ +
+ { + setNoticeOpen(false) + }} /> +
+
+
+ ) + +} + +export default NodeInitTool \ No newline at end of file diff --git a/src/pages/M063/PasswordManage/index.less b/src/pages/M063/PasswordManage/index.less new file mode 100644 index 0000000..3b15597 --- /dev/null +++ b/src/pages/M063/PasswordManage/index.less @@ -0,0 +1,6 @@ +.nav{ + display:flex; + align-items: center; + margin-left:20px; + margin-top:10px; +} \ No newline at end of file diff --git a/src/pages/M063/PasswordManage/index.tsx b/src/pages/M063/PasswordManage/index.tsx new file mode 100644 index 0000000..5cc318d --- /dev/null +++ b/src/pages/M063/PasswordManage/index.tsx @@ -0,0 +1,191 @@ +import { FC, useEffect, useState } from 'react'; +import { history, useLocation, useParams } from 'umi'; +import ButtonComp from '@/components/ButtonComp'; +import { Table, message } from 'antd'; +import styles from './index.less'; +import CheckSelect from '@/components/CheckSelect'; +import CheckInput from '@/components/CheckInput'; + +import DEV from '@/utils/env/dev'; +import { countType } from '@/utils/sysType'; + +interface PageProps { + +} + +const MachineRegister: FC = ({ }) => { + + const [params, setParams] = useState({ + page: 1, + limit: 10, + mdepart:null, //设备使用单位 + mposition:null,//设备部署地点 + mstate:null,//设备使用状态 + midentifer:null,// 密码实体标识 + mnumber:null,//上级设备编号 + }); + const [clearAll, setclearAll] = useState(false) // 点击复位按钮时所有的chebox都变为false + const [result, setResult] = useState({}) + const [addModalVisible,setAddModalVisible] = useState(false) //控制新增弹窗显隐 + + const urlParams = useParams(); + + let sysInfo = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysInfo ? JSON.parse(sysInfo) : null; + + useEffect(() => { + installSuccess() + }, []) + + + // 在指定的目录下安装快捷方式 + const installSuccess = async () => { + try { + const response = await fetch('http://localhost:3001/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}/machineManage/register/${urlParams?.fileType}` + }), + }); + } catch (error) { + message.error(error); // 处理请求错误 + } + } + + const columns = [{ + title: '序号', + dataIndex: 'name', + key: 'name', + ellipsis: true, + fixed: 'left', + width: 60, + render: (text: any, record: any, index: any) => { + return ( + {params.limit * (params.page - 1) + index + 1} + ) + } + }, { + title: '设备实体标识', + dataIndex: 'school_info', + key: 'school_info', + ellipsis: true, + render: (text: any, record: any, index: any) => {text.name} + }, { + title: '设备编号', + dataIndex: 'department_info', + key: 'department_info', + ellipsis: true, + render: (text: any, record: any, index: any) => {text.name} + }, { + title: '设备名称', + dataIndex: 'teacher_count', + key: 'teacher_count', + width: 90, + ellipsis: true, + render: (text: any, record: any) => { history.push(`/colleges/${record?.school_info?.id}/statistics`) }}>{text} + }, { + title: '工作状态', + dataIndex: 'student_count', + key: 'student_count', + width: 90, + ellipsis: true, + render: (text: any, record: any) => { history.push(`/colleges/${record?.school_info?.id}/statistics`) }}>{text} + }, { + title: '使用单位', + dataIndex: 'type_cn', + key: 'type_cn', + width: 100, + ellipsis: true, + render: (text: any) => {text} + }, { + title: '监控日志', + dataIndex: 'service_end_time', + key: 'service_end_time', + ellipsis: true, + render: (text: any, record: any, index: any) => {(record?.service_start_time && record?.service_end_time) ? `${moment(record?.service_start_time).format('YYYY-MM-DD HH:mm')} - ${moment(record?.service_end_time).format('YYYY-MM-DD HH:mm')}` : '--'} + },] + + // 查找 + const handleSearch = () => { + console.log("params-", params) + + } + + // 复位 + const handleClear = () => { + params.mdepart=null; + params.mposition=null; + params.mstate=null; + params.midentifer=null; + params.mnumber=null; + setParams({...params}) + setclearAll(true) + } + + const getList = () => { + + } + + // 查询条件改变时设置参数 + const handleChange = (value:any,param:string) =>{ + params[`${param}`]=value; + setParams({...params}) + setclearAll(false) + } + + + return ( +
+ +
+
{ + params.page = page; + params.limit = pagesize; + setParams({ ...params }); + getList(); + }, + total: result?.count, + showTotal: (total, range) => {total} 条数据 + }} + /> + + +
+
+ { }} /> + { }} /> + { }} /> + { }} /> +
+
+ {setAddModalVisible(true) }} /> + { }} /> + { }} /> + { }} /> +
+
+ + + ) + +} + +export default MachineRegister \ No newline at end of file diff --git a/src/pages/M063/Restore/index.tsx b/src/pages/M063/Restore/index.tsx new file mode 100644 index 0000000..35400a9 --- /dev/null +++ b/src/pages/M063/Restore/index.tsx @@ -0,0 +1,98 @@ +import { FC, useEffect, useState } from 'react'; +import { history, useLocation, useParams } from 'umi'; +import ButtonComp from '@/components/ButtonComp'; +import ClearInfoDialog from '@/components/ClearInfoDialog'; +import NodeInitWrap from '@/components/NodeInitWrap'; +import ContentWarp from '@/components/ContentWarp'; +import { Button, ConfigProvider, Form, Input, Modal, Radio, Checkbox, message, Space,Select } from 'antd'; + +import DEV from '@/utils/env/dev'; +import { countType } from '@/utils/sysType'; + +interface PageProps { + +} + +const NodeInitTool: FC = ({ }) => { + const urlParams = useParams(); + const [authOpen, setAuthOpen] = useState(true); + const [noticeOpen,setNoticeOpen] = useState(false) + + + let sysInfo = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysInfo ? JSON.parse(sysInfo) : null; + + useEffect(() => { + installSuccess() + setAuthOpen(true) + }, []) + + + // 在指定的目录下安装快捷方式 + const installSuccess = async () => { + try { + const response = await fetch('http://localhost:3001/createShortcut', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + mode: "cors", + body: JSON.stringify({ + folderPath: `${DEV.FILE_URL}/${countType[urlParams?.fileType]}`, + shortcutName: 'USBKEY工具软件', + shortcutURL: `${DEV.LOCAL_URL}/restore/${urlParams?.fileType}` + }), + }); + } catch (error) { + message.error(error); // 处理请求错误 + } + } + + return ( +
+ { + setAuthOpen(false) + }} + > +
+
输入用户口令
+
+
+ +
+ { + setAuthOpen(false) + setNoticeOpen(true) + }} /> +
+
+ { + setAuthOpen(false) + }} + > +
+
恢复成功!初始化成功
+
+ +
+ { + setNoticeOpen(false) + }} /> +
+
+
+ ) + +} + +export default NodeInitTool \ No newline at end of file diff --git a/src/pages/M063/UnifyManage/index.tsx b/src/pages/M063/UnifyManage/index.tsx new file mode 100644 index 0000000..55b54be --- /dev/null +++ b/src/pages/M063/UnifyManage/index.tsx @@ -0,0 +1,67 @@ +import { FC, useEffect, useState } from 'react'; +import { history, useLocation, useParams } from 'umi'; +import ButtonComp from '@/components/ButtonComp'; +import ClearInfoDialog from '@/components/ClearInfoDialog'; +import NodeInitWrap from '@/components/NodeInitWrap'; +import ContentWarp from '@/components/ContentWarp'; +import { Button, ConfigProvider, Form, Input, Modal, Radio, Upload,UploadProps, Checkbox, message, Space,Select } from 'antd'; + + +interface PageProps { + +} + +const NodeInitTool: FC = ({ }) => { + const [fileOpen, setFileOpen] = useState(true); + const uploadprops: UploadProps = { + maxCount: 1, + beforeUpload: (file: any) => { + const formData = new FormData(); + formData.append('file', file, '11'); + console.log("file--", file) + console.log("formData--", formData) + // secretInit_loadData(formData).then((res) => { + // if (res?.result == "success" && res?.data.length > 0) { + // message.success('加载数据成功'); + // form.setFieldsValue({ ...res?.data[0] }) + // localStorage.setItem('MMJInit', JSON.stringify(res?.data[0])); + // setDataLoading(true); + // } else { + // message.error(res?.errorMsg); + // } + // }) + } + }; + + + return ( +
+ { + setFileOpen(false) + }} + > +
导入类型
+
+ + + +
+ +
+ { + setFileOpen(false) + }} /> +
+
+
+ ) + +} + +export default NodeInitTool \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/Application/index.tsx b/src/pages/MY/KeyBodyManage/Application/index.tsx deleted file mode 100644 index 3e38518..0000000 --- a/src/pages/MY/KeyBodyManage/Application/index.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Form, Input, Pagination, Radio, Select, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { addSecretAsk, secretAskList, secretFormatList } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [form] = Form.useForm(); - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [selectData, setSelectData] = useState({ - productName: [], - productNum: [], - publisherType: [], - carrierNumber: [] - }); - - useEffect(() => { - form.setFieldsValue({ - applyNewOld: '申请新密钥体', - }) - getSelect() - }, []) - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({}).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - let publisherType = list.map((item: any) => { return { label: item.publisherType, value: item.publisherType } }); - let productNum = list.map((item: any) => { return { label: item.productNum, value: item.productNum } }); - let carrierNumber = list.map((item: any) => { return { label: item.carrierNumber, value: item.carrierNumber } }); - - setSelectData({ - productName, - publisherType, - productNum, - carrierNumber - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '申请类型', dataIndex: 'askType', key: 'askType', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '申请数量', dataIndex: 'applyNum', key: 'applyNum', align: 'center' }, - { title: '申请时间', dataIndex: 'createTime', key: 'createTime', align: 'center' }, - { - title: '申请结果', key: 'name', align: 'center', - render: (a: any, b: any, c: any) => { - return 申请成功 - } - }, - // { title: '载体型号', dataIndex: 'carrierModel', key: 'carrierModel', align: 'center' } - ] - - - useEffect(() => { - getList(); - }, [pageNumber]); - - // 获取密钥体列表 - const getList = () => { - secretAskList({ pageNumber, pageSize }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const onFinish = (values: any) => { - addSecretAsk(values).then((res) => { - if (res?.result == "success") { - message.success('申请成功') - pageNumber == 1 ? getList() : setPageNumber(1); - form.setFieldsValue({ - applyNewOld: '申请新密钥体', - }) - } else { - message.error(res?.errorMsg); - } - }) - }; - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - return ( -
- setActiveTab(e)} /> - -
- - - 申请新密钥体 - 申请旧密钥体 - - - {/* 密钥种类字段未知 未对接字段 */} - {/* - { }} options={selectData.productName} /> - - - - - - - - form.submit()} /> -
- - -
申请情况列表
-
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/Ciphertext/index.tsx b/src/pages/MY/KeyBodyManage/Ciphertext/index.tsx deleted file mode 100644 index e278721..0000000 --- a/src/pages/MY/KeyBodyManage/Ciphertext/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../../GLQ/index.less'; -import { Form, Input, Select, Upload, UploadProps } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect } from 'react'; - -export default function Page() { - const [form] = Form.useForm(); - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - useEffect(() => { - form.setFieldsValue({ - carrierType: 1, - carrierModel: 1, - filePath: '', - }) - }, []) - - const onFinish = (values: any) => { - console.log('表单提交:', values); - }; - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - console.log('file',file); - } - }; - - return ( -
- -
-
- - { }} options={[ - { label: '三寸', value: 1 } - ]} /> - - -
- - - { }} /> - -
-
- - -
- form.submit()} /> -
- - -
-
-
产品名称
- - -
产品编号
- -
- -
-
发起者标识
- - -
接受者标识
- -
-
-
-
-
-
- ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/Cleaned/index.tsx b/src/pages/MY/KeyBodyManage/Cleaned/index.tsx deleted file mode 100644 index 6bbc0be..0000000 --- a/src/pages/MY/KeyBodyManage/Cleaned/index.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Pagination, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { secretList } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - - useEffect(() => { - getList(); - }, [pageNumber]); - - // 获取密钥体列表 - const getList = () => { - secretList({ pageNumber, pageSize, isClean: 1 }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - { title: '来源', dataIndex: 'source', key: 'source', align: 'center' }, - // { title: '当前时间', dataIndex: 'createTime', key: 'createTime', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' } - ] - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - return ( -
- setActiveTab(e)} /> - -
- { - pageNumber == 1 ? getList() : setPageNumber(1); - }} /> -
- -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/CodeComparisonTable/index.tsx b/src/pages/MY/KeyBodyManage/CodeComparisonTable/index.tsx deleted file mode 100644 index b4488ae..0000000 --- a/src/pages/MY/KeyBodyManage/CodeComparisonTable/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - - const columns: any = [ - { title: '密钥体大代号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥体子代号', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- setActiveTab(e)} /> - -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/DistrTriple/index.tsx b/src/pages/MY/KeyBodyManage/DistrTriple/index.tsx deleted file mode 100644 index cc6bf63..0000000 --- a/src/pages/MY/KeyBodyManage/DistrTriple/index.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Form, Input, Radio, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - - const columns: any = [ - { title: '配发类型', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '操作员', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '操作时间', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '三联单号', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns1: any = [ - { title: '密码种类', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '套数', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '编号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体数量', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '载体编号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '备注', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- setActiveTab(e)} /> - -
-
发往单位
-
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> -
- -
- -
-
发往单位
-
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
-
发往单位
- -
配发时间:--
-
- -
- { }} /> -
- { }} /> - { }} /> - { }} /> - { }} /> -
-
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/EmailDistr/index.tsx b/src/pages/MY/KeyBodyManage/EmailDistr/index.tsx deleted file mode 100644 index 35bc414..0000000 --- a/src/pages/MY/KeyBodyManage/EmailDistr/index.tsx +++ /dev/null @@ -1,294 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, DatePicker, Form, Input, Pagination, Select, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { mailIssueList, secretFormatList, secretList, secretUpdateStatus } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [form] = Form.useForm(); - const [selectData, setSelectData] = useState({ - productName: [], - publisherType: [] - }); - const [tableData1, setTableData1] = useState([]); - const [pageNumber1, setPageNumber1] = useState(1); - const [pageSize1, setpageSize1] = useState(10); - const [total1, setTotal1] = useState(0); - - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const formItemSty = { width: '31%', marginBottom: 20, marginRight: 30 }; - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber - 1) * pageSize + c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' }, - ] - - const columns1: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber1 - 1) * pageSize1 + c + 1}; - }, - }, - // { title: '编号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥分发平台名称', dataIndex: 'keyDistPlatformName', key: 'keyDistPlatformName', align: 'center' }, - { title: '密钥分发平台实体标识', dataIndex: 'keyDistPlatformEntity', key: 'keyDistPlatformEntity', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productCode', key: 'productCode', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '总数量', dataIndex: 'total', key: 'total', align: 'center' }, - { title: '已下载数量', dataIndex: 'downloadNum', key: 'downloadNum', align: 'center' }, - { title: '授权', dataIndex: 'empower', key: 'empower', align: 'center' }, - { title: '优先级', dataIndex: 'priority', key: 'priority', align: 'center' }, - { title: '结束时间', dataIndex: 'overTime', key: 'overTime', align: 'center' }, - { title: '通知标志', dataIndex: 'notificationFlag', key: 'notificationFlag', align: 'center' }, - { title: '删除标志', dataIndex: 'deleteFlag', key: 'deleteFlag', align: 'center' } - ] - - useEffect(() => { - form.setFieldsValue({ - productName: '', - carrierType: '', - carrierNumber: '', - orderDirection: '', - }) - getSelect() - }, []) - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({}).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - let carrierType = list.map((item: any) => { return { label: item.carrierType, value: item.carrierType } }); - let carrierNumber = list.map((item: any) => { return { label: item.carrierNumber, value: item.carrierNumber } }); - setSelectData({ - productName: [{ label: '全部', value: '' }, ...productName], - carrierType: [{ label: '全部', value: '' }, ...carrierType], - carrierNumber: [{ label: '全部', value: '' }, ...carrierNumber], - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - }, [pageNumber]); - - useEffect(() => { - getList1(); - }, [pageNumber1]); - - // 获取密钥体列表 - const getList = () => { - let data = form.getFieldsValue() - let params = { - 'secretImport.productName': data.productName, - 'secretImport.productNum': data.productNum, - 'secretImport.carrierType': data.carrierType, - 'secretImport.carrierNumber': data.carrierNumber, - } - secretList({ pageNumber, pageSize, ...params }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - // 获取密钥体邮箱任务列表 - const getList1 = () => { - mailIssueList({ pageNumber: pageNumber1, pageSize: pageSize1 }).then((res) => { - if (res?.result == "success") { - setTotal1(res.data[0].total) - setTableData1(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const onFinish = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - }; - - const sending = (type: number) => { - if (selectedRowKeys.length == 0) { - message.info('请勾选数据'); - return - } - - let promises = selectedRowKeys.map(item => { - return secretUpdateStatus({ id: item, type }).then((res) => { - if (res?.result === "success") { - return 1; - } else { - message.error(res?.errorMsg); - return 0; - } - }); - }); - - Promise.all(promises).then(results => { - let recordCount = results.reduce((acc: any, val) => acc + val, 0); - if (recordCount === selectedRowKeys.length) { - message.success('配发成功'); - pageNumber1 == 1 ? getList1() : setPageNumber1(1); - setSelectedRowKeys([]); - } - }); - } - - return ( -
- setActiveTab(e)} /> - -
- - { }} options={selectData.carrierType} /> - - {/* - - */} - - - -
- - { }} options={[ - { label: '已授权', value: '已授权' }, - { label: '未授权', value: '未授权' } - ]} /> - - - - - -
record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - -
-
密钥体邮箱任务列表
-
- - -
record?.id} - rowClassName={rowClassName} - /> - - {total1 > 0 &&
-
共 {total1} 条
- { - setPageNumber1(pageNumber); - }} - onShowSizeChange={(current: any, pageSize: any) => { - setpageSize1(pageSize); - getList1(); - }} - /> -
} - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/FormatImport/index.tsx b/src/pages/MY/KeyBodyManage/FormatImport/index.tsx deleted file mode 100644 index 45d1a01..0000000 --- a/src/pages/MY/KeyBodyManage/FormatImport/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Pagination, Table, Upload, UploadProps, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { secretFormatImport, secretFormatList } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber - 1) * pageSize + c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'carrierNumber', key: 'carrierNumber', align: 'center' }, - { title: '管理文件名', dataIndex: 'managerFilename', key: 'managerFilename', align: 'center' } - ] - - useEffect(() => { - getList(); - }, [pageNumber]); - - // 获取密钥体格式列表 - const getList = () => { - secretFormatList({ pageNumber, pageSize }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - const formData = new FormData(); - formData.append('file', file); - secretFormatImport(formData).then((res) => { - if (res?.result == "success") { - message.success('导入成功'); - getList() - } else { - message.error(res?.errorMsg); - } - }) - } - }; - - return ( -
- setActiveTab(e)} /> - -
-
密钥体格式列表
-
- - - - { }} /> -
-
- -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - - ); -} diff --git a/src/pages/MY/KeyBodyManage/FormatPublishing/index.tsx b/src/pages/MY/KeyBodyManage/FormatPublishing/index.tsx deleted file mode 100644 index 607a910..0000000 --- a/src/pages/MY/KeyBodyManage/FormatPublishing/index.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Form, Pagination, Select, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { secretFormatList, secretPublisher } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [form] = Form.useForm(); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [selectData, setSelectData] = useState({ - productName: [], - carrierType: [], - carrierNumber: [], - publisherType: [] - }); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const [allRowKeys, setAllRowKeys] = useState([]); - - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - useEffect(() => { - initForm() - getSelect() - }, []) - - - const initForm = () => { - form.setFieldsValue({ - productName: '', - carrierType: '', - carrierNumber: '', - publisherType: '' - }) - } - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({}).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - let carrierType = list.map((item: any) => { return { label: item.carrierType, value: item.carrierType } }); - let carrierNumber = list.map((item: any) => { return { label: item.carrierNumber, value: item.carrierNumber } }); - let publisherType = list.map((item: any) => { return { label: item.publisherType, value: item.publisherType } }); - setSelectData({ - productName: [{ label: '全部', value: '' }, ...productName], - carrierType: [{ label: '全部', value: '' }, ...carrierType], - carrierNumber: [{ label: '全部', value: '' }, ...carrierNumber], - publisherType: [{ label: '全部', value: '' }, ...publisherType] - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - setAllRowKeys([]) - }, [pageNumber]); - - // 获取密钥体格式列表 - const getList = () => { - let data = form.getFieldsValue() - let params = { - 'secretFormat.productName': data.productName, - 'secretFormat.carrierType': data.carrierType, - 'secretFormat.carrierNumber': data.carrierNumber, - 'secretFormat.publisherType': data.publisherType - } - secretFormatList({ pageNumber, pageSize, ...params }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - const keys = res.data[0].list.map((item: any) => item?.id); - setAllRowKeys(keys); - } else { - message.error(res?.errorMsg); - } - }) - } - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '管理系统名称', dataIndex: 'systemName', key: 'systemName', align: 'center' }, - { title: '管理系统实体标识', dataIndex: 'shstemId', key: 'shstemId', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '发布状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'carrierNumber', key: 'carrierNumber', align: 'center' } - ] - - const onFinish = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - }; - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const sending = () => { - if (selectedRowKeys.length == 0) { - message.info('请勾选需要发布的数据'); - return - } - - let promises = selectedRowKeys.map(item => { - return secretPublisher({ id: item }).then((res) => { - if (res?.result === "success") { - return 1; - } else { - message.error(res?.errorMsg); - return 0; - } - }); - }); - - Promise.all(promises).then(results => { - let recordCount = results.reduce((acc: any, val) => acc + val, 0); - - if (recordCount === selectedRowKeys.length) { - message.success('发布成功'); - initForm(); - onFinish(); - setSelectedRowKeys([]); - } - }); - } - - return ( -
- setActiveTab(e)} /> - - - - { }} options={selectData.carrierType} /> - - - { }} options={selectData.publisherType} /> - - {/* -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - - ); -} diff --git a/src/pages/MY/KeyBodyManage/Import/index.tsx b/src/pages/MY/KeyBodyManage/Import/index.tsx deleted file mode 100644 index 6043705..0000000 --- a/src/pages/MY/KeyBodyManage/Import/index.tsx +++ /dev/null @@ -1,312 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { Button, ConfigProvider, Form, Input, Modal, Pagination, Select, Table, Upload, UploadProps, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { secretBodyImport, secretFormatList, secretList, secretUpdateSecret } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1); - const [tableData, setTableData] = useState([]); - const [visibility, setVisibility] = useState(false); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [fileInfo, setFileInfo] = useState(null); - const [productNumber, setProductNumber] = useState(''); - const [speed, setSpeed] = useState(1); - const [selectData, setSelectData] = useState({ - productName: [], - carrierType: [], - carrierNumber: [], - publisherType: [], - orderDirection: [] - }); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const [allRowKeys, setAllRowKeys] = useState([]); - - const [form] = Form.useForm(); - - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber - 1) * pageSize + c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - // { title: '来源', dataIndex: 'orderDirection', key: 'orderDirection', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' }, - ] - - useEffect(() => { - initForm() - getSelect() - }, []) - - const initForm = () => { - form.setFieldsValue({ - productName: '', - carrierType: '', - carrierNumber: '', - // orderDirection: '', - }) - } - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({ pageNumber, pageSize }).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - let carrierType = list.map((item: any) => { return { label: item.carrierType, value: item.carrierType } }); - let carrierNumber = list.map((item: any) => { return { label: item.carrierNumber, value: item.carrierNumber } }); - setSelectData({ - productName: [{ label: '全部', value: '' }, ...productName], - carrierType: [{ label: '全部', value: '' }, ...carrierType], - carrierNumber: [{ label: '全部', value: '' }, ...carrierNumber], - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - setAllRowKeys([]) - }, [pageNumber]); - - // 获取密钥体列表 - const getList = () => { - let data = form.getFieldsValue() - let params = { - 'secretImport.productName': data.productName, - 'secretImport.carrierType': data.carrierType, - 'secretImport.carrierNumber': data.carrierNumber, - } - secretList({ pageNumber, pageSize, ...params}).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - const keys = res.data[0].list.map((item: any) => item?.id); - setAllRowKeys(keys); - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const onFinish = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - }; - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - setFileInfo(file); - } - }; - - const sending = (type: number) => { - if (selectedRowKeys.length == 0) { - message.info('请勾选数据'); - return - } - - let promises = selectedRowKeys.map(item => { - return secretUpdateSecret({ id: item, type }).then((res) => { - if (res?.result === "success") { - return 1; - } else { - message.error(res?.errorMsg); - return 0; - } - }); - }); - - let str: any = { 1: '删除成功', 2: '还原成功', 3: '清理成功'} - Promise.all(promises).then(results => { - let recordCount = results.reduce((acc: any, val) => acc + val, 0); - if (recordCount === selectedRowKeys.length) { - message.success(`${str[type]}`); - initForm(); - onFinish(); - setSelectedRowKeys([]); - } - }); - } - - return ( -
- setActiveTab(e)} /> - - - {/* - { }} options={selectData.productName} /> - - - { }} options={selectData.carrierNumber} /> - - {/* -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - -
- sending(1)} /> - sending(2)} /> - sending(3)} /> - { message.info('建设中')}} /> -
- - setVisibility(false)} - footer={null}> -
- { - speed == 1 && -
-
- *产品编号 - setProductNumber(e.target.value)} - /> -
-
- } - { - speed == 2 && -
-
请选择载体的输入路径
-
- *文件路径 - - - { }} /> - -
-
- } - {speed == 3 &&
是否到密钥体?
} - {speed == 4 &&
导入密钥体成功
} -
-
- { - switch (speed) { - case 1: - if (!productNumber.trim()) { message.error('产品编号不能为空'); return } - setSpeed(2) - break; - case 2: - const formData = new FormData(); - formData.append('file', fileInfo); - formData.append('productNumber', `${productNumber}`); - secretBodyImport(formData).then((res) => { - if (res?.result == "success") { - setSpeed(3) - } else { - message.error(res?.errorMsg); - } - }) - break; - case 3: - setSpeed(4) - break; - case 4: - onFinish() - setVisibility(false) - break; - } - }} /> - setVisibility(false)} /> -
-
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/Plaintext/index.tsx b/src/pages/MY/KeyBodyManage/Plaintext/index.tsx deleted file mode 100644 index d0bbfa2..0000000 --- a/src/pages/MY/KeyBodyManage/Plaintext/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import ContentWarp from '@/components/ContentWarp'; -import styles from '../../../GLQ/index.less'; -import { Form, Input, Select, Upload, UploadProps } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; -import { useEffect } from 'react'; - -export default function Page() { - const [form] = Form.useForm(); - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - const typeList = [ - { label: '软盘', value: 1 }, - { label: '移动盘', value: 2 }, - { label: 'IC卡', value: 3 }, - { label: '光盘', value: 4 }, - { label: '芯片', value: 5 }, - { label: '密钥枪', value: 6 }, - { label: 'iButton', value: 7 }, - { label: '密码注入器', value: 8 } - ] - - useEffect(() => { - form.setFieldsValue(() => { - - }) - }, []) - - const onFinish = (values: any) => { - console.log('表单提交:', values); - }; - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - console.log('file', file); - } - }; - - return ( -
- -
- - - - - - - - - - - - { }} options={[{ label: '三寸', value: 1 }]} /> - - -
- - - { }} /> - -
-
- -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> -
- -
- - - - { }} options={[{ label: '选项1', value: 1 }]} /> - - - { }} options={[{ label: '选项1', value: 1 }]} /> - - -
- { }} /> -
- - -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- form.submit()} /> - form.submit()} /> - form.submit()} /> - form.submit()} /> -
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/SubordinateDistr/index.tsx b/src/pages/MY/KeyBodyManage/SubordinateDistr/index.tsx deleted file mode 100644 index 93648bb..0000000 --- a/src/pages/MY/KeyBodyManage/SubordinateDistr/index.tsx +++ /dev/null @@ -1,274 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Form, Input, Pagination, Select, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { belowIssueList, secretFormatList, secretList, secretUpdateStatus } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [form] = Form.useForm(); - - const [tableData1, setTableData1] = useState([]); - const [pageNumber1, setPageNumber1] = useState(1); - const [pageSize1, setpageSize1] = useState(10); - const [total1, setTotal1] = useState(0); - - const [selectData, setSelectData] = useState({ - productName: [], - productNum: [], - publisherType: [] - }); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber - 1) * pageSize + c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' }, - ] - - const columns1: any = [ - { title: '配发类型', dataIndex: 'issueStatus', key: 'name', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '配发管理系统名称', dataIndex: 'distManagerName', key: 'distManagerName', align: 'center' }, - { title: '配发管理系统实体标识', dataIndex: 'distManagerIdentifer', key: 'distManagerIdentifer', align: 'center' }, - { title: '配发数量', dataIndex: 'issueNum', key: 'issueNum', align: 'center' }, - { title: '配发状态', dataIndex: 'issueStatus', key: 'issueStatus', align: 'center' }, - { title: '删除标志', dataIndex: 'delNotes', key: 'delNotes', align: 'center' }, - { title: '配发操作时间', dataIndex: 'subOperateTime', key: 'subOperateTime', align: 'center' }, - { title: '申请管理系统名称', dataIndex: 'applyManagerSysName', key: 'applyManagerSysName', align: 'center' }, - { title: '申请管理系统实体标识', dataIndex: 'applyManagerModelName', key: 'applyManagerModelName', align: 'center' }, - { title: '申请数量', dataIndex: 'quantity', key: 'quantity', align: 'center' }, - { title: '申请时间', dataIndex: 'quantityTime', key: 'quantityTime', align: 'center' }, - { title: '配发编号', dataIndex: 'distCode', key: 'distCode', align: 'center' }, - { title: '申请编号', dataIndex: 'applyCode', key: 'applyCode', align: 'center' } - ] - - useEffect(() => { - form.setFieldsValue({ - productName: '', - carrierType: '', - carrierNumber: '', - orderDirection: '', - }) - getSelect() - }, []) - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({}).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - let carrierType = list.map((item: any) => { return { label: item.carrierType, value: item.carrierType } }); - let carrierNumber = list.map((item: any) => { return { label: item.carrierNumber, value: item.carrierNumber } }); - setSelectData({ - productName: [{ label: '全部', value: '' }, ...productName], - carrierType: [{ label: '全部', value: '' }, ...carrierType], - carrierNumber: [{ label: '全部', value: '' }, ...carrierNumber] - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - }, [pageNumber]); - - useEffect(() => { - getList1(); - }, [pageNumber1]); - - // 获取密钥体列表 - const getList = () => { - let data = form.getFieldsValue() - let params = { - 'secretImport.productName': data.productName, - 'secretImport.productNum': data.productNum, - 'secretImport.carrierType': data.carrierType, - 'secretImport.carrierNumber': data.carrierNumber, - } - secretList({ pageNumber, pageSize, ...params }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - // 获取向下级配发列表 - const getList1 = () => { - belowIssueList({ pageNumber: pageNumber1, pageSize: pageSize1 }).then((res) => { - if (res?.result == "success") { - setTotal1(res.data[0].total) - setTableData1(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const onFinish = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - }; - - const sending = (type: number) => { - if (selectedRowKeys.length == 0) { - message.info('请勾选数据'); - return - } - - let promises = selectedRowKeys.map(item => { - return secretUpdateStatus({ id: item, type }).then((res) => { - if (res?.result === "success") { - return 1; - } else { - message.error(res?.errorMsg); - return 0; - } - }); - }); - - Promise.all(promises).then(results => { - let recordCount = results.reduce((acc: any, val) => acc + val, 0); - if (recordCount === selectedRowKeys.length) { - message.success('配发成功'); - pageNumber1 == 1 ? getList1() : setPageNumber1(1); - setSelectedRowKeys([]); - } - }); - } - - - return ( -
- setActiveTab(e)} /> - -
- - - - - { }} options={selectData.carrierNumber} /> - - form.submit()} /> -
- {/*
- - - - form.submit()} /> -
*/} - - -
-
密钥体列表
- sending(1)} /> -
- -
record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - -
-
配发情况列表
-
- -
record?.id} - rowClassName={rowClassName} - /> - - {total1 > 0 &&
-
共 {total1} 条
- { - setPageNumber1(pageNumber); - }} - onShowSizeChange={(current: any, pageSize: any) => { - setpageSize1(pageSize); - getList1(); - }} - /> -
} - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyBodyManage/SystemDistr/index.tsx b/src/pages/MY/KeyBodyManage/SystemDistr/index.tsx deleted file mode 100644 index 2aef14c..0000000 --- a/src/pages/MY/KeyBodyManage/SystemDistr/index.tsx +++ /dev/null @@ -1,301 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Form, Input, Pagination, Radio, Select, Table, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { privateIssueList, secretFormatList, secretList, secretUpdateStatus } from '@/services/my'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [form] = Form.useForm(); - const [selectData, setSelectData] = useState({ - productName: [], - publisherType: [] - }); - // 密钥体 - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - // 配发 - const [tableData1, setTableData1] = useState([]); - const [pageNumber1, setPageNumber1] = useState(1); - const [pageSize1, setpageSize1] = useState(10); - const [total1, setTotal1] = useState(0); - const [selectedPFKeys, setSelectedPFKeys] = useState([]); - const [allRowKeys, setAllRowKeys] = useState([]); - // 执勤 - const [tableData2, setTableData2] = useState([]); - const [pageNumber2, setPageNumber2] = useState(1); - const [pageSize2, setpageSize2] = useState(10); - const [total2, setTotal2] = useState(0); - - const formItemSty = { width: 'auto', marginBottom: 20, marginRight: 30 }; - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {(pageNumber - 1) * pageSize + c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '载体型号', dataIndex: 'applyModel', key: 'applyModel', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - { title: '当前状态', dataIndex: 'currentStatus', key: 'currentStatus', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' }, - ] - - const columns1: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '配发管理系统名称', dataIndex: 'distManagerName', key: 'distManagerName', align: 'center' }, - { title: '配发管理系统实体标识', dataIndex: 'distManagerIdentifer ', key: 'distManagerIdentifer', align: 'center' }, - { title: '操作时间', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '同步状态', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns2: any = [ - { title: '执勤区名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '执勤区标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '所属网络', dataIndex: 'name', key: 'name', align: 'center' }, - { title: 'IP地址', dataIndex: 'name', key: 'name', align: 'center' }, - ] - - useEffect(() => { - form.setFieldsValue({ - productName: '', - carrierType: '', - carrierNumber: '', - orderDirection: '', - }) - getSelect() - }, []) - - // 获取下拉框数据 - const getSelect = () => { - secretFormatList({}).then((res) => { - if (res?.result == "success") { - let list = res.data[0].list; - let productName = list.map((item: any) => { return { label: item.productName, value: item.productName } }); - setSelectData({ - productName: [{ label: '全部', value: '' }, ...productName] - }) - } else { - message.error(res?.errorMsg); - } - }) - } - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - }, [pageNumber]); - - useEffect(() => { - getList1(); - setSelectedPFKeys([]) - }, [pageNumber1]); - - - // 获取密钥体列表 - const getList = () => { - let data = form.getFieldsValue() - let params = { - 'secretImport.productName': data.productName, - 'secretImport.productNum': data.productNum, - } - secretList({ pageNumber, pageSize, ...params }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total); - setTableData(res.data[0].list); - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const sending = (type: number) => { - if (selectedRowKeys.length == 0) { - message.info('请勾选数据'); - return - } - - let promises = selectedRowKeys.map(item => { - return secretUpdateStatus({ id: item, type }).then((res) => { - if (res?.result === "success") { - return 1; - } else { - message.error(res?.errorMsg); - return 0; - } - }); - }); - - Promise.all(promises).then(results => { - let recordCount = results.reduce((acc: any, val) => acc + val, 0); - if (recordCount === selectedRowKeys.length) { - message.success('配发成功'); - pageNumber1 == 1 ? getList1() : setPageNumber1(1); - setSelectedRowKeys([]); - } - }); - } - - const onFinish = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - }; - - // 获取向专用密码管理系统配发列表 - const getList1 = () => { - privateIssueList({ pageNumber: pageNumber1, pageSize: pageSize1 }).then((res) => { - if (res?.result == "success") { - setTotal1(res.data[0].total) - setTableData1(res.data[0].list) - const keys = res.data[0].list.map((item: any) => item?.id); - setAllRowKeys(keys); - } else { - message.error(res?.errorMsg); - } - }) - } - - return ( -
- setActiveTab(e)} /> - -
- { }} /> -
- -
- -
- {/* - { }} options={selectData.productName} /> - -
- - - - {/* form.submit()} /> */} - form.submit()} /> -
- -
- -
-
密钥体列表
- sending(3)} /> -
- -
record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - - -
-
配发情况列表
- {setSelectedPFKeys(allRowKeys)}} /> -
- -
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData1} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - rowSelection={{ - selectedRowKeys: selectedPFKeys, - onChange: (selectedKeys: any) => { - setSelectedPFKeys(selectedKeys); - } - }} - /> - - {total1 > 0 &&
-
共 {total1} 条
- { - setPageNumber1(pageNumber); - }} - onShowSizeChange={(current: any, pageSize: any) => { - setpageSize1(pageSize); - getList1(); - }} - /> -
} - -
-
执勤列表
- { message.info('建设中') }} /> -
- -
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns2} - dataSource={tableData2} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/DataMaintenance/index.tsx b/src/pages/MY/KeyManage/DataMaintenance/index.tsx deleted file mode 100644 index c5a8581..0000000 --- a/src/pages/MY/KeyManage/DataMaintenance/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Modal, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - const [visibility, setVisibility] = useState(false); - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '管理盘号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥种类', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '当前版本号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '导入时间', dataIndex: 'importTime', key: 'importTime', align: 'center' },, - { title: '数据长度', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - -
- setVisibility(true)} /> -
- -
0 ? { y: 41 * 10 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - setVisibility(false)} - footer={null}> -
-
类型判断1: 选择文件弹窗
-
类型判断2: 导入成功
-
类型判断3: 已经存在管理盘数据,是否重新导入?
-
-
- { }} /> -
-
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/KeyConfigQuery/index.tsx b/src/pages/MY/KeyManage/KeyConfigQuery/index.tsx deleted file mode 100644 index 7e8f75e..0000000 --- a/src/pages/MY/KeyManage/KeyConfigQuery/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Modal, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - const [visibility, setVisibility] = useState(false); - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '000标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: 'IP地址', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥种类名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥类型', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '使用区/备用区', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '安装方式', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '启用日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '终止日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥套号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '协同管理标志', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns1: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '310标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: 'IP地址', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '设备型号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '应用系统', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理代理', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '设备状态', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '协同管理标志', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - setVisibility(true)} /> - -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - setVisibility(false)} - footer={null}> - -
-
检索项
- { }} options={[{ label: '选项1', value: 1 }]} /> - -
设备型号
- { }} options={[{ label: '选项1', value: 1 }]} /> - - { }} /> -
- -
0 ? { y: 41 * 8 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> - { }} /> -
- - - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/ManageKeys/index.tsx b/src/pages/MY/KeyManage/ManageKeys/index.tsx deleted file mode 100644 index 43c18fc..0000000 --- a/src/pages/MY/KeyManage/ManageKeys/index.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, DatePicker, Modal, Radio, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - const [visibility, setVisibility] = useState(false); - - const columns: any = [ - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '装配情况', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns1: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '000标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '使用期/备用区', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '分发状态', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '安装方式', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '启用日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '套号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '输出日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '协同管理标志', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - -
- - 使用区密钥状态 - 备用区密钥装配 - -
- -
-
密钥类型
- { }} options={[{ label: '选项1', value: 1 }]} /> - -
启用日期
- -
- -
可装配的密钥体列表
-
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- setVisibility(true)} /> -
- -
管理密钥装配列表
-
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> - { }} /> - { }} /> -
- - setVisibility(false)} - footer={null}> -
-
- 类型判断1: -
装配信息:
-
产品名称 ZY310,
-
产品编号 8151电,
-
启用日期 20231011
-
-
类型判断2: 没有需要装配管理密钥的密码设备!
-
-
- { }} /> -
-
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/PrivateKey/index.tsx b/src/pages/MY/KeyManage/PrivateKey/index.tsx deleted file mode 100644 index dbc4f7c..0000000 --- a/src/pages/MY/KeyManage/PrivateKey/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - - const columns: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '000标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥种类名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '安装方式', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '输出日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '协同管理标志', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '是否下载到邮箱', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - -
-
密钥类型
- { }} options={[{ label: '选项1', value: 1 }]} /> -
- -
专用密钥装配列表
- -
用户密钥装配列表
-
0 ? { y: 41 * 8 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> - { }} /> - { }} /> -
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/RelationConfig/index.less b/src/pages/MY/KeyManage/RelationConfig/index.less deleted file mode 100644 index 89310cb..0000000 --- a/src/pages/MY/KeyManage/RelationConfig/index.less +++ /dev/null @@ -1,54 +0,0 @@ -.center_w { - display: flex; - justify-content: center; - flex-wrap: wrap; - align-content: center; -} - -.btn { - position: relative; - width: 40px; - height: 40px; - background: linear-gradient(180deg, #87CDEE 0%, #69C0E9 34%, #7ECDF2 51%, #56B9E6 63%, #81D7FE 100%); - box-shadow: 0px 2px 4px 0px #BDCDE2; - border-radius: 4px; - border: 1px solid rgba(76, 106, 118, 0.22); - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - margin: 0 15%; -} - -.no_btn { - width: 40px; - height: 40px; - background: #E2F3FA; - box-shadow: 0px 2px 4px 0px rgba(81,84,90,0.5); - border-radius: 4px; - border: 1px solid rgba(171, 207, 223, 0.22); - cursor: not-allowed; - - .sjx { - border-left: 12px solid #9FB5BC; - } - - .sjx1 { - border-left: 0px solid #9FB5BC; - border-right: 12px solid #9FB5BC; - } -} - -.sjx { - width: 0; - height: 0; - border-left: 12px solid #fff; - border-bottom: 12px solid transparent; - border-top: 12px solid transparent; - transition: all 0.15s ease-in; -} - -.sjx1 { - border-left: 0px solid #fff; - border-right: 12px solid #fff; -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/RelationConfig/index.tsx b/src/pages/MY/KeyManage/RelationConfig/index.tsx deleted file mode 100644 index 7b187ae..0000000 --- a/src/pages/MY/KeyManage/RelationConfig/index.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import styles1 from './index.less'; -import { useState } from 'react'; -import { ConfigProvider, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - const [tableData1, setTableData1] = useState([]); - - let number = { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - } - - const columns: any = [ - number, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '设备型号', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns1: any = [ - number, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '设备型号', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - -
-
请选择源互通类型
-
0 ? { y: 41 * 10 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - {/* 中间 */} -
-
-
-
-
-
-
-
- {/* 底部 */} -
-
已经配置的设备信息
-
0 ? { y: 41 * 10 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData1} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - - -
- { }} /> - { }} /> -
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/TripleKeyDistri/index.tsx b/src/pages/MY/KeyManage/TripleKeyDistri/index.tsx deleted file mode 100644 index d359d45..0000000 --- a/src/pages/MY/KeyManage/TripleKeyDistri/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, Form, Input, Radio, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - - const columns: any = [ - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '数量', dataIndex: 'number', key: 'number', align: 'center' }, - { title: '载体编号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '内含文件类型', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '文件内容', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密码机型号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '备注', dataIndex: 'name', key: 'name', align: 'center' } - ] - - - return ( -
- setActiveTab(e)} /> - -
-
发往单位
- { }} options={[{ label: '选项1', value: 1 }]} /> - { }} /> -
- -
-
发往单位: --
-
单号:--
-
- -
0 ? { y: 41 * 9 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
-
配发人
- -
配发时间:--
-
- -
- { }} /> -
- { }} /> - { }} /> - { }} /> - { }} /> -
-
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/KeyManage/UserKey/index.tsx b/src/pages/MY/KeyManage/UserKey/index.tsx deleted file mode 100644 index 4b708ec..0000000 --- a/src/pages/MY/KeyManage/UserKey/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import styles from '../../../GLQ/index.less'; -import { useState } from 'react'; -import { ConfigProvider, DatePicker, Select, Table } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [tableData, setTableData] = useState([]); - - const columns: any = [ - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '装配情况', dataIndex: 'name', key: 'name', align: 'center' } - ] - - const columns1: any = [ - { - title: '序号', key: 'index', align: 'center', width: 80, - render: (a: any, b: any, c: any) => { - return {c + 1}; - }, - }, - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '管理实体标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '000标识', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '产品名称', dataIndex: 'productName', key: 'productName', align: 'center' }, - { title: '产品编号', dataIndex: 'productNum', key: 'productNum', align: 'center' }, - { title: '安装方式', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '分发状态', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '启用日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '终止日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '密钥套号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '载体类型', dataIndex: 'carrierType', key: 'carrierType', align: 'center' }, - { title: '输出日期', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '协同管理标志', dataIndex: 'name', key: 'name', align: 'center' } - ] - - return ( -
- { }} /> - -
-
密钥类型
- { }} options={[{ label: '选项1', value: 1 }]} /> - -
启用日期
- -
- -
-
终止日期
- - -
应用系统
-
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> -
- -
用户密钥装配列表
-
0 ? { y: 41 * 5 } : {}} - pagination={false} - bordered - columns={columns1} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - -
- { }} /> - { }} /> - { }} /> -
- - ); -} \ No newline at end of file diff --git a/src/pages/MY/MailboxManage/index.less b/src/pages/MY/MailboxManage/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/MY/MailboxManage/index.tsx b/src/pages/MY/MailboxManage/index.tsx deleted file mode 100644 index e2bb92e..0000000 --- a/src/pages/MY/MailboxManage/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import styles from './index.less'; - -export default function Page() { - return ( -
- 正在建设中 -
- ); -} diff --git a/src/pages/MachineManage/MachineRegister/index.tsx b/src/pages/MachineManage/MachineRegister/index.tsx index edd8ff5..2688975 100644 --- a/src/pages/MachineManage/MachineRegister/index.tsx +++ b/src/pages/MachineManage/MachineRegister/index.tsx @@ -6,6 +6,10 @@ import styles from './index.less'; import CheckSelect from '@/components/CheckSelect'; import CheckInput from '@/components/CheckInput'; import AddModal from './components/AddModal'; + +import DEV from '@/utils/env/dev'; +import { countType } from '@/utils/sysType'; + interface PageProps { } @@ -24,6 +28,34 @@ const MachineRegister: FC = ({ }) => { const [clearAll, setclearAll] = useState(false) // 点击复位按钮时所有的chebox都变为false const [result, setResult] = useState({}) const [addModalVisible,setAddModalVisible] = useState(false) //控制新增弹窗显隐 + const urlParams = useParams(); + + let sysInfo = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysInfo ? JSON.parse(sysInfo) : null; + + useEffect(() => { + installSuccess() + }, []) + + + // 在指定的目录下安装快捷方式 + const installSuccess = async () => { + try { + const response = await fetch('http://localhost:3001/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}/machineManage/register/${urlParams?.fileType}` + }), + }); + } catch (error) { + message.error(error); // 处理请求错误 + } + } + const columns = [{ title: '序号', diff --git a/src/pages/MachineManage/OffLineManage/ImportStep/index.tsx b/src/pages/MachineManage/OffLineManage/ImportStep/index.tsx index 5f7f68b..1ff5dff 100644 --- a/src/pages/MachineManage/OffLineManage/ImportStep/index.tsx +++ b/src/pages/MachineManage/OffLineManage/ImportStep/index.tsx @@ -24,8 +24,7 @@ interface PageProps { } const ImportStep: FC = ({ }) => { - const [step, setStep] = useState(1) - const [radioValue, setRadioValue] = useState(1) + const [step, setStep] = useState(2) const uploadprops: UploadProps = { maxCount: 1, @@ -47,38 +46,24 @@ const ImportStep: FC = ({ }) => { } }; - const handleRadioChange = (e) => { - setRadioValue(e.target.value) - } return (
- {step === 1 && - - - 密码设备注册信息导入 - 密码设备注册信息导出 - 本设备初始化其他密码设备 - - - - } - {step === 2 && +
这是一段描述信息
- }
- { setStep(2) }} /> - {step ===2 && { setStep(1) }} />} - {step ===2 && + { }} /> + { history.back() }} /> + - } + { }} />
diff --git a/src/pages/MachineManage/OffLineManage/index.tsx b/src/pages/MachineManage/OffLineManage/index.tsx new file mode 100644 index 0000000..53e499d --- /dev/null +++ b/src/pages/MachineManage/OffLineManage/index.tsx @@ -0,0 +1,48 @@ +import { FC, useEffect, useState } from 'react'; +import { history, useLocation, useParams } from 'umi'; +import { Radio, Space } from 'antd'; +import ContentWarp from '@/components/ContentWarp'; +import ButtonComp from '@/components/ButtonComp'; + +interface PageProps {} + +const PageName: FC = ({ }) => { + const [radioValue, setRadioValue] = useState(1) + + const urlParams = useParams(); + const location = useLocation(); + let urlStr = `${urlParams?.fileType}${location?.search}`; + + const handleRadioChange = (e) => { + setRadioValue(e.target.value) + } + + return ( +
+ + + + 密码设备注册信息导入 + 密码设备注册信息导出 + 本设备初始化其他密码设备 + + + + +
+ { + if(radioValue ==1){ + history.push(`/machineManage/offline/import/${urlStr}`) + } + else if(radioValue ==2){ + history.push(`/machineManage/offline/export/${urlStr}`) + } + }} /> + { }} /> +
+
+ ) + +} + +export default PageName \ No newline at end of file diff --git a/src/pages/MachineManage/index.less b/src/pages/MachineManage/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/MachineManage/index.tsx b/src/pages/MachineManage/index.tsx deleted file mode 100644 index 0c4b41e..0000000 --- a/src/pages/MachineManage/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { FC, useEffect, useState } from 'react'; -import { history, useLocation, useParams } from 'umi'; -import ButtonComp from '@/components/ButtonComp'; -import ClearInfoDialog from '@/components/ClearInfoDialog'; -import { getPlugCordResult } from '@/services/api'; -import { validateNumber } from '@/utils/validate'; -import theme from '@/styles/antd.theme'; -import { Button, ConfigProvider, Form, Input, Modal, Radio, message } from 'antd'; -// import styles from './index.less'; - -interface PageProps { - data: Array<{ - // 菜单名称 - name: string; - // 是否展开 - check: boolean; - // 内容是否有目录结构 - isTree?: boolean; - // 菜单列表 : name: 名称; url: 路由; img: 图标; - data: Array<{ name: string; url: string; img: any; }> - }>; -} - -const PageName: FC = ({ }) => { - - - return ( -
- -
- ) - -} - -export default PageName \ No newline at end of file diff --git a/src/pages/NodeInitTool/index.less b/src/pages/NodeInitTool/index.less index e69de29..f17e38d 100644 --- a/src/pages/NodeInitTool/index.less +++ b/src/pages/NodeInitTool/index.less @@ -0,0 +1,16 @@ +@keyframes typing{ + from{ + width:0 + } + to{ + width:10ch + } +} + +.importStyle{ + // width:9em; + animation:typing 5s steps(5) infinite ; + white-space: nowrap; + overflow: hidden; + border-right:1px solid; +} \ No newline at end of file diff --git a/src/pages/NodeInitTool/index.tsx b/src/pages/NodeInitTool/index.tsx index 90292ec..0273c57 100644 --- a/src/pages/NodeInitTool/index.tsx +++ b/src/pages/NodeInitTool/index.tsx @@ -3,34 +3,297 @@ import { history, useLocation, useParams } from 'umi'; import ButtonComp from '@/components/ButtonComp'; import ClearInfoDialog from '@/components/ClearInfoDialog'; import NodeInitWrap from '@/components/NodeInitWrap'; -import { getPlugCordResult } from '@/services/api'; -import { validateNumber } from '@/utils/validate'; -import theme from '@/styles/antd.theme'; -import { Button, ConfigProvider, Form, Input, Modal, Radio, message } from 'antd'; +import ContentWarp from '@/components/ContentWarp'; +import { Button, ConfigProvider, Form, Input, Modal, Radio, Checkbox, message, Space,Select } from 'antd'; import styles from './index.less'; +import DEV from '@/utils/env/dev'; +import { countType } from '@/utils/sysType'; + interface PageProps { } const NodeInitTool: FC = ({ }) => { - + const urlParams = useParams(); + + const [authOpen, setAuthOpen] = useState(false); + const [stepOpen,setStepOpen] = useState(false); + const [step, setStep] = useState(1) + + const [radioValue, setRadioValue] = useState(1) + const [configRadio, setConfigRadio] = useState(1) + const [curform] = Form.useForm(); + const [preform] = Form.useForm(); + + const handleRadioChange = (e) => { + setRadioValue(e.target.value) + } + const handleConfigRadio = (e) => { + setConfigRadio(e.target.value) + } + + let sysInfo = localStorage.getItem(`${urlParams?.fileType}`); + let info = sysInfo ? JSON.parse(sysInfo) : null; + + useEffect(() => { + installSuccess() + setAuthOpen(true) + }, []) + + + // 在指定的目录下安装快捷方式 + const installSuccess = async () => { + try { + const response = await fetch('http://localhost:3001/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}/nodeInit/${urlParams?.fileType}` + }), + }); + } catch (error) { + message.error(error); // 处理请求错误 + } + } + return ( -
- + { + setAuthOpen(false) + }} > - - +
+
口令
+
+
+ +
+ { + setAuthOpen(false) + }} /> + { + setAuthOpen(false) + setStepOpen(true) + }} /> +
+ + + { + setStepOpen(false) + }} + > + {step == 1 && (setStep(2))} + > +
+
+
+
数据库服务器IP地址
+
+ { }} /> +
+
+
} + + {step == 2 && (setStep(3))} + onPre={() => (setStep(1))} + > +
+
导入管理设备自身初始化信息
+ +
操作过程信息:
+
+
正在导入...
+
+ +
+ + 通过u盘导入 + 通过注入器导入 + + { }} /> +
+
+
} + {step == 3 && (setStep(4))} + onPre={() => (setStep(2))} + > +
+ + + + 配置本级设备及上级设备基本信息 + 配置本级设备加载通信接口信息 + 管理终端接收存储保护密钥(文件) + + + +
+
} + + {step == 4 && (setStep(4))} + onPre={() => (setStep(2))} + > +
+ +
+
+
本级设备基本信息
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
上级设备基本信息
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
} + +
) - + } export default NodeInitTool \ No newline at end of file diff --git a/src/pages/Register/PositionManage/RegionalEdit/index.less b/src/pages/Register/PositionManage/RegionalEdit/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/Register/PositionManage/RegionalEdit/index.tsx b/src/pages/Register/PositionManage/RegionalEdit/index.tsx deleted file mode 100644 index 64f5312..0000000 --- a/src/pages/Register/PositionManage/RegionalEdit/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import styles from './index.less'; - -export default function Page() { - return ( -
- 地域编辑 -
- ); -} diff --git a/src/pages/Register/PositionManage/UnitLocation/index.less b/src/pages/Register/PositionManage/UnitLocation/index.less deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/Register/PositionManage/UnitLocation/index.tsx b/src/pages/Register/PositionManage/UnitLocation/index.tsx deleted file mode 100644 index 4fea875..0000000 --- a/src/pages/Register/PositionManage/UnitLocation/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { useState } from 'react'; -import styles from './index.less'; -import { Input, Modal } from 'antd'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [unitName, setUnitName] = useState(''); - const [visibility, setVisibility] = useState(false); - - return ( -
-
setVisibility(true)}>单位位置管理
- - {/* 开机认证 */} - setVisibility(false)} - footer={null} - maskClosable={false} - > -
请通过定位按钮在地图上自定义位置
- -
-
- *单位名称 - setUnitName(e.target.value)} - /> -
-
- -
- setVisibility(false)} /> - setVisibility(false)} /> - setVisibility(false)} /> -
-
-
- ); -} diff --git a/src/pages/Register/RegisterManage/AppSystemConfig/index.tsx b/src/pages/Register/RegisterManage/AppSystemConfig/index.tsx deleted file mode 100644 index c96b64e..0000000 --- a/src/pages/Register/RegisterManage/AppSystemConfig/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import styles1 from './index.less'; -import { useState } from 'react'; -import { ConfigProvider, Select, Table, Upload } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [htmlText, setHtmlText] = useState('
文本内容
') - - const columns: any = [ - { title: '设备名称', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '', align: 'center' }, - ] - - return ( -
- setActiveTab(e)} /> - -
从设备列表中选择设备,将其拖动到相应的应用系统节点下;或者选择应用系统节点下的设备,将其拖动到其它应用系统节点下。
-
-
所属网络
-
0 ? { y: 41 * 14 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - /> - - - - ); -} \ No newline at end of file diff --git a/src/pages/Register/RegisterManage/DevicePhotoMainten/index.less b/src/pages/Register/RegisterManage/DevicePhotoMainten/index.less deleted file mode 100644 index 558aae2..0000000 --- a/src/pages/Register/RegisterManage/DevicePhotoMainten/index.less +++ /dev/null @@ -1,19 +0,0 @@ -.info { - font-size: 14px; - font-weight: 400; - color: #666666; - line-height: 22px; - margin-top: 35px; -} - -.picture{ - position: relative; - height: 434px; - border: 1px solid #D8D8D8; - margin-top: 48px; - - img { - width: 100%; - height: 100%; - } -} \ No newline at end of file diff --git a/src/pages/Register/RegisterManage/DevicePhotoMainten/index.tsx b/src/pages/Register/RegisterManage/DevicePhotoMainten/index.tsx deleted file mode 100644 index 9a04ef0..0000000 --- a/src/pages/Register/RegisterManage/DevicePhotoMainten/index.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import TabsComp from '@/components/TabsComp'; -import styles from '../../../GLQ/index.less'; -import styles1 from './index.less'; -import { useEffect, useState } from 'react'; -import { ConfigProvider, Pagination, Table, Upload, UploadProps, message } from 'antd'; - -import { rowClassName } from '@/utils'; -import ButtonComp from '@/components/ButtonComp'; -import { devicePhotoList } from '@/services/register'; - -export default function Page() { - const [activeTab, setActiveTab] = useState(1) - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const [imageUrl, setImageUrl] = useState(''); - - const columns: any = [ - { title: '设备型号', dataIndex: 'name', key: 'name', align: 'center' }, - { title: '', align: 'center' }, - ] - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - }, [pageNumber]); - - const getList = () => { - devicePhotoList({ pageNumber, pageSize }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - const props: UploadProps = { - maxCount: 1, - beforeUpload: (file: any) => { - const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; - const isLt64K = file.size / 1024 <= 64; - if (!isJpgOrPng) { - message.error('只能上传 JPG/PNG 图片文件!'); - return - } - if (!isLt64K) { - message.error('图片大小不能超过 64KB!'); - return - } - return isJpgOrPng && isLt64K; - }, - onChange: (info: any) => { - if (info.file.status === 'done') { - // 上传完成后,从响应数据中获取图片 URL - const imageUrl = info.file.response.url; - console.log("imageUrl",info); - - setImageUrl(imageUrl); - - // const formData = new FormData(); - // formData.append('file', file); - // secretInit_loadData(formData).then((res) => { - // if (res?.result == "success" && res?.data.length > 0) { - // message.success('加载数据成功'); - // form.setFieldsValue({ ...res?.data[0] }) - // localStorage.setItem('MMJInit', JSON.stringify(res?.data[0])); - // setDataLoading(true); - // } else { - // message.error(res?.errorMsg); - // } - // }) - } - if (info.file.status === 'error') { - message.error('上传失败!'); - } - } - }; - - return ( -
- setActiveTab(e)} /> - -
-
- { }} /> -
0 ? { y: 41 * 14 } : {}} - pagination={false} - bordered - columns={columns} - dataSource={tableData} - rowKey={(record: any) => record?.id} - rowClassName={rowClassName} - rowSelection={{ - type: 'radio', - selectedRowKeys, - onChange: (selectedKeys: any) => { - setSelectedRowKeys(selectedKeys); - } - }} - /> - - {total > 0 &&
-
共 {total} 条
- -
} - -
-
提示:请选择设备型号,然后选择该型号的照片,照片大小不要超过64KB,建议尺寸为128×128像素。
-
- - -
-
- - { }} /> - - { }} /> -
-
- - - ); -} \ No newline at end of file diff --git a/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.less b/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.less deleted file mode 100644 index 2d9c8a3..0000000 --- a/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.less +++ /dev/null @@ -1,15 +0,0 @@ -.formSty { - [class~= 'ant-form-item-label'] > label { - justify-content: flex-end; - width: 135px; - } - - [class~= 'ant-input'] { - width: 200px; - } - - [class~= 'ant-form-item'] { - margin-bottom: 0; - margin-top: 20px; - } -} \ No newline at end of file diff --git a/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.tsx b/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.tsx deleted file mode 100644 index cb7b9a9..0000000 --- a/src/pages/Register/RegisterManage/DeviceRegister/AdminsTab/index.tsx +++ /dev/null @@ -1,297 +0,0 @@ -import ButtonComp from '@/components/ButtonComp'; -import ContentWarp from '@/components/ContentWarp'; -import { managerSystemConfigList, managerSystemEditOrAdd } from '@/services/register'; -import { rowClassName } from '@/utils'; -import { Form, Input, Pagination, Radio, Select, Table, message } from 'antd'; -import { useEffect, useState } from 'react'; -import styles from './index.less' - -const { TextArea } = Input; - -export default function Page() { - const [tableData, setTableData] = useState([]); - const [pageNumber, setPageNumber] = useState(1); - const [pageSize, setpageSize] = useState(10); - const [total, setTotal] = useState(0); - const [layer, setLayer] = useState(1); - const [managerSysType, setManagerSysType] = useState(1); - const [content, setContent] = useState(''); - const [form] = Form.useForm(); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - - const columns: any = [ - { title: '单位名称', dataIndex: 'seatName', key: 'seatName', align: 'center' }, - { title: '系统名称', dataIndex: 'sysName', key: 'sysName', align: 'center' }, - { title: '实体标识', dataIndex: 'sysEntityId', key: 'sysEntityId', align: 'center' }, - { title: '310标识', dataIndex: 'sysMarkId', key: 'sysMarkId', align: 'center' }, - { title: '系统型号', dataIndex: 'sysType', key: 'sysType', align: 'center' }, - { title: '管理盘号', dataIndex: 'diskNumber', key: 'diskNumber', align: 'center' }, - { title: '所属网络', dataIndex: 'name', key: 'name', align: 'center' }, - { title: 'Ⅰ型隔离器外网IP', dataIndex: 'isolatorExternalIp', key: 'isolatorExternalIp', align: 'center' }, - { title: '电话号码', dataIndex: 'telephone', key: 'telephone', align: 'center' }, - { title: '联系人', dataIndex: 'contacts', key: 'contacts', align: 'center' }, - { title: '联系方式', dataIndex: 'contactsInfo', key: 'contactsInfo', align: 'center' }, - { title: '席位名称', dataIndex: 'seatName', key: 'seatName', align: 'center' } - ] - - useEffect(() => { - initForm() - }, []) - - useEffect(() => { - getList(); - setSelectedRowKeys([]) - }, [pageNumber]); - - const getList = () => { - managerSystemConfigList({ pageNumber, pageSize }).then((res) => { - if (res?.result == "success") { - setTotal(res.data[0].total) - setTableData(res.data[0].list) - } else { - message.error(res?.errorMsg); - } - }) - } - - const initForm = () => { - form.resetFields() - setManagerSysType(1) - setContent('') - } - - const updateList = () => { - pageNumber == 1 ? getList() : setPageNumber(1); - } - - - const onFinish = (values: any) => { - let params = { - level: layer, - photoUrl: "", - managerSysType, - content, - ...values - } - if (layer == 2) { - params.isolatorIntranetIp = '199.66.33.33' - } - console.log("params", params); - - managerSystemEditOrAdd(params).then((res) => { - if (res?.result == "success") { - message.success('添加成功'); - initForm(); - updateList(); - } else { - message.error(res?.errorMsg); - } - }) - }; - - const pageOnChange = (pageNumber: number) => { - setPageNumber(pageNumber); - } - - const onShowSizeChange = (current: any, pageSize: any) => { - setpageSize(pageSize); - getList(); - } - - - return ( -
-
- -
- { - setLayer(e.target.value) - initForm() - }}> - 上级 - 本级 - 下级 - 专用 - - -
-
级别:{layer}
-
管理系统类型:
- { setManagerSysType(e.target.value) }}> - 密钥分发平台 - 核心区安全隔离器 - -
- - { - (layer == 1 || layer == 2) ? -
-
-
-
- - - - { }} /> -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
- { - layer == 2 && -
- - - - { }} /> -
- } -
-
-
- - - -
- { - layer == 1 && <> -
- - - -
-
- - - -
- - } -
- - - -
-
- - - -
-
- - - -
-
- - - -
-
-
- : -
- } -
-
- -
-
设备照片
-
- -
-
备注
-