forked from huge/frontEnd/hugeOA

Mr Ke
2020-04-29 2ea56ed08b58386f0612635101b1acd51cd4a44c
浏览日志,操作日志;用户中心(个人信息);用户管理(用户中心)
4 files deleted
13 files added
16 files modified
1610 ■■■■ changed files
report.20200429.154239.11428.0.001.json 479 ●●●●● patch | view | raw | blame | history
src/api/httpurl.js 4 ●●●● patch | view | raw | blame | history
src/components/common/ChangePswView/index.jsx 105 ●●●●● patch | view | raw | blame | history
src/components/common/ChangePswView/index.scss 1 ●●●● patch | view | raw | blame | history
src/components/common/ChangePswView/test.jsx 17 ●●●●● patch | view | raw | blame | history
src/components/common/FindAlreadyReadOrNotView/index.jsx 11 ●●●● patch | view | raw | blame | history
src/components/common/HeadView/index.jsx 2 ●●● patch | view | raw | blame | history
src/components/common/HotListTableView/index.jsx 2 ●●●●● patch | view | raw | blame | history
src/components/common/NotifyList/index.jsx 9 ●●●●● patch | view | raw | blame | history
src/components/common/SearchFormView/index.jsx 13 ●●●● patch | view | raw | blame | history
src/components/common/TopListTableView/index.jsx 18 ●●●● patch | view | raw | blame | history
src/components/page/AnnouncementPage/index.jsx 8 ●●●●● patch | view | raw | blame | history
src/components/page/DocumentEditPage/index.jsx 1 ●●●● patch | view | raw | blame | history
src/components/page/index/rulesList/index.jsx 8 ●●●●● patch | view | raw | blame | history
src/components/page/jurisdictionPersonMgt/index.jsx 110 ●●●●● patch | view | raw | blame | history
src/components/page/jurisdictionPersonMgt/index.scss 12 ●●●●● patch | view | raw | blame | history
src/components/page/jurisdictionPersonMgt/tag.js 30 ●●●●● patch | view | raw | blame | history
src/components/page/logManage/browseLog/index.jsx 102 ●●●●● patch | view | raw | blame | history
src/components/page/logManage/browseLog/index.scss 14 ●●●●● patch | view | raw | blame | history
src/components/page/logManage/operLog/index.jsx 106 ●●●●● patch | view | raw | blame | history
src/components/page/logManage/operLog/index.scss 14 ●●●●● patch | view | raw | blame | history
src/components/page/personal/information/index.jsx 270 ●●●●● patch | view | raw | blame | history
src/components/page/personal/information/index.scss 14 ●●●●● patch | view | raw | blame | history
src/index.css 2 ●●●●● patch | view | raw | blame | history
src/index.js 13 ●●●● patch | view | raw | blame | history
src/menu/menu.data.js 78 ●●●● patch | view | raw | blame | history
src/pages/collect/jurisdictionPersonMgt.jsx 45 ●●●●● patch | view | raw | blame | history
src/pages/document/DocumentDetail.jsx 2 ●●● patch | view | raw | blame | history
src/pages/document/DocumentEdit.jsx 1 ●●●● patch | view | raw | blame | history
src/pages/index/Announcement.jsx 9 ●●●● patch | view | raw | blame | history
src/pages/logManage/browseLog.jsx 34 ●●●●● patch | view | raw | blame | history
src/pages/logManage/operLog.jsx 34 ●●●●● patch | view | raw | blame | history
src/pages/personal/information.jsx 42 ●●●●● patch | view | raw | blame | history
report.20200429.154239.11428.0.001.json
New file
@@ -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"
  ]
}
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地址
src/components/common/ChangePswView/index.jsx
New file
@@ -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;
src/components/common/ChangePswView/index.scss
New file
@@ -0,0 +1 @@
src/components/common/ChangePswView/test.jsx
New file
@@ -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>
    );
  }
}
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>
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' }}>
      {
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,
    });
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 || ''
        })
      }
    })
  }
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');
                                        }}>
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}>
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 &&
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',
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 &&
src/components/page/jurisdictionPersonMgt/index.jsx
File was deleted
src/components/page/jurisdictionPersonMgt/index.scss
File was deleted
src/components/page/jurisdictionPersonMgt/tag.js
File was deleted
src/components/page/logManage/browseLog/index.jsx
New file
@@ -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>
    )
  }
}
src/components/page/logManage/browseLog/index.scss
New file
@@ -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;
  }
}
src/components/page/logManage/operLog/index.jsx
New file
@@ -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>
    )
  }
}
src/components/page/logManage/operLog/index.scss
New file
@@ -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;
  }
}
src/components/page/personal/information/index.jsx
New file
@@ -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;
src/components/page/personal/information/index.scss
New file
@@ -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;
  }
}
src/index.css
@@ -31,3 +31,5 @@
  overflow: auto;
}
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} />
              {/* 路由的页面重定向 */}
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;
src/pages/collect/jurisdictionPersonMgt.jsx
File was deleted
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>
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>
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>
//    )
//}
src/pages/logManage/browseLog.jsx
New file
@@ -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>
    )
  }
}
src/pages/logManage/operLog.jsx
New file
@@ -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>
    )
  }
}
src/pages/personal/information.jsx
New file
@@ -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>
    )
  }
}