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