浏览日志,操作日志;用户中心(个人信息);用户管理(用户中心)
4 files deleted
13 files added
16 files modified
New file |
| | |
| | | |
| | | { |
| | | "header": { |
| | | "event": "Allocation failed - JavaScript heap out of memory", |
| | | "trigger": "FatalError", |
| | | "filename": "report.20200429.154239.11428.0.001.json", |
| | | "dumpEventTime": "2020-04-29T15:42:39Z", |
| | | "dumpEventTimeStamp": "1588146159494", |
| | | "processId": 11428, |
| | | "cwd": "E:\\HugeInfo_Code\\oa", |
| | | "commandLine": [ |
| | | "node", |
| | | "E:\\HugeInfo_Code\\oa\\node_modules\\_react-app-rewired@2.1.5@react-app-rewired\\scripts\\start.js" |
| | | ], |
| | | "nodejsVersion": "v12.2.0", |
| | | "wordSize": 64, |
| | | "arch": "x64", |
| | | "platform": "win32", |
| | | "componentVersions": { |
| | | "node": "12.2.0", |
| | | "v8": "7.4.288.21-node.17", |
| | | "uv": "1.28.0", |
| | | "zlib": "1.2.11", |
| | | "brotli": "1.0.7", |
| | | "ares": "1.15.0", |
| | | "modules": "72", |
| | | "nghttp2": "1.38.0", |
| | | "napi": "4", |
| | | "llhttp": "1.1.3", |
| | | "http_parser": "2.8.0", |
| | | "openssl": "1.1.1b", |
| | | "cldr": "35.1", |
| | | "icu": "64.2", |
| | | "tz": "2019a", |
| | | "unicode": "12.1" |
| | | }, |
| | | "release": { |
| | | "name": "node", |
| | | "headersUrl": "https://nodejs.org/download/release/v12.2.0/node-v12.2.0-headers.tar.gz", |
| | | "sourceUrl": "https://nodejs.org/download/release/v12.2.0/node-v12.2.0.tar.gz", |
| | | "libUrl": "https://nodejs.org/download/release/v12.2.0/win-x64/node.lib" |
| | | }, |
| | | "osName": "Windows_NT", |
| | | "osRelease": "10.0.18363", |
| | | "osVersion": "Windows 10 Home China", |
| | | "osMachine": "x86_64", |
| | | "host": "LAPTOP-RI7D261L" |
| | | }, |
| | | "javascriptStack": { |
| | | "message": "No stack.", |
| | | "stack": [ |
| | | "Unavailable." |
| | | ] |
| | | }, |
| | | "nativeStack": [ |
| | | { |
| | | "pc": "0x00007ff6cab74e09", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+9161" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cab78764", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+23844" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cab77785", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+19781" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cac5f9ab", |
| | | "symbol": "uv_loop_fork+47931" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6caf971fe", |
| | | "symbol": "v8::internal::Parser::ReportMessageAt+206" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6caf6b27a", |
| | | "symbol": "v8::internal::wasm::StreamingDecoder::NotifyCompilationEnded+666" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cb0016bc", |
| | | "symbol": "v8::internal::Heap::CreateFillerObjectAt+2972" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cb00942f", |
| | | "symbol": "v8::internal::LocalEmbedderHeapTracer::NotifyV8MarkingWorklistWasEmpty+5375" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cafffaa3", |
| | | "symbol": "v8::internal::Heap::CollectGarbage+1235" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6caffe1a4", |
| | | "symbol": "v8::internal::GCTracer::AddScopeSample+1316" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cb03edd3", |
| | | "symbol": "v8::internal::Factory::NewFillerObject+67" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cb3657d6", |
| | | "symbol": "v8::internal::OptimizingCompileDispatcher::Unblock+116966" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff6cb800366", |
| | | "symbol": "v8::internal::NativesCollection<0>::GetScriptsSource+660214" |
| | | } |
| | | ], |
| | | "javascriptHeap": { |
| | | "totalMemory": 2157289472, |
| | | "totalCommittedMemory": 2157289472, |
| | | "usedMemory": 1853721280, |
| | | "availableMemory": 75007304, |
| | | "memoryLimit": 2197815296, |
| | | "heapSpaces": { |
| | | "read_only_space": { |
| | | "memorySize": 524288, |
| | | "committedMemory": 524288, |
| | | "capacity": 523976, |
| | | "used": 31712, |
| | | "available": 492264 |
| | | }, |
| | | "new_space": { |
| | | "memorySize": 33554432, |
| | | "committedMemory": 33554432, |
| | | "capacity": 16767232, |
| | | "used": 2275576, |
| | | "available": 14491656 |
| | | }, |
| | | "old_space": { |
| | | "memorySize": 1983504384, |
| | | "committedMemory": 1983504384, |
| | | "capacity": 1717265352, |
| | | "used": 1714535024, |
| | | "available": 2730328 |
| | | }, |
| | | "code_space": { |
| | | "memorySize": 3833856, |
| | | "committedMemory": 3833856, |
| | | "capacity": 3185248, |
| | | "used": 3185248, |
| | | "available": 0 |
| | | }, |
| | | "map_space": { |
| | | "memorySize": 5246976, |
| | | "committedMemory": 5246976, |
| | | "capacity": 3255600, |
| | | "used": 3255600, |
| | | "available": 0 |
| | | }, |
| | | "large_object_space": { |
| | | "memorySize": 130002944, |
| | | "committedMemory": 130002944, |
| | | "capacity": 129887816, |
| | | "used": 129887816, |
| | | "available": 0 |
| | | }, |
| | | "code_large_object_space": { |
| | | "memorySize": 622592, |
| | | "committedMemory": 622592, |
| | | "capacity": 550304, |
| | | "used": 550304, |
| | | "available": 0 |
| | | }, |
| | | "new_large_object_space": { |
| | | "memorySize": 0, |
| | | "committedMemory": 0, |
| | | "capacity": 16767232, |
| | | "used": 0, |
| | | "available": 16767232 |
| | | } |
| | | } |
| | | }, |
| | | "resourceUsage": { |
| | | "userCpuSeconds": 365.906, |
| | | "kernelCpuSeconds": 204.828, |
| | | "cpuConsumptionPercent": 11.2438, |
| | | "maxRss": 2718556160, |
| | | "pageFaults": { |
| | | "IORequired": 2805436, |
| | | "IONotRequired": 0 |
| | | }, |
| | | "fsActivity": { |
| | | "reads": 10538, |
| | | "writes": 349 |
| | | } |
| | | }, |
| | | "libuv": [ |
| | | ], |
| | | "environmentVariables": { |
| | | "=C:": "C:\\", |
| | | "ALLUSERSPROFILE": "C:\\ProgramData", |
| | | "APPDATA": "C:\\Users\\Mr Ke\\AppData\\Roaming", |
| | | "AUTHORINFO": "\"Ke Liqin <545800322@qq.com>\"", |
| | | "BABEL_ENV": "development", |
| | | "CLASSPATH": ".;C:\\Program Files\\Java\\jdk1.8.0_131\\lib;C:\\Program Files\\Java\\jdk1.8.0_131\\lib\\tools.jar", |
| | | "COLORTERM": "truecolor", |
| | | "CommonProgramFiles": "C:\\Program Files\\Common Files", |
| | | "CommonProgramFiles(x86)": "C:\\Program Files (x86)\\Common Files", |
| | | "CommonProgramW6432": "C:\\Program Files\\Common Files", |
| | | "COMPUTERNAME": "LAPTOP-RI7D261L", |
| | | "ComSpec": "C:\\WINDOWS\\system32\\cmd.exe", |
| | | "configsetroot": "C:\\WINDOWS\\ConfigSetRoot", |
| | | "DriverData": "C:\\Windows\\System32\\Drivers\\DriverData", |
| | | "FPS_BROWSER_APP_PROFILE_STRING": "Internet Explorer", |
| | | "FPS_BROWSER_USER_PROFILE_STRING": "Default", |
| | | "HOME": "C:\\Users\\Mr Ke", |
| | | "HOMEDRIVE": "C:", |
| | | "HOMEPATH": "\\Users\\Mr Ke", |
| | | "INIT_CWD": "E:\\HugeInfo_Code\\oa", |
| | | "JAVA_HOME": "C:\\Program Files\\Java\\jdk1.8.0_131", |
| | | "LANG": "zh_CN.UTF-8", |
| | | "LOCALAPPDATA": "C:\\Users\\Mr Ke\\AppData\\Local", |
| | | "LOGONSERVER": "\\\\LAPTOP-RI7D261L", |
| | | "NODE": "C:\\Program Files\\nodejs\\node.exe", |
| | | "NODE_ENV": "development", |
| | | "NODE_EXE": "C:\\Program Files\\nodejs\\\\node.exe", |
| | | "NODE_PATH": "", |
| | | "NPM_CLI_JS": "C:\\Program Files\\nodejs\\\\node_modules\\npm\\bin\\npm-cli.js", |
| | | "npm_config_access": "", |
| | | "npm_config_allow_same_version": "", |
| | | "npm_config_also": "", |
| | | "npm_config_always_auth": "", |
| | | "npm_config_argv": "{\"remain\":[],\"cooked\":[\"start\"],\"original\":[\"start\"]}", |
| | | "npm_config_audit": "true", |
| | | "npm_config_audit_level": "low", |
| | | "npm_config_auth_type": "legacy", |
| | | "npm_config_before": "", |
| | | "npm_config_bin_links": "true", |
| | | "npm_config_browser": "", |
| | | "npm_config_ca": "", |
| | | "npm_config_cache": "C:\\Users\\Mr Ke\\AppData\\Roaming\\npm-cache", |
| | | "npm_config_cache_lock_retries": "10", |
| | | "npm_config_cache_lock_stale": "60000", |
| | | "npm_config_cache_lock_wait": "10000", |
| | | "npm_config_cache_max": "Infinity", |
| | | "npm_config_cache_min": "10", |
| | | "npm_config_cafile": "", |
| | | "npm_config_cert": "", |
| | | "npm_config_cidr": "", |
| | | "npm_config_color": "true", |
| | | "npm_config_commit_hooks": "true", |
| | | "npm_config_depth": "Infinity", |
| | | "npm_config_description": "true", |
| | | "npm_config_dev": "", |
| | | "npm_config_disturl": "https://npm.taobao.org/dist", |
| | | "npm_config_dry_run": "", |
| | | "npm_config_editor": "notepad.exe", |
| | | "npm_config_engine_strict": "", |
| | | "npm_config_fetch_retries": "2", |
| | | "npm_config_fetch_retry_factor": "10", |
| | | "npm_config_fetch_retry_maxtimeout": "60000", |
| | | "npm_config_fetch_retry_mintimeout": "10000", |
| | | "npm_config_force": "", |
| | | "npm_config_git": "git", |
| | | "npm_config_git_tag_version": "true", |
| | | "npm_config_global": "", |
| | | "npm_config_globalconfig": "C:\\Users\\Mr Ke\\AppData\\Roaming\\npm\\etc\\npmrc", |
| | | "npm_config_globalignorefile": "C:\\Users\\Mr Ke\\AppData\\Roaming\\npm\\etc\\npmignore", |
| | | "npm_config_global_style": "", |
| | | "npm_config_group": "", |
| | | "npm_config_ham_it_up": "", |
| | | "npm_config_heading": "npm", |
| | | "npm_config_https_proxy": "", |
| | | "npm_config_if_present": "", |
| | | "npm_config_ignore_prepublish": "", |
| | | "npm_config_ignore_scripts": "", |
| | | "npm_config_init_author_email": "", |
| | | "npm_config_init_author_name": "", |
| | | "npm_config_init_author_url": "", |
| | | "npm_config_init_license": "ISC", |
| | | "npm_config_init_module": "C:\\Users\\Mr Ke\\.npm-init.js", |
| | | "npm_config_init_version": "1.0.0", |
| | | "npm_config_json": "", |
| | | "npm_config_key": "", |
| | | "npm_config_legacy_bundling": "", |
| | | "npm_config_link": "", |
| | | "npm_config_local_address": "", |
| | | "npm_config_loglevel": "notice", |
| | | "npm_config_logs_max": "10", |
| | | "npm_config_long": "", |
| | | "npm_config_maxsockets": "50", |
| | | "npm_config_message": "%s", |
| | | "npm_config_metrics_registry": "https://registry.npm.taobao.org/", |
| | | "npm_config_node_gyp": "C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm\\v12.2.0\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js", |
| | | "npm_config_node_options": "", |
| | | "npm_config_node_version": "12.2.0", |
| | | "npm_config_noproxy": "", |
| | | "npm_config_offline": "", |
| | | "npm_config_onload_script": "", |
| | | "npm_config_only": "", |
| | | "npm_config_optional": "true", |
| | | "npm_config_otp": "", |
| | | "npm_config_package_lock": "true", |
| | | "npm_config_package_lock_only": "", |
| | | "npm_config_parseable": "", |
| | | "npm_config_prefer_offline": "", |
| | | "npm_config_prefer_online": "", |
| | | "npm_config_prefix": "C:\\Users\\Mr Ke\\AppData\\Roaming\\npm", |
| | | "npm_config_preid": "", |
| | | "npm_config_production": "", |
| | | "npm_config_progress": "true", |
| | | "npm_config_proxy": "", |
| | | "npm_config_read_only": "", |
| | | "npm_config_rebuild_bundle": "true", |
| | | "npm_config_registry": "https://registry.npm.taobao.org/", |
| | | "npm_config_rollback": "true", |
| | | "npm_config_save": "true", |
| | | "npm_config_save_bundle": "", |
| | | "npm_config_save_dev": "", |
| | | "npm_config_save_exact": "", |
| | | "npm_config_save_optional": "", |
| | | "npm_config_save_prefix": "^", |
| | | "npm_config_save_prod": "", |
| | | "npm_config_scope": "", |
| | | "npm_config_scripts_prepend_node_path": "warn-only", |
| | | "npm_config_script_shell": "", |
| | | "npm_config_searchexclude": "", |
| | | "npm_config_searchlimit": "20", |
| | | "npm_config_searchopts": "", |
| | | "npm_config_searchstaleness": "900", |
| | | "npm_config_send_metrics": "", |
| | | "npm_config_shell": "C:\\WINDOWS\\system32\\cmd.exe", |
| | | "npm_config_shrinkwrap": "true", |
| | | "npm_config_sign_git_commit": "", |
| | | "npm_config_sign_git_tag": "", |
| | | "npm_config_sso_poll_frequency": "500", |
| | | "npm_config_sso_type": "oauth", |
| | | "npm_config_strict_ssl": "true", |
| | | "npm_config_tag": "latest", |
| | | "npm_config_tag_version_prefix": "v", |
| | | "npm_config_timing": "", |
| | | "npm_config_tmp": "C:\\Users\\MRKE~1\\AppData\\Local\\Temp", |
| | | "npm_config_umask": "0000", |
| | | "npm_config_unicode": "", |
| | | "npm_config_unsafe_perm": "true", |
| | | "npm_config_update_notifier": "true", |
| | | "npm_config_usage": "", |
| | | "npm_config_user": "", |
| | | "npm_config_userconfig": "C:\\Users\\Mr Ke\\.npmrc", |
| | | "npm_config_user_agent": "npm/6.9.0 node/v12.2.0 win32 x64", |
| | | "npm_config_version": "", |
| | | "npm_config_versions": "", |
| | | "npm_config_viewer": "browser", |
| | | "npm_execpath": "C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm\\v12.2.0\\node_modules\\npm\\bin\\npm-cli.js", |
| | | "npm_lifecycle_event": "start", |
| | | "npm_lifecycle_script": "react-app-rewired start", |
| | | "npm_node_execpath": "C:\\Program Files\\nodejs\\node.exe", |
| | | "npm_package_browserslist_development_0": "ie 8", |
| | | "npm_package_browserslist_development_1": "last 1 chrome version", |
| | | "npm_package_browserslist_development_2": "last 1 firefox version", |
| | | "npm_package_browserslist_development_3": "last 1 safari version", |
| | | "npm_package_browserslist_production_0": ">0.2%", |
| | | "npm_package_browserslist_production_1": "not dead", |
| | | "npm_package_browserslist_production_2": "not op_mini all", |
| | | "npm_package_dependencies_antd": "^3.26.11", |
| | | "npm_package_dependencies_axios": "^0.19.2", |
| | | "npm_package_dependencies_braft_editor": "^2.3.9", |
| | | "npm_package_dependencies_mocker_api": "^1.9.0", |
| | | "npm_package_dependencies_node_sass": "^4.13.1", |
| | | "npm_package_dependencies_react": "^16.12.0", |
| | | "npm_package_dependencies_react_app_polyfill": "^1.0.6", |
| | | "npm_package_dependencies_react_dom": "^16.12.0", |
| | | "npm_package_dependencies_react_router_dom": "^5.1.2", |
| | | "npm_package_dependencies_react_scripts": "3.4.0", |
| | | "npm_package_dependencies_sass_loader": "^8.0.2", |
| | | "npm_package_dependencies_wangeditor": "^3.1.1", |
| | | "npm_package_dependencies__testing_library_jest_dom": "^4.2.4", |
| | | "npm_package_dependencies__testing_library_react": "^9.3.2", |
| | | "npm_package_dependencies__testing_library_user_event": "^7.1.2", |
| | | "npm_package_description": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).", |
| | | "npm_package_devDependencies_babel_plugin_import": "^1.13.0", |
| | | "npm_package_devDependencies_customize_cra": "^0.9.1", |
| | | "npm_package_devDependencies_es6_promise": "^4.2.8", |
| | | "npm_package_devDependencies_less": "^3.11.1", |
| | | "npm_package_devDependencies_less_loader": "^5.0.0", |
| | | "npm_package_devDependencies_mockjs": "^1.0.1-beta3", |
| | | "npm_package_devDependencies_moment": "^2.24.0", |
| | | "npm_package_devDependencies_react_app_rewired": "^2.1.5", |
| | | "npm_package_devDependencies__babel_plugin_proposal_class_properties": "^7.8.3", |
| | | "npm_package_eslintConfig_extends": "react-app", |
| | | "npm_package_gitHead": "c0c820559b46f3a5ede6fbd7f66e77d09981829f", |
| | | "npm_package_homepage": "http://.", |
| | | "npm_package_name": "my-app", |
| | | "npm_package_private": "true", |
| | | "npm_package_readmeFilename": "README.md", |
| | | "npm_package_scripts_build": "react-app-rewired build", |
| | | "npm_package_scripts_eject": "react-app-rewired eject", |
| | | "npm_package_scripts_mock": "mocker ./mock", |
| | | "npm_package_scripts_page": "node .pjcode/page", |
| | | "npm_package_scripts_start": "react-app-rewired start", |
| | | "npm_package_scripts_test": "react-app-rewired test", |
| | | "npm_package_scripts_view": "node .pjcode/view", |
| | | "npm_package_version": "0.1.0", |
| | | "NPM_PREFIX_NPM_CLI_JS": "C:\\Users\\Mr Ke\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js", |
| | | "NUMBER_OF_PROCESSORS": "8", |
| | | "NVM_HOME": "C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm", |
| | | "NVM_SYMLINK": "C:\\Program Files\\nodejs", |
| | | "OneDrive": "C:\\Users\\Mr Ke\\OneDrive", |
| | | "OS": "Windows_NT", |
| | | "Path": "C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm\\v12.2.0\\node_modules\\npm\\node_modules\\npm-lifecycle\\node-gyp-bin;E:\\HugeInfo_Code\\oa\\node_modules\\.bin;C:\\ProgramData\\Oracle\\Java\\javapath;D:\\Program Files\\Git\\cmd;C:\\Windows\\System32;C:\\Program Files (x86)\\Common Files\\Thunder Network\\KanKan\\Codecs;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;\"C:\\Program Files\\Java\\jdk1.8.0_131\\bin;C:\\Program Files\\Java\\jdk1.8.0_131\\jre\\bin\";C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;D:\\Program Files\\Yarn\\bin\\;C:\\Program Files\\TortoiseSVN\\bin;C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs;C:\\Users\\Mr Ke\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\;C:\\Users\\Mr Ke\\AppData\\Local\\Programs\\Python\\Python37\\;C:\\Users\\Mr Ke\\AppData\\Local\\Microsoft\\WindowsApps;D:\\Program Files\\Microsoft VS Code\\bin;C:\\Users\\Mr Ke\\AppData\\Local\\BypassRuntm;C:\\Users\\Mr Ke\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\Mr Ke\\AppData\\Local\\Yarn\\bin;C:\\Users\\Mr Ke\\AppData\\Roaming\\npm;C:\\Users\\Mr Ke\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs", |
| | | "PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JSE;.WSF;.WSH;.MSC;.CPL", |
| | | "PROCESSOR_ARCHITECTURE": "AMD64", |
| | | "PROCESSOR_IDENTIFIER": "Intel64 Family 6 Model 158 Stepping 10, GenuineIntel", |
| | | "PROCESSOR_LEVEL": "6", |
| | | "PROCESSOR_REVISION": "9e0a", |
| | | "ProgramData": "C:\\ProgramData", |
| | | "ProgramFiles": "C:\\Program Files", |
| | | "ProgramFiles(x86)": "C:\\Program Files (x86)", |
| | | "ProgramW6432": "C:\\Program Files", |
| | | "PROMPT": "$P$G", |
| | | "PSModulePath": "C:\\Users\\Mr Ke\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules", |
| | | "PUBLIC": "C:\\Users\\Public", |
| | | "REACT_APP_CODER": "liuwh", |
| | | "REACT_APP_EMAIL": "", |
| | | "SESSIONNAME": "Console", |
| | | "SystemDrive": "C:", |
| | | "SystemRoot": "C:\\WINDOWS", |
| | | "TEMP": "C:\\Users\\MRKE~1\\AppData\\Local\\Temp", |
| | | "TERM_PROGRAM": "vscode", |
| | | "TERM_PROGRAM_VERSION": "1.44.2", |
| | | "TMP": "C:\\Users\\MRKE~1\\AppData\\Local\\Temp", |
| | | "USERDOMAIN": "LAPTOP-RI7D261L", |
| | | "USERDOMAIN_ROAMINGPROFILE": "LAPTOP-RI7D261L", |
| | | "USERNAME": "Mr Ke", |
| | | "USERPROFILE": "C:\\Users\\Mr Ke", |
| | | "WEBPACK_DEV_SERVER": "true", |
| | | "windir": "C:\\WINDOWS" |
| | | }, |
| | | "sharedObjects": [ |
| | | "C:\\Program Files\\nodejs\\node.exe", |
| | | "C:\\WINDOWS\\SYSTEM32\\ntdll.dll", |
| | | "C:\\WINDOWS\\System32\\KERNEL32.DLL", |
| | | "C:\\WINDOWS\\System32\\KERNELBASE.dll", |
| | | "C:\\WINDOWS\\System32\\WS2_32.dll", |
| | | "C:\\WINDOWS\\System32\\RPCRT4.dll", |
| | | "C:\\WINDOWS\\System32\\ADVAPI32.dll", |
| | | "C:\\WINDOWS\\System32\\msvcrt.dll", |
| | | "C:\\WINDOWS\\System32\\sechost.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\dbghelp.dll", |
| | | "C:\\WINDOWS\\System32\\USER32.dll", |
| | | "C:\\WINDOWS\\System32\\ucrtbase.dll", |
| | | "C:\\WINDOWS\\System32\\win32u.dll", |
| | | "C:\\WINDOWS\\System32\\GDI32.dll", |
| | | "C:\\WINDOWS\\System32\\gdi32full.dll", |
| | | "C:\\WINDOWS\\System32\\msvcp_win.dll", |
| | | "C:\\WINDOWS\\System32\\PSAPI.DLL", |
| | | "C:\\WINDOWS\\System32\\CRYPT32.dll", |
| | | "C:\\WINDOWS\\System32\\MSASN1.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\IPHLPAPI.DLL", |
| | | "C:\\WINDOWS\\SYSTEM32\\USERENV.dll", |
| | | "C:\\WINDOWS\\System32\\bcrypt.dll", |
| | | "C:\\WINDOWS\\System32\\profapi.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\WINMM.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\winmmbase.dll", |
| | | "C:\\WINDOWS\\System32\\cfgmgr32.dll", |
| | | "C:\\WINDOWS\\System32\\bcryptPrimitives.dll", |
| | | "C:\\WINDOWS\\System32\\IMM32.DLL", |
| | | "C:\\WINDOWS\\System32\\powrprof.dll", |
| | | "C:\\WINDOWS\\System32\\UMPDC.dll", |
| | | "C:\\WINDOWS\\system32\\uxtheme.dll", |
| | | "C:\\WINDOWS\\System32\\combase.dll", |
| | | "C:\\WINDOWS\\system32\\mswsock.dll", |
| | | "C:\\WINDOWS\\System32\\kernel.appcore.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\CRYPTBASE.DLL", |
| | | "C:\\WINDOWS\\System32\\NSI.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\dhcpcsvc6.DLL", |
| | | "C:\\WINDOWS\\SYSTEM32\\dhcpcsvc.DLL", |
| | | "C:\\WINDOWS\\SYSTEM32\\DNSAPI.dll", |
| | | "C:\\WINDOWS\\system32\\napinsp.dll", |
| | | "C:\\WINDOWS\\system32\\pnrpnsp.dll", |
| | | "C:\\WINDOWS\\System32\\winrnr.dll", |
| | | "C:\\WINDOWS\\system32\\NLAapi.dll", |
| | | "C:\\WINDOWS\\system32\\wshbth.dll", |
| | | "C:\\Windows\\System32\\rasadhlp.dll", |
| | | "C:\\WINDOWS\\System32\\fwpuclnt.dll", |
| | | "\\\\?\\E:\\HugeInfo_Code\\oa\\node_modules\\_node-sass@4.13.1@node-sass\\vendor\\win32-x64-72\\binding.node" |
| | | ] |
| | | } |
| | |
| | | //内网测试地址 |
| | | // let StagingUrl = 'http://192.168.0.105:9072'; |
| | | let StagingUrl = "http://120.79.193.119:9072"; |
| | | let StagingUrl = 'http://192.168.0.116:9072'; |
| | | // let StagingUrl = "http://120.79.193.119:9072"; |
| | | |
| | | |
| | | //mock地址 |
New file |
| | |
| | | import React from 'react'; |
| | | import { Form, Row, Col, Input, DatePicker, Button, Modal, } from 'antd'; |
| | | |
| | | import './index.scss'; |
| | | |
| | | class ChangePswView extends React.Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.state = { |
| | | |
| | | }; |
| | | } |
| | | |
| | | onSubmitChangePsw = e => { |
| | | this.props.form.validateFields((err, data) => { |
| | | if (!err) { |
| | | console.log('data', data); |
| | | this.props.onOK({ |
| | | ...data, |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | render() { |
| | | const { changePswVisible, onCancel, btnLoading } = this.props; |
| | | const { getFieldDecorator, getFieldValue } = this.props.form; |
| | | const formItemLayout = { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 }, |
| | | }, |
| | | }; |
| | | const rules = [ |
| | | { |
| | | pattern: /^[-_a-z0-9]{6,}$/i, |
| | | message: '长度不少于6的数字字母“-”或“_”', |
| | | }, |
| | | { |
| | | pattern: /[-_a-z]/, |
| | | message: '必须包含字母“-”或“_”', |
| | | }, |
| | | ]; |
| | | |
| | | return ( |
| | | <Modal |
| | | destroyOnClose |
| | | title="修改密码" |
| | | visible={true} |
| | | footer={null} |
| | | onCancel={onCancel}> |
| | | <Form onSubmit={this.onSubmitChangePsw} style={{ padding: '20px 20px 0 20px' }}> |
| | | <Form.Item label="新密码" {...formItemLayout} > |
| | | {getFieldDecorator('newPassWord', { |
| | | rules: [{ required: true, message: '请输入新密码' }], |
| | | })(<Input type="password" placeholder="请输入新密码" />)} |
| | | </Form.Item> |
| | | <Form.Item label="重复新密码" {...formItemLayout} > |
| | | {getFieldDecorator('_newPword', { |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | validator(_, value, callback) { |
| | | if (value != getFieldValue('newPassWord')) { |
| | | callback('两次密码输入不一致'); |
| | | } |
| | | callback(); |
| | | }, |
| | | }, |
| | | ], |
| | | })( |
| | | <Input |
| | | type="password" |
| | | placeholder="重复新密码" |
| | | /> |
| | | )} |
| | | </Form.Item> |
| | | <Form.Item> |
| | | <Row |
| | | type="flex" |
| | | gutter={20} |
| | | justify="end" |
| | | style={{ marginTop: '20px' }}> |
| | | <Col> |
| | | <Button onClick={onCancel}>取消</Button> |
| | | </Col> |
| | | <Col> |
| | | <Button type="primary" htmlType="submit" loding={btnLoading}> |
| | | 确定 |
| | | </Button> |
| | | </Col> |
| | | </Row> |
| | | </Form.Item> |
| | | </Form> |
| | | </Modal> |
| | | ); |
| | | } |
| | | } |
| | | |
| | | const ChangePswViewForm = Form.create()(ChangePswView); |
| | | export default ChangePswViewForm; |
New file |
| | |
| | | import React from 'react'; |
| | | import Component from './index'; |
| | | export default class App extends React.Component { |
| | | // constructor(props) { |
| | | // super(props); |
| | | // this.state = { }; |
| | | // } |
| | | |
| | | render() { |
| | | return ( |
| | | <div> |
| | | <Component /> |
| | | </div> |
| | | ); |
| | | } |
| | | |
| | | } |
| | |
| | | /** Happy Coding */ |
| | | import React, { ReactNode, ReactEventHandler, Component, useEffect, useState } from 'react'; |
| | | // import { Link } from 'react-router-dom'; |
| | | import { Icon, Tabs, Avatar, Spin } from 'antd'; |
| | | import { Icon, Tabs, Avatar, Spin, Empty } from 'antd'; |
| | | import './index.scss'; |
| | | const { TabPane } = Tabs; |
| | | import fetch from '../../../api/request'; |
| | |
| | | data1.map((a) => ( |
| | | <div className="flex-box-row align-center space-between modal-list-item" key={a.id}> |
| | | <span className="modal-label">{a.noticeUserName || '无'}</span> |
| | | <span className="modal-time">{a.createTime ? moment(a.createTime).format("YYYY-MM-DD HH:mm") : '无'}</span> |
| | | </div> |
| | | )) |
| | | } |
| | | { |
| | | data1.length == 0 && <Empty /> |
| | | } |
| | | </div> |
| | | </Spin> |
| | |
| | | data2.map((a) => ( |
| | | <div className="flex-box-row align-center space-between modal-list-item" key={a.id}> |
| | | <span className="modal-label">{a.noticeUserName || '无'}</span> |
| | | <span className="modal-time">{a.createTime ? moment(a.createTime).format("YYYY-MM-DD HH:mm") : '无'}</span> |
| | | <span className="modal-time">{a.updateTime ? moment(a.updateTime).format("YYYY-MM-DD HH:mm:ss") : '无'}</span> |
| | | </div> |
| | | )) |
| | | } |
| | | { |
| | | data2.length == 0 && <Empty /> |
| | | } |
| | | </div> |
| | | </Spin> |
| | | </TabPane> |
| | |
| | | |
| | | var loginUser = window.localStorage.getItem('loginUser') || '{}'; |
| | | loginUser = JSON.parse(loginUser); |
| | | console.log(loginUser) |
| | | |
| | | return ( |
| | | <Header style={{ background: '#fff', padding: 0, boxShadow: 'inset 0 -1px 0 0 #E5E5E5' }}> |
| | | { |
| | |
| | | fetch({ |
| | | url: `api/news/keywordlist` |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | this.setState({ |
| | | loading: false |
| | | }) |
| | |
| | | } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | |
| | | fetch({ |
| | | url: `api/document/getNewNotice` |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | this.setState({ |
| | | content: res.documentTitle || '' |
| | | }) |
| | | if( res ) { |
| | | this.setState({ |
| | | content: res.documentTitle || '' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | |
| | | render() { |
| | | const { formData = {}, data = [], children } = this.props; |
| | | let size = 'default'; |
| | | |
| | | return ( |
| | | <div className="search-form-view-main"> |
| | |
| | | return ( |
| | | <Form.Item label={item.label}> |
| | | <Select |
| | | size="small" |
| | | size={size} |
| | | style={{ width: '100%' }} |
| | | placeholder={item.name} |
| | | value={formData[item.key]} |
| | |
| | | return ( |
| | | <Form.Item label={item.label}> |
| | | <Input |
| | | size="small" |
| | | size={size} |
| | | placeholder={item.name} |
| | | name={item.key} |
| | | value={formData[item.key]} |
| | |
| | | return ( |
| | | <Form.Item label={item.label}> |
| | | <DatePicker |
| | | size="small" |
| | | size={size} |
| | | style={{ width: '100%' }} |
| | | placeholder={item.name} |
| | | onChange={(date, dateString) => { |
| | |
| | | <Form.Item label={item.label}> |
| | | <RangePicker |
| | | style={{ width: '100%'}} |
| | | size="small" |
| | | size={size} |
| | | ranges={{ |
| | | Today: [moment(), moment()], |
| | | 'This Month': [ |
| | |
| | | <Row type="flex" gutter={20} align="middle" align="middle" style={{ height: 40 }}> |
| | | <Col> |
| | | <Button |
| | | size="small" |
| | | size={size} |
| | | type="primary" |
| | | onClick={() => { |
| | | this.onClick('search'); |
| | |
| | | </Col> |
| | | <Col> |
| | | <Button |
| | | size="small" |
| | | size={size} |
| | | onClick={() => { |
| | | this.onClick('reset'); |
| | | }}> |
| | |
| | | fetch({ |
| | | url: `api/merits/queryMerits` |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | this.setState({ |
| | | topList: [ |
| | | { ...tag['latenessRanking'], dataSource: res['latenessRanking'] }, |
| | | { ...tag['meritsRanking'], dataSource: res['meritsRanking'] }, |
| | | { ...tag['defectRanking'], dataSource: res['defectRanking'] }, |
| | | ] |
| | | }) |
| | | if( res) { |
| | | this.setState({ |
| | | topList: [ |
| | | { ...tag['latenessRanking'], dataSource: res['latenessRanking'] }, |
| | | { ...tag['meritsRanking'], dataSource: res['meritsRanking'] }, |
| | | { ...tag['defectRanking'], dataSource: res['defectRanking'] }, |
| | | ] |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | |
| | | render() { |
| | | let { topList } = this.state; |
| | | console.log(topList) |
| | | return ( |
| | | <div className="top-list-table-view-main"> |
| | | <Row type="flex" gutter={12}> |
| | |
| | | return this.emoveTAG(cur) |
| | | } |
| | | }, |
| | | { title: '接受情况', dataIndex: 'groupType', render: (cur, item) => <a onClick={() => { this.setState({ visible: true, documentId: item.id }) }}><span>{item.readNumber || 0}/{item.noticeNumber || 0}</span></a> }, |
| | | { title: '接受情况', dataIndex: 'groupType', render: (cur, item) => <a onClick={() => { this.setState({ visible: true, documentId: item.id, curItem: item }) }}><span>{item.readNumber || 0}/{item.noticeNumber || 0}</span></a> }, |
| | | { title: '通知时间', dataIndex: 'createTime', render: (cur, item) => cur !== "" && cur != null ? moment(cur).format("YYYY-MM-DD HH:mm") : "" }, |
| | | { title: '操作', render: (text, record) => <a onClick={() => this.link(record.id)}>查看</a> } |
| | | ]; |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { formData, documentId, visible } = this.state; |
| | | const { formData, documentId, visible, curItem } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/document/getNotice`, |
| | |
| | | visible={visible} |
| | | onCancel={() => this.setState({ visible: false })} |
| | | footer={null} |
| | | title="接收情况" |
| | | title={<div> |
| | | {curItem ? curItem.documentTitle : '接受情况'} |
| | | </div>} |
| | | > |
| | | { |
| | | documentId && |
| | |
| | | showUploadList: { showPreviewIcon: true, showDownloadIcon: false, showRemoveIcon: disabled ? false : true } |
| | | }; |
| | | |
| | | //指定编辑器工具栏的控件列表 |
| | | const controls = ['undo', 'redo', 'separator', |
| | | 'headings', 'separator', 'font-size', 'line-height', 'letter-spacing', 'separator', |
| | | 'text-color', 'bold', 'italic', 'underline', 'strike-through', 'separator', 'text-indent', 'text-align', 'separator', |
| | |
| | | return cur ? this.emoveTAG(cur) : '无' |
| | | } |
| | | }, |
| | | { title: '接受情况', dataIndex: 'groupType', render: (cur, item) => <a onClick={() => { this.setState({ visible: true, documentId: item.id }) }}> <span>{item.readNumber || 0}/{item.noticeNumber || 0}</span></a> }, |
| | | { title: '接受情况', dataIndex: 'groupType', render: (cur, item) => <a onClick={() => { this.setState({ visible: true, documentId: item.id, curItem: item }) }}> <span>{item.readNumber || 0}/{item.noticeNumber || 0}</span></a> }, |
| | | { title: '发布时间', dataIndex: 'createTime', render: (cur, item) => cur !== "" && cur != null ? moment(cur).format("YYYY-MM-DD HH:mm") : "" }, |
| | | { title: '操作', render: (text, record) => <a onClick={() => this.link(record.id)}>查看</a> } |
| | | ]; |
| | |
| | | |
| | | |
| | | render() { |
| | | const { formData, visible, documentId } = this.state; |
| | | const { formData, visible, documentId, curItem } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/document/getNotice`, |
| | |
| | | visible={visible} |
| | | onCancel={() => this.setState({ visible: false })} |
| | | footer={null} |
| | | title="接收情况" |
| | | title={<div > |
| | | {curItem ? curItem.documentTitle : '接受情况'} |
| | | </div>} |
| | | > |
| | | { |
| | | documentId && |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 4/29/2020, 2:21:33 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 浏览日志 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Badge } from 'antd'; |
| | | import TableView from '../../../common/TableView'; |
| | | import SearchFormView from '../../../common/SearchFormView'; |
| | | import './index.scss'; |
| | | import moment from 'moment'; |
| | | |
| | | export default class BrowseLog extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | formData: { |
| | | __key: Date.now(), |
| | | page: 1, |
| | | size: 10, |
| | | keyWord: '' |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '序号', dataIndex: 'index' }, |
| | | { title: '浏览者', dataIndex: 'userName' }, |
| | | { title: '浏览模块', dataIndex: 'moduleName' }, |
| | | { title: '浏览功能', dataIndex: 'functionName' }, |
| | | { title: '浏览描述', dataIndex: 'operDesc' }, |
| | | { |
| | | title: '浏览日期', dataIndex: 'createTime', render: (cur, item) => { |
| | | return cur ? moment(cur).format("YYYY-MM-DD HH:mm") : "" |
| | | } |
| | | }, |
| | | { title: 'IP地址', dataIndex: 'operIp' }, |
| | | { title: '访问终端', dataIndex: 'operTerminal' }, |
| | | { title: '访问浏览器', dataIndex: 'operBrowser' }, |
| | | { title: '状态', dataIndex: 'operStatus', render: (cur, item)=> { |
| | | return this.operStatus(cur) |
| | | }} |
| | | ]; |
| | | } |
| | | |
| | | operStatus = (status) => { |
| | | switch (status) { |
| | | case '1': |
| | | return <Badge count={'成功'} style={{ backgroundColor: '#52c41a' }}/> |
| | | case '99': |
| | | return <Badge count={'失败'} /> |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { formData } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/log/queryLog`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: { |
| | | logType: '1', |
| | | }, |
| | | setFormData: this.setFormData |
| | | } |
| | | |
| | | return ( |
| | | <div className="browse-log-main"> |
| | | <SearchFormView |
| | | formData={formData} |
| | | setFormData={this.setFormData} |
| | | data={[ |
| | | { type: 'input', name: '关键字', label: '关键字', key: 'keyWord' }, |
| | | { |
| | | type: 'rangePicker', |
| | | label: '浏览时间', |
| | | name: JSON.stringify(['开始时间', '结束时间']), |
| | | key: JSON.stringify(['startTime', 'endTime']), |
| | | keylistName: 'rangeTimelist', |
| | | }, |
| | | ]} /> |
| | | <TableView {...tableParams} /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 4/29/2020, 2:21:33 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .browse-log { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /** kelq |
| | | * 4/29/2020, 3:51:53 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 操作日志 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Badge } from 'antd'; |
| | | import TableView from '../../../common/TableView'; |
| | | import SearchFormView from '../../../common/SearchFormView'; |
| | | import './index.scss'; |
| | | import moment from 'moment'; |
| | | |
| | | import './index.scss'; |
| | | |
| | | export default class OperLog extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | formData: { |
| | | __key: Date.now(), |
| | | page: 1, |
| | | size: 10, |
| | | keyWord: '' |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '序号', dataIndex: 'index' }, |
| | | { title: '操作者', dataIndex: 'userName' }, |
| | | { title: '操作模块', dataIndex: 'moduleName' }, |
| | | { title: '操作功能', dataIndex: 'functionName' }, |
| | | { title: '操作描述', dataIndex: 'operDesc' }, |
| | | { |
| | | title: '操作日期', dataIndex: 'createTime', render: (cur, item) => { |
| | | return cur ? moment(cur).format("YYYY-MM-DD HH:mm") : "" |
| | | } |
| | | }, |
| | | { title: 'IP地址', dataIndex: 'operIp' }, |
| | | { title: '访问终端', dataIndex: 'operTerminal' }, |
| | | { title: '访问浏览器', dataIndex: 'operBrowser' }, |
| | | { |
| | | title: '状态', dataIndex: 'operStatus', render: (cur, item) => { |
| | | return this.operStatus(cur) |
| | | } |
| | | } |
| | | ]; |
| | | } |
| | | |
| | | operStatus = (status) => { |
| | | switch (status) { |
| | | case '1': |
| | | return <Badge count={'成功'} style={{ backgroundColor: '#52c41a' }}/> |
| | | case '99': |
| | | return <Badge count={'失败'} /> |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { formData } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/log/queryLog`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: { |
| | | logType: '2', |
| | | }, |
| | | setFormData: this.setFormData |
| | | } |
| | | return ( |
| | | <div className="oper-log-main"> |
| | | <SearchFormView |
| | | formData={formData} |
| | | setFormData={this.setFormData} |
| | | data={[ |
| | | { type: 'input', name: '关键字', label: '关键字', key: 'keyWord' }, |
| | | { |
| | | type: 'rangePicker', |
| | | label: '浏览时间', |
| | | name: JSON.stringify(['开始时间', '结束时间']), |
| | | key: JSON.stringify(['startTime', 'endTime']), |
| | | keylistName: 'rangeTimelist', |
| | | }, |
| | | ]} /> |
| | | <TableView {...tableParams} /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 4/29/2020, 3:51:53 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .oper-log { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**kelq |
| | | * 4/29/2020, 4:28:00 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 个人信息 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Card, Form, Row, Col, Input, Button, Select, message, Spin } from 'antd'; |
| | | import ChangePswView from '../../../common/ChangePswView'; |
| | | |
| | | const FormItem = Form.Item; |
| | | const Option = Select.Option; |
| | | |
| | | import './index.scss'; |
| | | import fetch from '../../../../api/request'; |
| | | import creatHistory from 'history/createHashHistory'; |
| | | const history = creatHistory();//返回上一页这段代码 |
| | | |
| | | class Information extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | spinning: true, |
| | | btnLoading: false,//修改密码弹窗loading |
| | | submitLoading: false,//提交按钮loading |
| | | account: {}, |
| | | user: {} |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { |
| | | this.initPersonInfo(); |
| | | } |
| | | |
| | | initPersonInfo = () => { |
| | | this.setState({ spinning: true }) |
| | | fetch({ |
| | | url: `api/user/findUserInfo`, |
| | | }).then(res => { |
| | | this.setState({ spinning: false }); |
| | | if (res) { |
| | | console.log('res', res); |
| | | this.setState({ |
| | | ...res |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 验证手机格式 |
| | | isMobile = (rule, value, callback) => { |
| | | const regMobile = /^0?1[3|4|5|8][0-9]\d{8}$/ |
| | | if (!regMobile.test(value)) { |
| | | if (value == "") { |
| | | callback(); |
| | | return; |
| | | } else { |
| | | callback('手机号码格式不正确'); |
| | | return; |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | // 验证idcard格式 |
| | | isIdCard = (rule, value, callback) => { |
| | | const regMobile = /^[1-9]\d{7}((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; |
| | | if (!regMobile.test(value)) { |
| | | if (value == "") { |
| | | callback(); |
| | | return; |
| | | } else { |
| | | callback('身份证号码格式不正确'); |
| | | return; |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | //修改密码 |
| | | onOK = (data) => { |
| | | console.log('data', data); |
| | | let _this = this; |
| | | let formData = { |
| | | accountId: _this.state.account.id, |
| | | newPassword: data.newPassWord |
| | | } |
| | | _this.setState({ |
| | | btnLoading: true |
| | | }) |
| | | fetch({ |
| | | url: `api/account/changePassword`, |
| | | params: formData |
| | | }).then(res => { |
| | | _this.setState({ |
| | | btnLoading: false, |
| | | changePswVisible: false |
| | | }) |
| | | if (res) { |
| | | message.success("密码修改成功"); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | //修改个人信息 |
| | | handleSubmit = (e) => { |
| | | e.preventDefault(); |
| | | let _this = this; |
| | | let { account, user } = _this.state; |
| | | _this.props.form.validateFields((err, values) => { |
| | | if (err) return; |
| | | console.log(values); |
| | | _this.setState({ submitLoading: true }) |
| | | fetch({ |
| | | url: `api/user/save`, |
| | | method: 'POST', |
| | | data: { |
| | | user: { |
| | | ..._this.state.user, |
| | | trueName: values.trueName, |
| | | sex: values.sex, |
| | | idcard: values.idcard, |
| | | mobile: values.mobile, |
| | | email: values.email, |
| | | } |
| | | } |
| | | }).then(res => { |
| | | _this.setState({ submitLoading: false }); |
| | | if (res) { |
| | | message.success('保存成功') |
| | | this.props.setData({ |
| | | key: Date.now() |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | const { getFieldDecorator } = this.props.form; |
| | | const { account, user, changePswVisible, btnLoading, spinning, submitLoading } = this.state; |
| | | const formItemLayout = { |
| | | labelCol: { xs: { span: 24 }, sm: { span: 10 }, }, |
| | | wrapperCol: { xs: { span: 24 }, sm: { span: 14 }, }, |
| | | }; |
| | | |
| | | return ( |
| | | <div className="information-main"> |
| | | { |
| | | spinning && <Spin spinning={this.state.spinning} style={{ height: 200, display: 'flex', justifyContent: 'center', alignItems: 'center' }}></Spin> |
| | | } |
| | | { |
| | | !spinning && <React.Fragment> |
| | | <Card title="账号信息" bordered={false} > |
| | | <Row> |
| | | <Col span={16}> |
| | | <Row> |
| | | <Col span={12}> |
| | | <FormItem label={"账号"} {...formItemLayout}> |
| | | {account.account || ''} |
| | | </FormItem> |
| | | </Col> |
| | | <Col span={12}> |
| | | <FormItem label={"密码"} {...formItemLayout}> |
| | | <div> |
| | | ********<Button type="primary" onClick={() => { |
| | | this.setState({ |
| | | changePswVisible: true |
| | | }) |
| | | }} style={{ marginLeft: 20 }}>修改密码</Button> |
| | | </div> |
| | | </FormItem> |
| | | </Col> |
| | | </Row> |
| | | </Col> |
| | | </Row> |
| | | </Card> |
| | | <Card title="基础信息" bordered={false} > |
| | | <Row> |
| | | <Col span={16}> |
| | | <Row> |
| | | <Col span={12}> |
| | | <FormItem label={"姓名"} {...formItemLayout}> |
| | | {getFieldDecorator('trueName', { |
| | | rules: [{ required: true, message: '姓名必填' }], |
| | | initialValue: user.trueName || '' |
| | | })( |
| | | <Input placeholder="请输入姓名" /> |
| | | )}</FormItem> |
| | | </Col> |
| | | <Col span={12}> |
| | | <FormItem label={"性别"} {...formItemLayout}> |
| | | {getFieldDecorator('sex', { |
| | | rules: [{ required: true, message: '微信用户名称必填' }], |
| | | initialValue: user.sex || undefined |
| | | })( |
| | | // <Input placeholder="请输入" /> |
| | | <Select placeholder="请选择" style={{ width: '100%' }}> |
| | | <Option value={1}>男</Option> |
| | | <Option value={2}>女</Option> |
| | | </Select> |
| | | )}</FormItem> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span={12}> |
| | | <FormItem label={"手机号码"} {...formItemLayout}> |
| | | {getFieldDecorator('mobile', { |
| | | rules: [{ |
| | | required: true, message: '手机号码必填' |
| | | }, { |
| | | validator: this.isMobile |
| | | }], |
| | | initialValue: user.mobile || '' |
| | | })( |
| | | <Input placeholder="请输入手机号码" /> |
| | | )}</FormItem> |
| | | </Col> |
| | | <Col span={12}> |
| | | <FormItem label={"电子邮箱"} {...formItemLayout}> |
| | | {getFieldDecorator('email', { |
| | | rules: [{ |
| | | type: 'email', message: '电子邮箱格式不正确', |
| | | }], |
| | | initialValue: user.email || '' |
| | | })( |
| | | <Input placeholder="请输入电子邮箱" /> |
| | | )}</FormItem> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span={12}> |
| | | <FormItem label={"身份证号码"} {...formItemLayout}> |
| | | {getFieldDecorator('idcard', { |
| | | rules: [{ |
| | | required: true, message: '身份证号码必填' |
| | | }, { |
| | | validator: this.isIdCard |
| | | }], |
| | | initialValue: user.idcard || '' |
| | | })( |
| | | <Input placeholder="请输入身份证号码" /> |
| | | )}</FormItem> |
| | | </Col> |
| | | </Row> |
| | | </Col> |
| | | </Row> |
| | | </Card> |
| | | |
| | | <Row type="flex" gutter={20} style={{ marginTop: '12px' }}> |
| | | <Col className="gutter-row" ><Button onClick={() => { history.goBack() }}>返回</Button></Col> |
| | | <Col className="gutter-row" ><Button type="primary" loading={submitLoading} onClick={this.handleSubmit}>确定</Button></Col> |
| | | </Row> |
| | | { |
| | | changePswVisible && <ChangePswView onCancel={() => { this.setState({ changePswVisible: false }) }} onOK={this.onOK} btnLoading={btnLoading} /> |
| | | } |
| | | </React.Fragment> |
| | | } |
| | | |
| | | </div> |
| | | |
| | | ) |
| | | } |
| | | } |
| | | |
| | | const InformationForm = Form.create()(Information); |
| | | export default InformationForm; |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 4/29/2020, 4:28:00 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .information { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | } |
| | | } |
| | |
| | | // 引进页面(pages) |
| | | import Index from './pages/Index'; |
| | | import Login from './pages/login/login'; |
| | | import JurisdictionPersonMgt from './pages/collect/jurisdictionPersonMgt';//信息采集--辖区人口管理 |
| | | import Workbench from './pages/index/workbench';//首页--工作台 |
| | | import System from './pages/index/System';//首页--工作制度 |
| | | import Announcement from './pages/index/Announcement';//全部通知 |
| | | |
| | | import DocumentEdit from './pages/document/DocumentEdit';//新建文档 |
| | | import DocumentDetail from './pages/document/DocumentDetail';//文档详情 |
| | | import BrowseLog from './pages/logManage/browseLog';//浏览日志 |
| | | import OperLog from './pages/logManage/operLog';//操作日志 |
| | | import Information from './pages/personal/information';//个人信息 |
| | | |
| | | const { Content } = Layout; |
| | | const history = createHashHistory(); |
| | |
| | | <Route path="/index/workbench/announcement" component={Announcement} /> |
| | | {/* 规章制度 */} |
| | | <Route path="/index/rules" component={System} /> |
| | | |
| | | {/* 首页 */} |
| | | <Route path="/index" component={Workbench} /> |
| | | |
| | | {/* 浏览日志 */} |
| | | <Route path="/logManage/browseLog" component={BrowseLog} /> |
| | | {/* 操作日志 */} |
| | | <Route path="/logManage/operLog" component={OperLog} /> |
| | | {/* 个人信息 */} |
| | | <Route path="/personal/information" component={Information} /> |
| | | |
| | | {/* 登录页 */} |
| | | <Route path="/login" component={Login} /> |
| | | <Route path="/" component={Workbench} /> |
| | | {/* 路由的页面重定向 */} |
| | |
| | | path: '/index', |
| | | permKey: '/index', |
| | | parentKey: '/', |
| | | children: [] |
| | | children: [], |
| | | }, |
| | | { |
| | | key: '/index/rules', |
| | | name: '规章制度', |
| | | path: '/index/rules', |
| | | permKey: '/index/rules', |
| | | children: [] |
| | | } |
| | | ] |
| | | parentKey: '/', |
| | | children: [], |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | key: 'workOffice', |
| | |
| | | path: 'http://120.79.193.119:9090/', |
| | | permKey: 'http://120.79.193.119:9090/', |
| | | children: [], |
| | | type: 'open' |
| | | parentKey: 'workOffice', |
| | | type: 'open', |
| | | }, |
| | | { |
| | | key: 'workOffice', |
| | |
| | | path: 'https://account.teambition.com/login/password', |
| | | permKey: 'https://account.teambition.com/login/password', |
| | | children: [], |
| | | type: 'open' |
| | | } |
| | | ] |
| | | parentKey: 'workOffice', |
| | | type: 'open', |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | key: '/document', |
| | |
| | | name: '新建文档', |
| | | path: '/document/create', |
| | | permKey: '/document/create', |
| | | children: [] |
| | | } |
| | | ] |
| | | parentKey: '/document', |
| | | children: [], |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | key: '/logManage', |
| | |
| | | name: '浏览日志', |
| | | path: '/logManage/browseLog', |
| | | permKey: '/logManage/browseLog', |
| | | children: [] |
| | | } |
| | | ] |
| | | } |
| | | parentKey: '/logManage', |
| | | children: [], |
| | | }, |
| | | { |
| | | key: '/logManage/operLog', |
| | | name: '操作日志', |
| | | path: '/logManage/operLog', |
| | | permKey: '/logManage/operLog', |
| | | parentKey: '/logManage', |
| | | children: [], |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | key: 'administration', |
| | | name: '用户管理', |
| | | path: 'administration', |
| | | icon: 'team', |
| | | permKey: 'administration', |
| | | children: [ |
| | | { |
| | | key: '/administration', |
| | | name: '用户中心', |
| | | path: 'http://120.79.193.119:9074/base/login.html#/', |
| | | permKey: 'http://120.79.193.119:9074/base/login.html#/', |
| | | children: [], |
| | | parentKey: 'administration', |
| | | type: 'open', |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | key: 'personal', |
| | | name: '个人中心', |
| | | path: 'personal', |
| | | icon: 'user', |
| | | permKey: 'personal', |
| | | children: [ |
| | | { |
| | | key: '/personal/information', |
| | | name: '个人信息', |
| | | path: '/personal/information', |
| | | permKey: '/personal/information', |
| | | children: [], |
| | | parentKey: 'personal', |
| | | }, |
| | | ], |
| | | }, |
| | | ]; |
| | | |
| | | export default menus; |
| | |
| | | render() { |
| | | return ( |
| | | <div className="document-edit-main h-100 flex-box-column"> |
| | | <BreadcrumbView data={[{ name: '查看文档' }]} /> |
| | | {/* <BreadcrumbView data={[{ name: '查看文档' }]} /> */} |
| | | <div className="flex-1"> |
| | | <DocumentDetailPage {...this.props} /> |
| | | </div> |
| | |
| | | render() { |
| | | return ( |
| | | <div className="document-edit-main h-100 flex-box-column"> |
| | | <BreadcrumbView data={[{ name: '新建文档' }]} /> |
| | | <div className="flex-1"> |
| | | <DocumentEditPage {...this.props} /> |
| | | </div> |
| | |
| | | render() { |
| | | return ( |
| | | <div className="announcement-main"> |
| | | <BreadcrumbView data={[{ name: '工作台',url:'#/index/workbench' },{ name: '全部通知' }]} /> |
| | | <AnnouncementPage {...this.props}/> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | //export default function Announcement({ }) { |
| | | // return ( |
| | | // <div className="announcement-main"> |
| | | // |
| | | // </div> |
| | | // ) |
| | | //} |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**kelq |
| | | * 4/29/2020, 2:13:58 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 浏览日志 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import BrowseLogPage from '../../components/page/logManage/browseLog'; |
| | | |
| | | export default class BrowseLog extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="browse-log-page-main"> |
| | | <BrowseLogPage /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 4/29/2020, 3:51:10 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 操作日志 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import OperLogPage from '../../components/page/logManage/operLog' |
| | | |
| | | export default class OperLog extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="oper-log-page-main"> |
| | | <OperLogPage /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**kelq |
| | | * 4/29/2020, 4:26:56 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 个人信息 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import InformationPage from '../../components/page/personal/information'; |
| | | import { now } from 'moment'; |
| | | |
| | | export default class Information extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | key: Date.now() |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | setData = (data) => { |
| | | this.setState({ |
| | | ...data |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | let { key } = this.state; |
| | | return ( |
| | | <div className="information-page-main"> |
| | | <InformationPage {...this.props} setData={this.setData} key={key}/> |
| | | </div> |
| | | ) |
| | | } |
| | | } |