From 2ea56ed08b58386f0612635101b1acd51cd4a44c Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Wed, 29 Apr 2020 18:06:45 +0800
Subject: [PATCH] 浏览日志,操作日志;用户中心(个人信息);用户管理(用户中心)
---
src/pages/logManage/browseLog.jsx | 34 +
report.20200429.154239.11428.0.001.json | 479 +++++++++++++++++++
src/components/common/TopListTableView/index.jsx | 18
src/components/page/DocumentEditPage/index.jsx | 1
src/components/page/logManage/operLog/index.jsx | 106 ++++
src/components/common/HotListTableView/index.jsx | 2
src/pages/document/DocumentEdit.jsx | 1
src/index.css | 2
src/components/page/AnnouncementPage/index.jsx | 8
src/components/page/logManage/browseLog/index.jsx | 102 ++++
src/components/common/ChangePswView/index.scss | 1
src/components/common/ChangePswView/index.jsx | 105 ++++
src/components/page/index/rulesList/index.jsx | 8
src/components/page/personal/information/index.jsx | 270 ++++++++++
src/pages/index/Announcement.jsx | 9
src/api/httpurl.js | 4
src/pages/document/DocumentDetail.jsx | 2
src/index.js | 13
src/pages/personal/information.jsx | 42 +
src/pages/logManage/operLog.jsx | 34 +
src/components/page/logManage/browseLog/index.scss | 14
src/components/common/SearchFormView/index.jsx | 13
src/components/page/personal/information/index.scss | 14
/dev/null | 45 -
src/components/common/HeadView/index.jsx | 2
src/components/common/FindAlreadyReadOrNotView/index.jsx | 11
src/menu/menu.data.js | 78 ++
src/components/page/logManage/operLog/index.scss | 14
src/components/common/ChangePswView/test.jsx | 17
src/components/common/NotifyList/index.jsx | 9
30 files changed, 1,353 insertions(+), 105 deletions(-)
diff --git a/report.20200429.154239.11428.0.001.json b/report.20200429.154239.11428.0.001.json
new file mode 100644
index 0000000..c64ab97
--- /dev/null
+++ b/report.20200429.154239.11428.0.001.json
@@ -0,0 +1,479 @@
+
+{
+ "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"
+ ]
+}
\ No newline at end of file
diff --git a/src/api/httpurl.js b/src/api/httpurl.js
index bbd512e..0244c8a 100644
--- a/src/api/httpurl.js
+++ b/src/api/httpurl.js
@@ -1,6 +1,6 @@
//内网测试地址
-// 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地址
diff --git a/src/components/common/ChangePswView/index.jsx b/src/components/common/ChangePswView/index.jsx
new file mode 100644
index 0000000..7029782
--- /dev/null
+++ b/src/components/common/ChangePswView/index.jsx
@@ -0,0 +1,105 @@
+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;
\ No newline at end of file
diff --git a/src/components/common/ChangePswView/index.scss b/src/components/common/ChangePswView/index.scss
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/components/common/ChangePswView/index.scss
@@ -0,0 +1 @@
+
diff --git a/src/components/common/ChangePswView/test.jsx b/src/components/common/ChangePswView/test.jsx
new file mode 100644
index 0000000..a1fa7bb
--- /dev/null
+++ b/src/components/common/ChangePswView/test.jsx
@@ -0,0 +1,17 @@
+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>
+ );
+ }
+
+}
diff --git a/src/components/common/FindAlreadyReadOrNotView/index.jsx b/src/components/common/FindAlreadyReadOrNotView/index.jsx
index 50a371d..693c0f7 100644
--- a/src/components/common/FindAlreadyReadOrNotView/index.jsx
+++ b/src/components/common/FindAlreadyReadOrNotView/index.jsx
@@ -7,7 +7,7 @@
/** 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';
@@ -64,9 +64,11 @@
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>
@@ -78,10 +80,13 @@
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>
diff --git a/src/components/common/HeadView/index.jsx b/src/components/common/HeadView/index.jsx
index 759af0d..e40d599 100644
--- a/src/components/common/HeadView/index.jsx
+++ b/src/components/common/HeadView/index.jsx
@@ -32,7 +32,7 @@
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' }}>
{
diff --git a/src/components/common/HotListTableView/index.jsx b/src/components/common/HotListTableView/index.jsx
index 312dd41..92ea24a 100644
--- a/src/components/common/HotListTableView/index.jsx
+++ b/src/components/common/HotListTableView/index.jsx
@@ -45,7 +45,6 @@
fetch({
url: `api/news/keywordlist`
}).then(res => {
- console.log('res', res);
this.setState({
loading: false
})
@@ -58,7 +57,6 @@
}
setFormData = data => {
- console.log('form', data);
this.setState({
formData: data,
});
diff --git a/src/components/common/NotifyList/index.jsx b/src/components/common/NotifyList/index.jsx
index 86d7c72..1b707bc 100644
--- a/src/components/common/NotifyList/index.jsx
+++ b/src/components/common/NotifyList/index.jsx
@@ -25,10 +25,11 @@
fetch({
url: `api/document/getNewNotice`
}).then(res => {
- console.log('res', res);
- this.setState({
- content: res.documentTitle || ''
- })
+ if( res ) {
+ this.setState({
+ content: res.documentTitle || ''
+ })
+ }
})
}
diff --git a/src/components/common/SearchFormView/index.jsx b/src/components/common/SearchFormView/index.jsx
index f187baa..398649e 100644
--- a/src/components/common/SearchFormView/index.jsx
+++ b/src/components/common/SearchFormView/index.jsx
@@ -108,6 +108,7 @@
render() {
const { formData = {}, data = [], children } = this.props;
+ let size = 'default';
return (
<div className="search-form-view-main">
@@ -123,7 +124,7 @@
return (
<Form.Item label={item.label}>
<Select
- size="small"
+ size={size}
style={{ width: '100%' }}
placeholder={item.name}
value={formData[item.key]}
@@ -144,7 +145,7 @@
return (
<Form.Item label={item.label}>
<Input
- size="small"
+ size={size}
placeholder={item.name}
name={item.key}
value={formData[item.key]}
@@ -156,7 +157,7 @@
return (
<Form.Item label={item.label}>
<DatePicker
- size="small"
+ size={size}
style={{ width: '100%' }}
placeholder={item.name}
onChange={(date, dateString) => {
@@ -171,7 +172,7 @@
<Form.Item label={item.label}>
<RangePicker
style={{ width: '100%'}}
- size="small"
+ size={size}
ranges={{
Today: [moment(), moment()],
'This Month': [
@@ -214,7 +215,7 @@
<Row type="flex" gutter={20} align="middle" align="middle" style={{ height: 40 }}>
<Col>
<Button
- size="small"
+ size={size}
type="primary"
onClick={() => {
this.onClick('search');
@@ -224,7 +225,7 @@
</Col>
<Col>
<Button
- size="small"
+ size={size}
onClick={() => {
this.onClick('reset');
}}>
diff --git a/src/components/common/TopListTableView/index.jsx b/src/components/common/TopListTableView/index.jsx
index 595b4a9..edb1878 100644
--- a/src/components/common/TopListTableView/index.jsx
+++ b/src/components/common/TopListTableView/index.jsx
@@ -27,14 +27,15 @@
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'] },
+ ]
+ })
+ }
})
}
@@ -57,7 +58,6 @@
render() {
let { topList } = this.state;
- console.log(topList)
return (
<div className="top-list-table-view-main">
<Row type="flex" gutter={12}>
diff --git a/src/components/page/AnnouncementPage/index.jsx b/src/components/page/AnnouncementPage/index.jsx
index 72802a0..c9dd074 100644
--- a/src/components/page/AnnouncementPage/index.jsx
+++ b/src/components/page/AnnouncementPage/index.jsx
@@ -53,7 +53,7 @@
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> }
];
@@ -67,7 +67,7 @@
}
render() {
- const { formData, documentId, visible } = this.state;
+ const { formData, documentId, visible, curItem } = this.state;
let tableParams = {
url: `api/document/getNotice`,
@@ -85,7 +85,9 @@
visible={visible}
onCancel={() => this.setState({ visible: false })}
footer={null}
- title="接收情况"
+ title={<div>
+ {curItem ? curItem.documentTitle : '接受情况'}
+ </div>}
>
{
documentId &&
diff --git a/src/components/page/DocumentEditPage/index.jsx b/src/components/page/DocumentEditPage/index.jsx
index 4ec5c62..8543d5c 100644
--- a/src/components/page/DocumentEditPage/index.jsx
+++ b/src/components/page/DocumentEditPage/index.jsx
@@ -163,6 +163,7 @@
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',
diff --git a/src/components/page/index/rulesList/index.jsx b/src/components/page/index/rulesList/index.jsx
index ee82d16..29d7f52 100644
--- a/src/components/page/index/rulesList/index.jsx
+++ b/src/components/page/index/rulesList/index.jsx
@@ -52,7 +52,7 @@
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> }
];
@@ -69,7 +69,7 @@
render() {
- const { formData, visible, documentId } = this.state;
+ const { formData, visible, documentId, curItem } = this.state;
let tableParams = {
url: `api/document/getNotice`,
@@ -87,7 +87,9 @@
visible={visible}
onCancel={() => this.setState({ visible: false })}
footer={null}
- title="接收情况"
+ title={<div >
+ {curItem ? curItem.documentTitle : '接受情况'}
+ </div>}
>
{
documentId &&
diff --git a/src/components/page/jurisdictionPersonMgt/index.jsx b/src/components/page/jurisdictionPersonMgt/index.jsx
deleted file mode 100644
index e5bc043..0000000
--- a/src/components/page/jurisdictionPersonMgt/index.jsx
+++ /dev/null
@@ -1,110 +0,0 @@
-/* eslint-disable */
-/**柯礼钦
- * 4/3/2020, 9:51:59 AM
- * doc comment for the file goes here
- */
-
-/** 辖区人口管理 */
-import React, { ReactNode, ReactEventHandler, Component } from 'react';
-import TableView from '../../common/TableView';
-import { Tag } from 'antd';
-import { tagList } from './tag'
-import './index.scss';
-
-const { CheckableTag } = Tag;
-
-export default class JurisdictionPersonMgt extends Component {
- constructor(props) {
- super(props);
- this.config = {
- };
- this.state = {
- formData: {
- __key: Date.now(),
- filter: JSON.stringify({
- tabType: null,
- keywords: ''
- }),
- page: 1,
- size: 10,
- },
- selectedTags: []
- };
- }
-
- componentWillMount() { }
-
- componentDidMount() { }
-
- renderColumns = () => {
- return [
- {
- title: '序号',
- dataIndex: 'index',
- key: 'index',
- },
- {
- title: '操作',
- key: 'operation',
- render: (text, record) => {
- return (
- <React.Fragment>
-
- </React.Fragment>
- );
- },
- },
- ];
- }
-
- setFormData = data => {
- console.log('form', data);
- this.setState({
- formData: data,
- });
- // this.props.history.push(this.props.location.pathname + '?' + Object.entries(data)
- // .map(([k, v]) => `${k}=${v}`)
- // .join('&'));
- }
-
- // 处理标签选择函数
- handletagchange = (key, bool) => {
-
- }
-
- render() {
- const { formData, selectedTags } = this.state;
-
- let tableParams = {
- url: `hik-grided-address/api/v1/house/houseinfo/getPage`,
- formData,
- key: formData.__key,
- columns: this.renderColumns(),
- extraFromData: {
- },
- setFormData: this.setFormData
- }
-
- return (
- <div className="jurisdiction-person-mgt-main">
- <div className="margin-bottom">
- <span style={{ marginRight: 8 }}>人口标签:</span>
- {tagList.map(({ name, value }) => (
- <CheckableTag
- key={name}
- checked={selectedTags.indexOf(name) > -1}
- // checked={selectedTags.indexOf(tag) > -1}
- onChange={checked => {
- this.handletagchange(name, checked)
- }}
- >
- {value}
- </CheckableTag>
- ))}
- </div>
- <TableView {...tableParams} />
- </div>
- )
- }
-}
-
diff --git a/src/components/page/jurisdictionPersonMgt/index.scss b/src/components/page/jurisdictionPersonMgt/index.scss
deleted file mode 100644
index 1a2f7ea..0000000
--- a/src/components/page/jurisdictionPersonMgt/index.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-/* eslint-disable */
-/**柯礼钦
- * 4/3/2020, 9:51:59 AM
- * doc comment for the file goes here
- */
-
-/** Happy Coding */
-.jurisdiction-person-mgt {
- &-main {
-
- }
-}
diff --git a/src/components/page/jurisdictionPersonMgt/tag.js b/src/components/page/jurisdictionPersonMgt/tag.js
deleted file mode 100644
index 654d94a..0000000
--- a/src/components/page/jurisdictionPersonMgt/tag.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/* eslint-disable */
-export const tagList = [{
- name: '1',
- value: '全部'
-},{
- name: '2',
- value: '新生人口'
-},{
- name: '3',
- value: '死亡人口'
-},{
- name: '4',
- value: '留守人口'
-},{
- name: '5',
- value: '高龄补贴'
-},{
- name: '6',
- value: '独生子女'
-},{
- name: '7',
- value: '育龄妇女'
-},{
- name: '8',
- value: '重点青少年'
-},{
- name: '9',
- value: '特殊人群'
-}];
-
diff --git a/src/components/page/logManage/browseLog/index.jsx b/src/components/page/logManage/browseLog/index.jsx
new file mode 100644
index 0000000..f556d93
--- /dev/null
+++ b/src/components/page/logManage/browseLog/index.jsx
@@ -0,0 +1,102 @@
+/* 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>
+ )
+ }
+}
diff --git a/src/components/page/logManage/browseLog/index.scss b/src/components/page/logManage/browseLog/index.scss
new file mode 100644
index 0000000..4a429b7
--- /dev/null
+++ b/src/components/page/logManage/browseLog/index.scss
@@ -0,0 +1,14 @@
+/* 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;
+ }
+}
diff --git a/src/components/page/logManage/operLog/index.jsx b/src/components/page/logManage/operLog/index.jsx
new file mode 100644
index 0000000..0018315
--- /dev/null
+++ b/src/components/page/logManage/operLog/index.jsx
@@ -0,0 +1,106 @@
+/* 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>
+ )
+ }
+}
+
diff --git a/src/components/page/logManage/operLog/index.scss b/src/components/page/logManage/operLog/index.scss
new file mode 100644
index 0000000..9382759
--- /dev/null
+++ b/src/components/page/logManage/operLog/index.scss
@@ -0,0 +1,14 @@
+/* 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;
+ }
+}
diff --git a/src/components/page/personal/information/index.jsx b/src/components/page/personal/information/index.jsx
new file mode 100644
index 0000000..9e06fe0
--- /dev/null
+++ b/src/components/page/personal/information/index.jsx
@@ -0,0 +1,270 @@
+/* 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;
diff --git a/src/components/page/personal/information/index.scss b/src/components/page/personal/information/index.scss
new file mode 100644
index 0000000..ac6ecdf
--- /dev/null
+++ b/src/components/page/personal/information/index.scss
@@ -0,0 +1,14 @@
+/* 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;
+ }
+}
diff --git a/src/index.css b/src/index.css
index 4c05cbe..ee83cf1 100644
--- a/src/index.css
+++ b/src/index.css
@@ -31,3 +31,5 @@
overflow: auto;
}
+
+
diff --git a/src/index.js b/src/index.js
index e7f5a47..5f3f604 100644
--- a/src/index.js
+++ b/src/index.js
@@ -20,13 +20,15 @@
// 引进页面(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();
@@ -55,10 +57,17 @@
<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} />
{/* 路由的页面重定向 */}
diff --git a/src/menu/menu.data.js b/src/menu/menu.data.js
index 18f6622..f8afa87 100644
--- a/src/menu/menu.data.js
+++ b/src/menu/menu.data.js
@@ -17,16 +17,17 @@
path: '/index',
permKey: '/index',
parentKey: '/',
- children: []
+ children: [],
},
{
key: '/index/rules',
name: '规章制度',
path: '/index/rules',
permKey: '/index/rules',
- children: []
- }
- ]
+ parentKey: '/',
+ children: [],
+ },
+ ],
},
{
key: 'workOffice',
@@ -41,7 +42,8 @@
path: 'http://120.79.193.119:9090/',
permKey: 'http://120.79.193.119:9090/',
children: [],
- type: 'open'
+ parentKey: 'workOffice',
+ type: 'open',
},
{
key: 'workOffice',
@@ -49,9 +51,10 @@
path: 'https://account.teambition.com/login/password',
permKey: 'https://account.teambition.com/login/password',
children: [],
- type: 'open'
- }
- ]
+ parentKey: 'workOffice',
+ type: 'open',
+ },
+ ],
},
{
key: '/document',
@@ -65,9 +68,10 @@
name: '新建文档',
path: '/document/create',
permKey: '/document/create',
- children: []
- }
- ]
+ parentKey: '/document',
+ children: [],
+ },
+ ],
},
{
key: '/logManage',
@@ -81,10 +85,54 @@
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;
diff --git a/src/pages/collect/jurisdictionPersonMgt.jsx b/src/pages/collect/jurisdictionPersonMgt.jsx
deleted file mode 100644
index 32a6e45..0000000
--- a/src/pages/collect/jurisdictionPersonMgt.jsx
+++ /dev/null
@@ -1,45 +0,0 @@
-/* eslint-disable */
-/**柯礼钦
- * 4/2/2020, 11:22:51 AM
- * doc comment for the file goes here
- */
-
-/** 信息采集-- 辖区人口管理 */
-import React, { ReactNode, ReactEventHandler, Component } from 'react';
-import JurisdictionPersonMgtPage from '../../components/page/jurisdictionPersonMgt';
-import BreadcrumbView from '../../components/common/BreadcrumbView'
-
-// import { Link } from 'react-router-dom';
-// import { Icon } from 'antd';
-
-export default class JurisdictionPersonMgt extends Component {
- constructor(props) {
- super(props);
- this.config = {
- navigationBarTitleText: '',
- };
- this.state = {
- };
- }
-
- componentWillMount() { }
-
- componentDidMount() { }
-
- componentWillUnmount() { }
-
- componentDidShow() { }
-
- componentDidHide() { }
-
- render() {
- return (
- <div className="jurisdiction-person-mgt-main margin bg-white">
- <BreadcrumbView />
-
- <JurisdictionPersonMgtPage {...this.props} />
- </div>
- )
- }
-}
-
diff --git a/src/pages/document/DocumentDetail.jsx b/src/pages/document/DocumentDetail.jsx
index a490ea9..df40271 100644
--- a/src/pages/document/DocumentDetail.jsx
+++ b/src/pages/document/DocumentDetail.jsx
@@ -31,7 +31,7 @@
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>
diff --git a/src/pages/document/DocumentEdit.jsx b/src/pages/document/DocumentEdit.jsx
index 68b4b10..e0f05bf 100644
--- a/src/pages/document/DocumentEdit.jsx
+++ b/src/pages/document/DocumentEdit.jsx
@@ -31,7 +31,6 @@
render() {
return (
<div className="document-edit-main h-100 flex-box-column">
- <BreadcrumbView data={[{ name: '新建文档' }]} />
<div className="flex-1">
<DocumentEditPage {...this.props} />
</div>
diff --git a/src/pages/index/Announcement.jsx b/src/pages/index/Announcement.jsx
index 7b6fa38..0462c88 100644
--- a/src/pages/index/Announcement.jsx
+++ b/src/pages/index/Announcement.jsx
@@ -27,16 +27,9 @@
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>
-// )
-//}
+
diff --git a/src/pages/logManage/browseLog.jsx b/src/pages/logManage/browseLog.jsx
new file mode 100644
index 0000000..1c8c204
--- /dev/null
+++ b/src/pages/logManage/browseLog.jsx
@@ -0,0 +1,34 @@
+/* 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>
+ )
+ }
+}
+
diff --git a/src/pages/logManage/operLog.jsx b/src/pages/logManage/operLog.jsx
new file mode 100644
index 0000000..7f2d1e9
--- /dev/null
+++ b/src/pages/logManage/operLog.jsx
@@ -0,0 +1,34 @@
+/* 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>
+ )
+ }
+}
+
diff --git a/src/pages/personal/information.jsx b/src/pages/personal/information.jsx
new file mode 100644
index 0000000..362e006
--- /dev/null
+++ b/src/pages/personal/information.jsx
@@ -0,0 +1,42 @@
+/* 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>
+ )
+ }
+}
--
Gitblit v1.8.0