13 files added
12 files modified
New file |
| | |
| | | |
| | | { |
| | | "header": { |
| | | "event": "Allocation failed - JavaScript heap out of memory", |
| | | "trigger": "FatalError", |
| | | "filename": "report.20200529.103416.21856.0.001.json", |
| | | "dumpEventTime": "2020-05-29T10:34:16Z", |
| | | "dumpEventTimeStamp": "1590719656961", |
| | | "processId": 21856, |
| | | "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": "0x00007ff7c8ef4e09", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+9161" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c8ef8764", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+23844" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c8ef7785", |
| | | "symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+19781" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c8fdf9ab", |
| | | "symbol": "uv_loop_fork+47931" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c93171fe", |
| | | "symbol": "v8::internal::Parser::ReportMessageAt+206" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c92eb27a", |
| | | "symbol": "v8::internal::wasm::StreamingDecoder::NotifyCompilationEnded+666" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c93816bc", |
| | | "symbol": "v8::internal::Heap::CreateFillerObjectAt+2972" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c938942f", |
| | | "symbol": "v8::internal::LocalEmbedderHeapTracer::NotifyV8MarkingWorklistWasEmpty+5375" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c937faa3", |
| | | "symbol": "v8::internal::Heap::CollectGarbage+1235" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c937e1a4", |
| | | "symbol": "v8::internal::GCTracer::AddScopeSample+1316" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c93bedd3", |
| | | "symbol": "v8::internal::Factory::NewFillerObject+67" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c96e57d6", |
| | | "symbol": "v8::internal::OptimizingCompileDispatcher::Unblock+116966" |
| | | }, |
| | | { |
| | | "pc": "0x00007ff7c9b80366", |
| | | "symbol": "v8::internal::NativesCollection<0>::GetScriptsSource+660214" |
| | | } |
| | | ], |
| | | "javascriptHeap": { |
| | | "totalMemory": 2156130304, |
| | | "totalCommittedMemory": 2156130304, |
| | | "usedMemory": 1876224704, |
| | | "availableMemory": 76994904, |
| | | "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": 762392, |
| | | "available": 16004840 |
| | | }, |
| | | "old_space": { |
| | | "memorySize": 1971970048, |
| | | "committedMemory": 1971970048, |
| | | "capacity": 1732711024, |
| | | "used": 1730665448, |
| | | "available": 2045576 |
| | | }, |
| | | "code_space": { |
| | | "memorySize": 3833856, |
| | | "committedMemory": 3833856, |
| | | "capacity": 3244960, |
| | | "used": 3244960, |
| | | "available": 0 |
| | | }, |
| | | "map_space": { |
| | | "memorySize": 7868416, |
| | | "committedMemory": 7868416, |
| | | "capacity": 3334400, |
| | | "used": 3334400, |
| | | "available": 0 |
| | | }, |
| | | "large_object_space": { |
| | | "memorySize": 137756672, |
| | | "committedMemory": 137756672, |
| | | "capacity": 137635488, |
| | | "used": 137635488, |
| | | "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": 474.046, |
| | | "kernelCpuSeconds": 220.39, |
| | | "cpuConsumptionPercent": 13.2299, |
| | | "maxRss": 2717171712, |
| | | "pageFaults": { |
| | | "IORequired": 4563168, |
| | | "IONotRequired": 0 |
| | | }, |
| | | "fsActivity": { |
| | | "reads": 13095, |
| | | "writes": 577 |
| | | } |
| | | }, |
| | | "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", |
| | | "GIT_ASKPASS": "d:\\Program Files\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass.sh", |
| | | "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": "77a2a090ff1b9d1b03795d696954a28ba0e0871f", |
| | | "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.45.1", |
| | | "TMP": "C:\\Users\\MRKE~1\\AppData\\Local\\Temp", |
| | | "USERDOMAIN": "LAPTOP-RI7D261L", |
| | | "USERDOMAIN_ROAMINGPROFILE": "LAPTOP-RI7D261L", |
| | | "USERNAME": "Mr Ke", |
| | | "USERPROFILE": "C:\\Users\\Mr Ke", |
| | | "VSCODE_GIT_ASKPASS_MAIN": "d:\\Program Files\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass-main.js", |
| | | "VSCODE_GIT_ASKPASS_NODE": "D:\\Program Files\\Microsoft VS Code\\Code.exe", |
| | | "VSCODE_GIT_IPC_HANDLE": "\\\\.\\pipe\\vscode-git-0f14f4766a-sock", |
| | | "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\\USER32.dll", |
| | | "C:\\WINDOWS\\System32\\win32u.dll", |
| | | "C:\\WINDOWS\\System32\\GDI32.dll", |
| | | "C:\\WINDOWS\\System32\\gdi32full.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\dbghelp.dll", |
| | | "C:\\WINDOWS\\System32\\msvcp_win.dll", |
| | | "C:\\WINDOWS\\System32\\ucrtbase.dll", |
| | | "C:\\WINDOWS\\System32\\PSAPI.DLL", |
| | | "C:\\WINDOWS\\System32\\CRYPT32.dll", |
| | | "C:\\WINDOWS\\System32\\MSASN1.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\USERENV.dll", |
| | | "C:\\WINDOWS\\SYSTEM32\\IPHLPAPI.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.12:9072'; |
| | | let StagingUrl = 'http://192.168.3.12:9072'; |
| | | // let StagingUrl = "http://120.79.193.119:9072"; |
| | | // let StagingUrl = "http://120.79.193.119:9075"; |
| | | |
| | |
| | | import { message } from 'antd'; |
| | | import { NetworkState, BASE_URL, MockUrl } from './httpurl'; |
| | | |
| | | import { createHashHistory } from 'history'; |
| | | const CODE_SUCCESS = '200'; |
| | | const history = createHashHistory(); |
| | | |
| | | let recognitionParams = [].reduce((p, n) => { |
| | | if (eval(n)) { |
| | |
| | | code == '10003' |
| | | ) { |
| | | // token失效重新返回登录页面 |
| | | // this.props.history.push({ pathname: '/login' }); |
| | | window.location.href = window.location.origin + '#/login'; |
| | | history.push('/login'); |
| | | } else { |
| | | message.warning(msg); |
| | | return false; |
| | |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err); |
| | | window.location.href = window.location.origin + '#/login'; |
| | | // history.push('/login'); |
| | | }); |
| | | } |
| | |
| | | // 清空用户相关信息 |
| | | window.localStorage.setItem('menu', ''); |
| | | window.localStorage.setItem('token', ''); |
| | | window.localStorage.setItem('role', ''); |
| | | message.success('退出成功!'); |
| | | fun({ role: '' }); |
| | | window.location.href = window.location.origin + '/#/login'; |
| | |
| | | import { Row, Col, Form, Input, Button, Select, DatePicker, Divider, Card } from 'antd'; |
| | | import moment from 'moment'; |
| | | |
| | | const { RangePicker } = DatePicker; |
| | | const { RangePicker, MonthPicker } = DatePicker; |
| | | import './index.scss'; |
| | | |
| | | // data参数:数据模板 |
| | |
| | | }); |
| | | }; |
| | | |
| | | //月份选择器 |
| | | monthPickerChange = (name, m, d) => { |
| | | this.props.setFormData({ |
| | | ...this.props.formData, |
| | | [name]: d |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | const { formData = {}, data = [], children, width = "25%" } = this.props; |
| | | const { formData = {}, data = [], children, width = "25%", showReset = true } = this.props; |
| | | let size = 'default'; |
| | | |
| | | return ( |
| | |
| | | style={{ width: '100%' }} |
| | | placeholder={item.name} |
| | | value={formData[item.key]} |
| | | allowClear |
| | | // allowClear |
| | | onChange={this.handleSelectChange(item.key)}> |
| | | {item.list && |
| | | item.list.map(item => ( |
| | | <Select.Option |
| | | value={item.id} |
| | | key={item.id}> |
| | | value={item.value} |
| | | key={item.value}> |
| | | {item.name} |
| | | </Select.Option> |
| | | ))} |
| | |
| | | /> |
| | | </Form.Item> |
| | | ); |
| | | case 'monthPicker': |
| | | return ( |
| | | <Form.Item label={item.label}> |
| | | <MonthPicker |
| | | style={{ width: '100%' }} |
| | | size={size} |
| | | placeholder={item.name} |
| | | onChange={(date, dateString) => { |
| | | console.log(date, dateString); |
| | | this.monthPickerChange(item.key, date, dateString); |
| | | }} |
| | | value={formData[item.key] ? moment(formData[item.key], 'YYYY-MM') : undefined} |
| | | /> |
| | | </Form.Item> |
| | | |
| | | ) |
| | | // case 'br': |
| | | // return ( |
| | | // <Col span={24} style={{ marginBottom: '10px' }} /> |
| | |
| | | 查询 |
| | | </Button> |
| | | </Col> |
| | | <Col> |
| | | <Button |
| | | size={size} |
| | | onClick={() => { |
| | | this.onClick('reset'); |
| | | }}> |
| | | 重置 |
| | | </Button> |
| | | </Col> |
| | | { |
| | | showReset ? |
| | | <Col> |
| | | <Button |
| | | size={size} |
| | | onClick={() => { |
| | | this.onClick('reset'); |
| | | }}> |
| | | 重置 |
| | | </Button> |
| | | </Col> : null |
| | | } |
| | | { |
| | | children && |
| | | <Col> |
| | |
| | | } |
| | | |
| | | componentDidMount() { |
| | | let { page, size } = this.props.formData; |
| | | let { page = 1, size } = this.props.formData; |
| | | this.loadData(page, size); |
| | | } |
| | | |
| | |
| | | size |
| | | } |
| | | }).then(res => { |
| | | if (res) { |
| | | res.content = res.content.map(({ ...a }, idx) => ({ |
| | | ...a, |
| | | index: idx + 1 + 10 * (page - 1), |
| | | key: idx, |
| | | })); |
| | | } |
| | | this.setState({ |
| | | tableData: res ? res.content : [], |
| | | loading: false, |
| | | totalElements: res ? res.totalElements : 0, |
| | | }); |
| | | if (res && res) |
| | | if (res) { |
| | | if (res.content) { |
| | | res.content = res.content.map(({ ...a }, idx) => ({ |
| | | ...a, |
| | | index: idx + 1 + 10 * (page - 1), |
| | | key: idx, |
| | | })); |
| | | this.setState({ |
| | | tableData: res ? res.content : [], |
| | | loading: false, |
| | | totalElements: res ? res.totalElements : 0, |
| | | }); |
| | | } else { |
| | | res = res.map(({ ...a }, idx) => ({ |
| | | ...a, |
| | | index: idx + 1 + 10 * (page - 1), |
| | | key: idx, |
| | | })); |
| | | this.setState({ |
| | | tableData: res, |
| | | loading: false, |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | |
| | |
| | | return originalElement; |
| | | }; |
| | | |
| | | onSetDataSource = ({ index, data }, callBack) => { |
| | | console.log(index, data); |
| | | let { tableData } = this.state; |
| | | tableData[index] = data; |
| | | this.setState({ |
| | | tableData |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | const { columns, rowSelection } = this.props; |
| | | const { page, size } = this.props.formData; |
| | | const { columns, rowSelection, showPagination = true } = this.props; |
| | | const { page, size, } = this.props.formData; |
| | | return ( |
| | | <div className="table-view-main"> |
| | | <Table |
| | |
| | | dataSource={this.state.tableData} |
| | | loading={{ spinning: this.state.loading }} |
| | | columns={columns} |
| | | pagination={{ |
| | | pagination={showPagination ? { |
| | | pageSize: Number(size), |
| | | onChange: this.pageChange, |
| | | total: this.state.totalElements, |
| | |
| | | showQuickJumper: true, |
| | | defaultCurrent: 1, |
| | | current: Number(page), |
| | | }} /> |
| | | } : false} /> |
| | | </div> |
| | | ) |
| | | } |
| | |
| | | ]; |
| | | } |
| | | |
| | | |
| | | fontNumber(date) { |
| | | const length = date.length |
| | | if (length > 16) { |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 10:38:14 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效详情 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import TableView from '../../../common/TableView'; |
| | | import { Row, Col, Button, InputNumber, message } from 'antd'; |
| | | import { createHashHistory } from 'history'; |
| | | import './index.scss'; |
| | | const history = createHashHistory(); |
| | | import fetch from '../../../../api/request'; |
| | | |
| | | |
| | | export default class MeritsDetail extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | formData: { |
| | | __key: Date.now(), |
| | | ...this.props.match.params |
| | | }, |
| | | |
| | | }; |
| | | } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | | } |
| | | |
| | | // 保存操作 |
| | | onSave = (item) => { |
| | | console.log('item', item); |
| | | let { id , meritsGrade} = item; |
| | | fetch({ |
| | | url: `api/merits/assess/modifyGrade`, |
| | | params: { |
| | | id, |
| | | meritsGrade |
| | | } |
| | | }).then( res=> { |
| | | if(res) { |
| | | message.success('保存成功'); |
| | | this.setState({ |
| | | formData: { |
| | | ...this.state.formData, |
| | | __key: Date.now() |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '编号', dataIndex: 'id', width: '3%' }, |
| | | { title: '评分项目', dataIndex: 'scoreItems', width: '6%' }, |
| | | { title: '评分目标', dataIndex: 'scoreTarget', width: '10%' }, |
| | | { |
| | | title: '定义与标准', dataIndex: 'standard', width: '25%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { |
| | | title: '系统取数指标', dataIndex: 'systemStandard', width: '10%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { title: '数据来源', dataIndex: 'dataSources', width: '8%' }, |
| | | { title: '取值范围', dataIndex: 'valueRange', width: '5%' }, |
| | | { |
| | | title: '计算方式', dataIndex: 'countMethod', width: '8%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { |
| | | title: '权重(%)', dataIndex: 'weight', width: '6%' |
| | | }, |
| | | { |
| | | title: '配分(分)', dataIndex: 'allotment', width: '6%' |
| | | }, |
| | | { |
| | | title: '考评得分(分)', dataIndex: 'meritsGrade', width: '6%', render: (cur, item, index) => { |
| | | return <InputNumber size="small" min={0} |
| | | max={100} formatter={cur => `${cur}分`} parser={value => value.replace('分', '')} value={cur || 0} onChange={(value) => { |
| | | item['meritsGrade'] = value; |
| | | this.refs['table-view'].onSetDataSource({ index, data: item }) |
| | | }} /> |
| | | } |
| | | }, |
| | | { |
| | | title: '操作', dataIndex: 'operation', width: '10%', render: (cur, item) => { |
| | | return <a onClick={() => { this.onSave(item) }}>保存</a> |
| | | } |
| | | } |
| | | |
| | | ]; |
| | | } |
| | | |
| | | onBack = () => { |
| | | history.goBack(); |
| | | } |
| | | |
| | | render() { |
| | | const { formData } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/merits/assess/findMeritsDetail`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: {}, |
| | | setFormData: this.setFormData, |
| | | showPagination: false |
| | | } |
| | | |
| | | return ( |
| | | <div className="merits-detail-main"> |
| | | <h2>2020年4月绩效评分表(初级研发工程师)</h2> |
| | | <TableView {...tableParams} ref="table-view" /> |
| | | <Row className="margin-top"> |
| | | <Col> |
| | | <Button onClick={this.onBack}>返回</Button> |
| | | </Col> |
| | | </Row> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 10:38:14 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .merits-detail { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | & .ant-table-tbody { |
| | | font-size: 12px !important; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 11:49:58 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效指标 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Input, Row, InputNumber, Tag, Popconfirm, Divider, message } from 'antd'; |
| | | import TableView from '../../../common/TableView'; |
| | | import SearchFormView from '../../../common/SearchFormView'; |
| | | import fetch from '../../../../api/request' |
| | | |
| | | import './index.scss'; |
| | | |
| | | export default class MeritsDispose extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | formData: { |
| | | __key: Date.now(), |
| | | }, |
| | | selectData: null,//岗位下拉 |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { |
| | | |
| | | fetch({ |
| | | url: `api/merits/index/queryMeritsPost`, |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | if (res) { |
| | | this.setState({ |
| | | selectData: res.map(({ name, id }) => ({ name, value: id })), |
| | | formData: { |
| | | ...this.state.formData, |
| | | meritsPostId: res[0].id |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | | } |
| | | |
| | | // 启用/禁用功能 |
| | | openCloseIndex = (item) => { |
| | | let { selectData } = this.state; |
| | | let { validStatus, meritsPostRelationId, meritsPostId, id } = item; |
| | | fetch({ |
| | | url: `api/merits/index/openCloseIndex/${!validStatus}`, |
| | | method: 'POST', |
| | | data: { |
| | | ...item, |
| | | id: meritsPostRelationId, |
| | | validStatus: !validStatus ? 1 : 2, |
| | | meritsIndexId: id, |
| | | meritsPostName: selectData.find(({ value }) => value == meritsPostId).name |
| | | } |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | if (res) { |
| | | message.success(validStatus ? '禁用成功' : '启用成功'); |
| | | this.setState({ |
| | | formData: { |
| | | ...this.state.formData, |
| | | __key: Date.now() |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 保存处于启用状态的的设置值 |
| | | saveOpenIndex = (item) => { |
| | | let { selectData } = this.state; |
| | | |
| | | let { validStatus, meritsPostRelationId, meritsPostId, id } = item; |
| | | fetch({ |
| | | url: `api/merits/index/openCloseIndex/${validStatus}`, |
| | | method: 'POST', |
| | | data: { |
| | | ...item, |
| | | id: meritsPostRelationId, |
| | | validStatus: validStatus ? 1 : 2, |
| | | meritsIndexId: id, |
| | | meritsPostName: selectData.find(({ value }) => value == meritsPostId).name |
| | | } |
| | | }).then(res => { |
| | | console.log('res', res); |
| | | if (res) { |
| | | message.success('保存成功'); |
| | | this.setState({ |
| | | formData: { |
| | | ...this.state.formData, |
| | | __key: Date.now() |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '编号', dataIndex: 'id', width: '3%' }, |
| | | { title: '评分项目', dataIndex: 'scoreItems', width: '6%' }, |
| | | { title: '评分目标', dataIndex: 'scoreTarget', width: '10%' }, |
| | | { |
| | | title: '定义与标准', dataIndex: 'standard', width: '25%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { |
| | | title: '系统取数指标', dataIndex: 'systemStandard', width: '10%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { title: '数据来源', dataIndex: 'dataSources', width: '8%' }, |
| | | { title: '取值范围', dataIndex: 'valueRange', width: '5%' }, |
| | | { |
| | | title: '计算方式', dataIndex: 'countMethod', width: '8%', render: (cur, item) => { |
| | | return <div dangerouslySetInnerHTML={{ |
| | | __html: cur.replace(/\n/g, "<br/>") |
| | | }}></div> |
| | | } |
| | | }, |
| | | { |
| | | title: '权重(%)', dataIndex: 'weight', width: '6%', render: (cur, item, index) => { |
| | | return <InputNumber size="small" min={0} disabled={item.validStatus ? false : true} |
| | | max={100} formatter={cur => `${cur}%`} parser={value => value.replace('%', '')} value={cur || 0} onChange={(value) => { |
| | | item['weight'] = value; |
| | | this.refs['table-view'].onSetDataSource({ index, data: item }) |
| | | }} /> |
| | | } |
| | | }, |
| | | { |
| | | title: '配分(分)', dataIndex: 'allotment', width: '6%', render: (cur, item, index) => { |
| | | return <InputNumber size="small" min={0} disabled={item.validStatus ? false : true} |
| | | max={100} formatter={cur => `${cur}分`} parser={value => value.replace('分', '')} value={cur || 0} onChange={(value) => { |
| | | item['allotment'] = value; |
| | | this.refs['table-view'].onSetDataSource({ index, data: item }) |
| | | }} /> |
| | | } |
| | | }, |
| | | { |
| | | title: '操作', dataIndex: 'operation', width: '10%', render: (cur, item) => { |
| | | return <Row> |
| | | {/* 有效状态 */} |
| | | |
| | | {item.validStatus && <Popconfirm placement="topRight" title={'您确定要禁用吗?'} onConfirm={() => { |
| | | this.openCloseIndex(item); |
| | | }} okText="是" cancelText="否"> |
| | | <Tag>禁用</Tag> |
| | | </Popconfirm>} |
| | | {!item.validStatus && <Popconfirm placement="topRight" title={'您确定要启用吗?'} onConfirm={() => { |
| | | this.openCloseIndex(item); |
| | | }} okText="是" cancelText="否"> |
| | | <Tag color="#58bc58">启用</Tag> |
| | | </Popconfirm>} |
| | | |
| | | {/* 待启用状态--保存功能 */} |
| | | {item.validStatus && <React.Fragment> |
| | | <Divider type="vertical" /> |
| | | <a onClick={() => { |
| | | this.saveOpenIndex(item) |
| | | }}>保存</a> |
| | | </React.Fragment>} |
| | | |
| | | </Row> |
| | | } |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | render() { |
| | | const { formData, selectData } = this.state; |
| | | let tableParams = { |
| | | url: `api/merits/index/queryMeritsIndex`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: {}, |
| | | setFormData: this.setFormData, |
| | | showPagination: false, |
| | | } |
| | | |
| | | return ( |
| | | <div className="merits-dispose-main"> |
| | | { |
| | | selectData && |
| | | <React.Fragment> |
| | | <SearchFormView |
| | | formData={formData} |
| | | setFormData={this.setFormData} |
| | | showReset={false} |
| | | data={[ |
| | | { type: 'select', name: '岗位', label: '岗位', key: 'meritsPostId', list: selectData, }, |
| | | ]} /> |
| | | <TableView {...tableParams} ref={'table-view'} /> |
| | | </React.Fragment> |
| | | } |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 11:49:58 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .merits-dispose { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | & .ant-table-tbody { |
| | | font-size: 12px !important; |
| | | } |
| | | & .ant-tag { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 2:34:37 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Input } from 'antd'; |
| | | import TableView from '../../../common/TableView'; |
| | | import SearchFormView from '../../../common/SearchFormView'; |
| | | import './index.scss'; |
| | | |
| | | |
| | | export default class MeritsExamine extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | formData: { |
| | | __key: Date.now(), |
| | | page: 1, |
| | | size: 10, |
| | | keyWord: '' |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | setFormData = data => { |
| | | console.log('form', data); |
| | | this.setState({ |
| | | formData: data, |
| | | }); |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '序号', dataIndex: 'index' }, |
| | | { title: '评分项目', dataIndex: 'name' }, |
| | | { title: '评分目标', dataIndex: 'bumen' }, |
| | | { title: '定义与标准', dataIndex: 'gangwei' }, |
| | | { title: '系统取数指标', dataIndex: 'month' }, |
| | | { title: '数据来源', dataIndex: 'renwu' }, |
| | | { title: '取值范围', dataIndex: 'quexian' }, |
| | | { title: '计算方式', dataIndex: 'score' }, |
| | | { |
| | | title: '权重', dataIndex: 'quanzhogn', width: '10%', render: (cur, item, index) => { |
| | | return <Input size="small" onChange={() => { |
| | | console.log(this.refs); |
| | | this.refs['table-view'].onSetDataSource({ index, data: item }) |
| | | }} /> |
| | | } |
| | | }, |
| | | { |
| | | title: '配分', dataIndex: 'peifen', width: '10%', render: (cur, item) => { |
| | | return <Input size="small" /> |
| | | } |
| | | }, |
| | | { |
| | | title: '操作', dataIndex: 'operation', render: (cur, item, ) => { |
| | | return null |
| | | } |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | render() { |
| | | const { formData } = this.state; |
| | | let tableParams = { |
| | | url: `api/log/queryLog`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: { |
| | | logType: '1', |
| | | }, |
| | | setFormData: this.setFormData, |
| | | showPagination: false, |
| | | } |
| | | |
| | | return ( |
| | | <div className="merits-examine-main"> |
| | | <TableView {...tableParams} ref={'table-view'} /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 2:34:37 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .merits-examine { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 9:55:19 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效总览 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import { Row, Col, Divider } from 'antd'; |
| | | import TableView from '../../../common/TableView'; |
| | | import SearchFormView from '../../../common/SearchFormView'; |
| | | import { createHashHistory } from 'history'; |
| | | import fetch from '../../../../api/request'; |
| | | import './index.scss'; |
| | | |
| | | const history = createHashHistory(); |
| | | |
| | | export default class MeritsOverview 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, |
| | | }); |
| | | } |
| | | |
| | | linkDetail = (item) => { |
| | | let { userId, countMonth } = item; |
| | | history.push(`/merits/meritsOverview/meritsDetail/${userId}/${countMonth}`) |
| | | } |
| | | |
| | | renderColumns = () => { |
| | | return [ |
| | | { title: '序号', dataIndex: 'index' }, |
| | | { title: '姓名', dataIndex: 'userName' }, |
| | | { title: '部门', dataIndex: 'userDeptName' }, |
| | | { title: '岗位', dataIndex: 'meritsPostName' }, |
| | | { title: '考评月份', dataIndex: 'countMonth' }, |
| | | { title: '总任务数', dataIndex: 'taskNumber' }, |
| | | { title: '总缺陷数', dataIndex: 'defectNumber' }, |
| | | { title: '考评得分(分)', dataIndex: 'meritsGrade' }, |
| | | { |
| | | title: '操作', dataIndex: 'operation', render: (cur, item) => { |
| | | return <Row> |
| | | <a onClick={() => this.linkDetail(item)}>详情</a> |
| | | </Row> |
| | | } |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | |
| | | |
| | | render() { |
| | | const { formData } = this.state; |
| | | |
| | | let tableParams = { |
| | | url: `api/merits/assess/queryMerits`, |
| | | formData, |
| | | key: formData.__key, |
| | | columns: this.renderColumns(), |
| | | extraFromData: {}, |
| | | setFormData: this.setFormData |
| | | } |
| | | return ( |
| | | <div className="merits-overview-main"> |
| | | <SearchFormView |
| | | formData={formData} |
| | | setFormData={this.setFormData} |
| | | data={[ |
| | | { type: 'select', name: '部门', label: '部门', key: 'bumen', list: [{ name: '1', value: '部门1' }, { name: '2', value: '部门2' }], }, |
| | | { type: 'select', name: '岗位', label: '岗位', key: 'gangwei', list: [{ name: '1', value: '岗位1' }, { name: '2', value: '岗位2' }], }, |
| | | { type: 'input', name: '姓名', label: '姓名', key: 'name' }, |
| | | { |
| | | type: 'monthPicker', |
| | | label: '考评月份', |
| | | name: '考评月份', |
| | | key: 'kpyf', |
| | | }, |
| | | ]} /> |
| | | <TableView {...tableParams} /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 9:55:19 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | .merits-overview { |
| | | &-main { |
| | | background: #fff; |
| | | margin: 20px; |
| | | padding: 20px; |
| | | } |
| | | } |
| | |
| | | margin: 20px 0 !important; |
| | | } |
| | | |
| | | .margin-top{ |
| | | margin-top: 20px; |
| | | } |
| | | .margin-bottom{ |
| | | margin-bottom: 20px; |
| | | } |
| | |
| | | |
| | | .ant-divider-horizontal{ |
| | | margin: 20px 0 !important; |
| | | } |
| | | |
| | | .margin-bottom{ |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .ant-card-head-title{ |
| | |
| | | // oa路由映射 |
| | | import OaRouteDom from './routeDom/oaRouteDom'; |
| | | import UserRouteDom from './routeDom/userRouteDom'; |
| | | import { oaMenus, userMenus } from './menu'; |
| | | |
| | | export const Context = React.createContext(); |
| | | |
| | |
| | | |
| | | componentDidMount() { |
| | | let pathname = history.location.pathname; |
| | | console.log(history, pathname); |
| | | let menusListByRole = window.localStorage.getItem('menusListByRole') |
| | | ? JSON.parse(window.localStorage.getItem('menusListByRole')) |
| | | : []; |
| | | |
| | | // let menuMap = { oa: { menus: oaMenus }, user: { menus: userMenus } }; |
| | | |
| | | let role = Object.keys(menusListByRole) |
| | | .reduce((p, n) => { |
| | |
| | | role, |
| | | }, |
| | | }); |
| | | |
| | | if (!role && menusListByRole.length == 0) { |
| | | history.push('/login'); |
| | | } |
| | | if (!role && window.localStorage.getItem('role')) { |
| | | this.setState({ |
| | | context: { |
| | | ...this.state.context, |
| | | role: window.localStorage.getItem('role'), |
| | | }, |
| | | }); |
| | | } |
| | | } |
| | | |
| | | setContext = (data) => { |
| | |
| | | ...data, |
| | | }, //更新context |
| | | }); |
| | | window.localStorage.setItem('role', data.role || ''); |
| | | }; |
| | | |
| | | render() { |
| | |
| | | </Switch> |
| | | <Layout> |
| | | <Content> |
| | | <Route path="/login" component={()=>( <Login setContext={this.setContext}/>)} /> |
| | | {context.role == 'oa' && <OaRouteDom />} |
| | | {context.role == 'user' && <UserRouteDom />} |
| | | <Switch> |
| | | <Route |
| | | path="/login" |
| | | component={() => <Login setContext={this.setContext} />} |
| | | /> |
| | | {context.role == 'oa' && <OaRouteDom />} |
| | | {context.role == 'user' && <UserRouteDom />} |
| | | </Switch> |
| | | </Content> |
| | | </Layout> |
| | | </Layout> |
| | |
| | | export { default as oaMenus } from './menu.oa'; |
| | | export { default as userMenus } from './menu.user'; |
| | | export { default as getMenuListByPermission } from './menu.permission'; |
| | | export { default as getMenuListByPermission } from './menu.permission'; |
| | |
| | | }, |
| | | { |
| | | key: '/merits/meritsDispose', |
| | | name: '参数配置', |
| | | name: '绩效指标', |
| | | path: '/merits/meritsDispose', |
| | | permKey: '/merits/meritsDispose', |
| | | children: [], |
| | | parentKey: 'merits', |
| | | }, |
| | | } |
| | | ], |
| | | }, |
| | | ]; |
| | |
| | | }; |
| | | } |
| | | componentWillMount() { |
| | | document.title = '恒巨信息OA-用户登录' |
| | | document.title = '恒巨信息OA-用户登录'; |
| | | } |
| | | |
| | | handleSubmit = e => { |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 10:36:57 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效详情 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import MeritsDetailPage from '../../../components/oa/merits/meritsDetail'; |
| | | |
| | | export default class MeritsDetail extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="merits-detail-page-main"> |
| | | <MeritsDetailPage {...this.props} /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 11:49:16 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效指标 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import MeritsDisposePage from '../../../components/oa/merits/meritsDispose'; |
| | | |
| | | export default class MeritsDispose extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="merits-dispose-page-main"> |
| | | <MeritsDisposePage /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 2:33:47 PM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** 绩效考核 */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import MeritsExaminePage from '../../../components/oa/merits/meritsExamine'; |
| | | |
| | | export default class MeritsExamine extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="merits-examine-page-main"> |
| | | <MeritsExaminePage /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | /**liuwh |
| | | * 5/29/2020, 9:58:58 AM |
| | | * doc comment for the file goes here |
| | | */ |
| | | |
| | | /** Happy Coding */ |
| | | import React, { ReactNode, ReactEventHandler, Component } from 'react'; |
| | | import MeritsOverviewPage from '../../../components/oa/merits/meritsOverview';//绩效总览 |
| | | |
| | | export default class MeritsOverview extends Component { |
| | | constructor(props) { |
| | | super(props); |
| | | this.config = { |
| | | }; |
| | | this.state = { |
| | | }; |
| | | } |
| | | |
| | | componentWillMount() { } |
| | | |
| | | componentDidMount() { } |
| | | |
| | | componentDidShow() { } |
| | | |
| | | render() { |
| | | return ( |
| | | <div className="merits-overview-page-main"> |
| | | <MeritsOverviewPage /> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | |
| | | import Rawler from '../module/oa/logManage/Rawler'; //爬虫词条管理 |
| | | import Information from '../module/oa/personal/information'; //个人信息 |
| | | import UserManage from '../components/oa/basicConfig/UserManage'; //用户管理 |
| | | import MeritsOverview from '../module/oa/merits/meritsOverview';//绩效管理--绩效总览 |
| | | import MeritsDetail from '../module/oa/merits/meritsDetail';//绩效管理--绩效详情 |
| | | import MeritsDispose from '../module/oa/merits/meritsDispose';//绩效管理--绩效指标 |
| | | import MeritsExamine from '../module/oa/merits/meritsExamine';//绩效管理--绩效考核 |
| | | |
| | | export default function OaRouteDom({ }) { |
| | | return (<Switch> |
| | |
| | | <Route path="/logManage/operLog" component={OperLog} /> |
| | | <Route path="/logManage/rawler" component={Rawler} /> |
| | | <Route path="/personal/information" component={Information} /> |
| | | <Route path="/merits/meritsOverview/meritsDetail/:userId/:meritsMonth" component={MeritsDetail} /> |
| | | <Route path="/merits/meritsOverview" component={MeritsOverview} /> |
| | | <Route path="/merits/meritsDispose" component={MeritsDispose} /> |
| | | <Route path="/merits/meritsExamine" component={MeritsExamine} /> |
| | | |
| | | |
| | | {/* <Route path="/" component={Workbench} /> */} |
| | | <Redirect from="/" to="/index" component={Workbench} /> |
| | | </Switch> |