Browse Source

Merge branch 'dev-yantai-1017' into dev

dev-用户反馈
jiangyy 3 years ago
parent
commit
c8855f5bf0
  1. 3
      .env.development
  2. 1
      .env.production
  3. 3
      .env.production.sit
  4. 3
      .env.production.uat
  5. 1
      package.json
  6. 4
      public/index.html
  7. 580
      report.20221017.102821.29368.0.001.json
  8. BIN
      src/assets/img/yantai/index/bg.png
  9. BIN
      src/assets/img/yantai/index/db.png
  10. BIN
      src/assets/img/yantai/index/guanli.png
  11. BIN
      src/assets/img/yantai/index/shuju.png
  12. BIN
      src/assets/img/yantai/index/you.png
  13. BIN
      src/assets/img/yantai/index/yuanhu-you.png
  14. BIN
      src/assets/img/yantai/index/yuanhu-zuo.png
  15. BIN
      src/assets/img/yantai/index/zuo.png
  16. BIN
      src/assets/img/yantai/login/bg.jpg
  17. BIN
      src/assets/img/yantai/login/bg.png
  18. 1
      src/assets/scss/modules/visual/shijianchulifenxi.scss
  19. 185
      src/assets/scss/pages/yantai-index.scss
  20. 210
      src/assets/scss/pages/yantai-login.scss
  21. 7
      src/assets/scss/people-info.scss
  22. 37
      src/router/index.js
  23. 17
      src/views/components/resiSearch.vue
  24. 4
      src/views/main-navbar.vue
  25. 4
      src/views/main-shuju/main-navbar.vue
  26. 2
      src/views/modules/base/community/communityTable.vue
  27. 43
      src/views/modules/base/community/roomDetail.vue
  28. 57
      src/views/modules/base/community/roomForm.vue
  29. 57
      src/views/modules/base/community/roomTable.vue
  30. 21
      src/views/modules/base/epidemic/natInfo/noNatDetail.vue
  31. 6
      src/views/modules/base/epidemic/natInfo/noNatList.vue
  32. 5
      src/views/modules/base/organization/organization.vue
  33. 1658
      src/views/modules/base/resi.vue
  34. 4
      src/views/modules/renFangTongJi/cpts/shequtongji.vue
  35. 440
      src/views/modules/shequ/cpts/people-more.vue
  36. 412
      src/views/modules/shequzhili/event/cpts/add.vue
  37. 175
      src/views/modules/visual/command/cpts/popup.vue
  38. 2
      src/views/modules/visual/communityGovern/fivelayers/mapIndex copy 2.vue
  39. 2
      src/views/modules/visual/communityGovern/fivelayers/mapIndex copy.vue
  40. 2
      src/views/modules/visual/communityGovern/fivelayers/mapIndex-baidu.vue
  41. 8
      src/views/modules/visual/communityGovern/shijianchuli/chart.js
  42. 125
      src/views/modules/visual/communityGovern/shijianchuli/lineOption.js
  43. 2
      src/views/modules/visual/communityGovern/shijianchuli/shijianchulifenxi copy.vue
  44. 867
      src/views/modules/visual/communityGovern/shijianchuli/shijianchulifenxi.vue
  45. 15
      src/views/modules/workSys/dataOpenConfig.vue
  46. 378
      src/views/modules/workSys/operAuth.vue
  47. 209
      src/views/pages/yantai-index.vue
  48. 435
      src/views/pages/yantai-login.vue

3
.env.development

@ -11,4 +11,5 @@ VUE_APP_API_SERVER = http://192.168.1.140/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api
VUE_APP_NODE_ENV=dev
#项目根路径
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_CUSTOMER=yantai

1
.env.production

@ -2,3 +2,4 @@ NODE_ENV=production
VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api
VUE_APP_NODE_ENV=prod
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_CUSTOMER=yantai

3
.env.production.sit

@ -2,4 +2,5 @@ NODE_ENV=production
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
VUE_APP_API_SERVER = http://192.168.1.140/api
VUE_APP_NODE_ENV=prod:sit
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_CUSTOMER=yantai

3
.env.production.uat

@ -2,4 +2,5 @@ NODE_ENV=production
# VUE_APP_API_SERVER = http://120.27.18.76/api
VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
VUE_APP_NODE_ENV=prod:uat
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_PUBLIC_PATH=epmet-oper
VUE_APP_CUSTOMER=yantai

1
package.json

@ -41,6 +41,7 @@
"mint-ui": "^2.2.13",
"node-sass": "^4.12.0",
"ol": "^6.9.0",
"particles.js": "^2.0.0",
"portfinder": "^1.0.21",
"qs": "^6.7.0",
"quill": "^1.3.6",

4
public/index.html

@ -7,6 +7,10 @@
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover" />
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico" />
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
/>
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=LWBBZ-TIGC3-VFP3L-YNMWH-FJB7T-JFBLO"></script>
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
<!-- f2图表 -->

580
report.20221017.102821.29368.0.001.json

@ -0,0 +1,580 @@
{
"header": {
"event": "Allocation failed - JavaScript heap out of memory",
"trigger": "FatalError",
"filename": "report.20221017.102821.29368.0.001.json",
"dumpEventTime": "2022-10-17T10:28:21Z",
"processId": 29368,
"cwd": "D:\\Project\\Web\\epmet-oper-gov",
"commandLine": [
"node",
"D:\\Project\\Web\\epmet-oper-gov\\node_modules\\.bin\\\\..\\_@vue_cli-service@3.12.1@@vue\\cli-service\\bin\\vue-cli-service.js",
"serve"
],
"nodejsVersion": "v11.15.0",
"wordSize": 64,
"arch": "x64",
"platform": "win32",
"componentVersions": {
"node": "11.15.0",
"v8": "7.0.276.38-node.19",
"uv": "1.27.0",
"zlib": "1.2.11",
"brotli": "1.0.7",
"ares": "1.15.0",
"modules": "67",
"nghttp2": "1.37.0",
"napi": "4",
"llhttp": "1.1.1",
"http_parser": "2.8.0",
"openssl": "1.1.1b",
"cldr": "34.0",
"icu": "63.1",
"tz": "2018e",
"unicode": "11.0"
},
"release": {
"name": "node",
"headersUrl": "https://nodejs.org/download/release/v11.15.0/node-v11.15.0-headers.tar.gz",
"sourceUrl": "https://nodejs.org/download/release/v11.15.0/node-v11.15.0.tar.gz",
"libUrl": "https://nodejs.org/download/release/v11.15.0/win-x64/node.lib"
},
"osName": "Windows_NT",
"osRelease": "10.0.22621",
"osVersion": "Windows 10 Home China",
"osMachine": "x86_64",
"host": "DESKTOP-KD168PS"
},
"javascriptStack": {
"message": "No stack.",
"stack": [
"Unavailable."
]
},
"nativeStack": [
{
"pc": "0x00007ff7ab21d24e",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+16366"
},
{
"pc": "0x00007ff7ab21c0f9",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+11929"
},
{
"pc": "0x00007ff7ab21b923",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+9923"
},
{
"pc": "0x00007ff7ab30dc22",
"symbol": "uv_loop_fork+89362"
},
{
"pc": "0x00007ff7ab73609e",
"symbol": "v8::internal::FatalProcessOutOfMemory+798"
},
{
"pc": "0x00007ff7ab735fd7",
"symbol": "v8::internal::FatalProcessOutOfMemory+599"
},
{
"pc": "0x00007ff7ab7e9a14",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+14068"
},
{
"pc": "0x00007ff7ab7df822",
"symbol": "v8::internal::Heap::CollectGarbage+7234"
},
{
"pc": "0x00007ff7ab7de038",
"symbol": "v8::internal::Heap::CollectGarbage+1112"
},
{
"pc": "0x00007ff7ab7e7967",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+5703"
},
{
"pc": "0x00007ff7ab7e79e6",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+5830"
},
{
"pc": "0x00007ff7ab91f8b1",
"symbol": "v8::internal::Factory::NewFillerObject+49"
},
{
"pc": "0x00007ff7ab9d9786",
"symbol": "v8::internal::StoreBuffer::StoreBufferOverflow+27190"
},
{
"pc": "0x00000104951d0481",
"symbol": ""
}
],
"javascriptHeap": {
"totalMemory": 1501376512,
"totalCommittedMemory": 1501376512,
"usedMemory": 1346924536,
"availableMemory": 39500640,
"memoryLimit": 1526909922,
"heapSpaces": {
"read_only_space": {
"memorySize": 524288,
"committedMemory": 524288,
"capacity": 515584,
"used": 33520,
"available": 482064
},
"new_space": {
"memorySize": 33554432,
"committedMemory": 33554432,
"capacity": 16498688,
"used": 1868816,
"available": 14629872
},
"old_space": {
"memorySize": 1206063104,
"committedMemory": 1206063104,
"capacity": 1114694856,
"used": 1113755240,
"available": 939616
},
"code_space": {
"memorySize": 11534336,
"committedMemory": 11534336,
"capacity": 9093152,
"used": 9093152,
"available": 0
},
"map_space": {
"memorySize": 31993856,
"committedMemory": 31993856,
"capacity": 6363360,
"used": 6363360,
"available": 0
},
"large_object_space": {
"memorySize": 217706496,
"committedMemory": 217706496,
"capacity": 239259536,
"used": 215810448,
"available": 23449088
},
"new_large_object_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
}
}
},
"resourceUsage": {
"userCpuSeconds": 2690.61,
"kernelCpuSeconds": 179.828,
"cpuConsumptionPercent": 0.692249,
"maxRss": 1829195776,
"pageFaults": {
"IORequired": 48054699,
"IONotRequired": 0
},
"fsActivity": {
"reads": 145756,
"writes": 5834
}
},
"libuv": [
],
"environmentVariables": {
"=C:": "C:\\",
"=D:": "D:\\Project\\Web\\epmet-oper-gov",
"add_path": "D:\\APP\\cmder",
"add_to_path": "D:\\APP\\cmder",
"aliases": "D:\\APP\\cmder\\config\\user_aliases.cmd",
"ALLUSERSPROFILE": "C:\\ProgramData",
"ANSICON": "90x1000 (90x24)",
"ANSICON_DEF": "7",
"APPDATA": "C:\\Users\\lenovo\\AppData\\Roaming",
"architecture_bits": "64",
"BABEL_ENV": "development",
"ccall": "call \"D:\\APP\\cmder\\vendor\\bin\\cexec.cmd\"",
"cexec": "\"D:\\APP\\cmder\\vendor\\bin\\cexec.cmd\"",
"clink_architecture": "x64",
"CMDER_ALIASES": "1",
"CMDER_CLINK": "1",
"CMDER_CONFIGURED": "1",
"CMDER_INIT_END": "10:45:24.68",
"CMDER_INIT_START": "10:45:22.18",
"CMDER_ROOT": "D:\\APP\\cmder",
"CMDER_SHELL": "cmd",
"CMDER_USER_FLAGS": " ",
"COLUMNS": "90",
"CommonProgramFiles": "C:\\Program Files\\Common Files",
"CommonProgramFiles(x86)": "C:\\Program Files (x86)\\Common Files",
"CommonProgramW6432": "C:\\Program Files\\Common Files",
"COMPUTERNAME": "DESKTOP-KD168PS",
"ComSpec": "C:\\WINDOWS\\system32\\cmd.exe",
"ConEmuANSI": "ON",
"ConEmuAnsiLog": "",
"ConEmuArgs": "/Icon \"D:\\APP\\cmder\\icons\\cmder.ico\" /Title Cmder /dir \"D:\\Project\\Web\\epmet-oper-gov\"",
"ConEmuArgs2": "",
"ConEmuBackHWND": "0x00020E34",
"ConEmuBaseDir": "D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu",
"ConEmuBaseDirShort": "D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu",
"ConEmuBuild": "210912",
"ConEmuCfgDir": "D:\\APP\\cmder\\vendor\\conemu-maximus5",
"ConEmuConfig": "",
"ConEmuDir": "D:\\APP\\cmder\\vendor\\conemu-maximus5",
"ConEmuDrawHWND": "0x00020E38",
"ConEmuDrive": "D:",
"ConEmuHooks": "Enabled",
"ConEmuHWND": "0x00390A98",
"ConEmuPalette": "Monokai",
"ConEmuPID": "24844",
"ConEmuServerPID": "14680",
"ConEmuTask": "{cmd::Cmder}",
"ConEmuWorkDir": "D:\\Project\\Web\\epmet-oper-gov",
"ConEmuWorkDrive": "D:",
"currenArgu": "/setpath",
"debug_output": "0",
"depth": "1",
"dp0": "D:\\Project\\Web\\epmet-oper-gov\\node_modules\\.bin\\",
"DriverData": "C:\\Windows\\System32\\Drivers\\DriverData",
"fast_init": "0",
"feFlagName": " ",
"feNot": "false",
"find_query": "D:\\\\APP\\\\cmder",
"found": "1",
"git_executable": "D:\\APP\\Git\\cmd\\git.exe",
"GIT_INSTALL_ROOT": "D:\\APP\\Git",
"git_locale": "\"D:\\APP\\Git\\usr\\bin\\locale.exe\"",
"GIT_VERSION_USER": "2.31.1.windows.1",
"HOME": "C:\\Users\\lenovo",
"HOMEDRIVE": "C:",
"HOMEPATH": "\\Users\\lenovo",
"INIT_CWD": "D:\\Project\\Web\\epmet-oper-gov",
"LANG": "zh_CN.UTF-8",
"lib_base": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_base.cmd\"",
"lib_console": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_console.cmd\"",
"lib_git": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_git.cmd\"",
"lib_path": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_path.cmd\"",
"lib_profile": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_profile.cmd\"",
"LINES": "24",
"LOCALAPPDATA": "C:\\Users\\lenovo\\AppData\\Local",
"LOGONSERVER": "\\\\DESKTOP-KD168PS",
"max_depth": "1",
"nix_tools": "1",
"NODE": "D:\\APP\\nodejs\\node.exe",
"NODE_ENV": "development",
"NODE_EXE": "D:\\APP\\nodejs\\\\node.exe",
"NPM_CLI_JS": "D:\\APP\\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\":[\"run\",\"dev\"],\"original\":[\"run\",\"dev\"]}",
"npm_config_audit": "true",
"npm_config_audit_level": "low",
"npm_config_auth_type": "legacy",
"npm_config_bin_links": "true",
"npm_config_browser": "",
"npm_config_ca": "",
"npm_config_cache": "C:\\Users\\lenovo\\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_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\\lenovo\\AppData\\Roaming\\npm\\etc\\npmrc",
"npm_config_globalignorefile": "C:\\Users\\lenovo\\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\\lenovo\\.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.npmjs.org/",
"npm_config_node_gyp": "D:\\APP\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js",
"npm_config_node_options": "",
"npm_config_node_version": "11.15.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\\lenovo\\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.npmjs.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\\lenovo\\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\\lenovo\\.npmrc",
"npm_config_user_agent": "npm/6.7.0 node/v11.15.0 win32 x64",
"npm_config_version": "",
"npm_config_versions": "",
"npm_config_viewer": "browser",
"npm_execpath": "D:\\APP\\nodejs\\node_modules\\npm\\bin\\npm-cli.js",
"npm_lifecycle_event": "dev",
"npm_lifecycle_script": "vue-cli-service serve",
"npm_node_execpath": "D:\\APP\\nodejs\\node.exe",
"npm_package_browserslist_0": "> 1%",
"npm_package_browserslist_1": "last 2 versions",
"npm_package_browserslist_2=not ie <": " 10",
"npm_package_dependencies_async_validator": "^4.2.5",
"npm_package_dependencies_axios": "^0.19.0",
"npm_package_dependencies_babel_eslint": "^8.0.1",
"npm_package_dependencies_babel_plugin_component": "^1.1.1",
"npm_package_dependencies_echarts": "^5.2.2",
"npm_package_dependencies_echarts_gl": "^2.0.9",
"npm_package_dependencies_element_theme": "^2.0.1",
"npm_package_dependencies_element_ui": "^2.13.0",
"npm_package_dependencies_file_saver": "^2.0.5",
"npm_package_dependencies_gulp_autoprefixer": "^6.1.0",
"npm_package_dependencies_gulp_clean_css": "^4.2.0",
"npm_package_dependencies_gulp_load_plugins": "^2.0.0",
"npm_package_dependencies_gulp_rename": "^1.4.0",
"npm_package_dependencies_gulp_sass": "^4.0.2",
"npm_package_dependencies_jsencrypt": "^3.0.3",
"npm_package_dependencies_js_cookie": "^2.2.0",
"npm_package_dependencies_lodash": "^4.17.15",
"npm_package_dependencies_mint_ui": "^2.2.13",
"npm_package_dependencies_node_sass": "^4.12.0",
"npm_package_dependencies_ol": "^6.9.0",
"npm_package_dependencies_portfinder": "^1.0.21",
"npm_package_dependencies_qs": "^6.7.0",
"npm_package_dependencies_quill": "^1.3.6",
"npm_package_dependencies_sass_loader": "^7.1.0",
"npm_package_dependencies_screenfull": "^4.2.1",
"npm_package_dependencies_sortablejs": "^1.12.0",
"npm_package_dependencies_svg_sprite_loader": "^4.1.6",
"npm_package_dependencies_throttle_debounce": "^3.0.1",
"npm_package_dependencies_vue": "^2.6.11",
"npm_package_dependencies_vuex": "^3.1.1",
"npm_package_dependencies_vue_baidu_map": "^0.21.22",
"npm_package_dependencies_vue_i18n": "^8.12.0",
"npm_package_dependencies_vue_quill_editor": "^3.0.6",
"npm_package_dependencies_vue_router": "^3.0.7",
"npm_package_dependencies_v_distpicker": "^1.2.2",
"npm_package_dependencies_xlsx": "^0.17.1",
"npm_package_dependencies__antv_l7": "2.9.14",
"npm_package_dependencies__antv_l7_draw": "3.0.5",
"npm_package_dependencies__antv_l7_maps": "2.9.14",
"npm_package_dependencies__riophae_vue_treeselect": "^0.4.0",
"npm_package_dependencies__tinymce_tinymce_vue": "^3.2.8",
"npm_package_description": "## Project setup ``` npm install ```",
"npm_package_devDependencies_dai_js": "^0.0.12",
"npm_package_devDependencies_element_theme_chalk": "^2.13.0",
"npm_package_devDependencies_natives": "^1.1.6",
"npm_package_devDependencies_ol": "^6.9.0",
"npm_package_devDependencies_script_loader": "^0.7.2",
"npm_package_devDependencies_tinymce": "^5.8.2",
"npm_package_devDependencies_vue_template_compiler": "^2.6.11",
"npm_package_devDependencies__antv_f2": "^3.8.10-beta.1",
"npm_package_devDependencies__tinymce_tinymce_vue": "^3.2.8",
"npm_package_devDependencies__vue_cli_plugin_babel": "^3.10.0",
"npm_package_devDependencies__vue_cli_plugin_eslint": "^3.10.0",
"npm_package_devDependencies__vue_cli_service": "^3.10.0",
"npm_package_devDependencies__vue_eslint_config_standard": "^4.0.0",
"npm_package_element_theme_browsers_0": "> 1%",
"npm_package_element_theme_browsers_1": "last 2 versions",
"npm_package_element_theme_browsers_2=not ie <": " 10",
"npm_package_element_theme_config": "./src/element-ui/theme-variables.scss",
"npm_package_element_theme_minimize": "true",
"npm_package_element_theme_out": "./src/element-ui/theme",
"npm_package_engines_node=>": " 8.11.1",
"npm_package_engines_npm=>": " 5.6.0",
"npm_package_eslintConfig_env_node": "true",
"npm_package_eslintConfig_extends_0": "plugin:vue/essential",
"npm_package_eslintConfig_extends_1": "@vue/standard",
"npm_package_eslintConfig_parserOptions_parser": "babel-eslint",
"npm_package_eslintConfig_root": "true",
"npm_package_gitHead": "c3dee098d64cf40debbc5455d165b478a335f317",
"npm_package_name": "epmet-oper-web",
"npm_package_private": "true",
"npm_package_readmeFilename": "README.md",
"npm_package_scripts_build": "vue-cli-service build",
"npm_package_scripts_build_prod": "vue-cli-service build --mode production",
"npm_package_scripts_build_shibei_prod": "vue-cli-service build --mode shibei_production",
"npm_package_scripts_build_sit": "vue-cli-service build --mode production.sit",
"npm_package_scripts_build_uat": "vue-cli-service build --mode production.uat",
"npm_package_scripts_dev": "vue-cli-service serve",
"npm_package_scripts_et": "et",
"npm_package_scripts_et_init": "et -i",
"npm_package_scripts_et_list": "gulp themes",
"npm_package_scripts_lint": "vue-cli-service lint",
"npm_package_scripts_serve": "vue-cli-service serve",
"npm_package_version": "2.0.0",
"NPM_PREFIX_NPM_CLI_JS": "C:\\Users\\lenovo\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js",
"NUMBER_OF_PROCESSORS": "8",
"OLD_PATH": "D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu\\Scripts;D:\\APP\\cmder\\vendor\\conemu-maximus5;D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;D:\\APP\\cmder;D:\\APP\\Git\\cmd;D:\\APP\\微信web开发者工具\\dll;D:\\APP\\nodejs\\;D:\\APP\\python\\Scripts\\;D:\\APP\\python\\;C:\\Users\\lenovo\\AppData\\Local\\Microsoft\\WindowsApps;D:\\APP\\Microsoft VS Code\\bin;C:\\Users\\lenovo\\AppData\\Roaming\\npm;D:\\APP\\Git\\mingw64\\bin;D:\\APP\\Git\\usr\\bin;D:\\APP\\cmder\\vendor\\bin",
"OneDrive": "C:\\Users\\lenovo\\OneDrive",
"OS": "Windows_NT",
"Path": "D:\\APP\\nodejs\\node_modules\\npm\\node_modules\\npm-lifecycle\\node-gyp-bin;D:\\Project\\Web\\epmet-oper-gov\\node_modules\\.bin;D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu\\Scripts;D:\\APP\\cmder\\vendor\\conemu-maximus5;D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;D:\\APP\\cmder;D:\\APP\\Git\\cmd;D:\\APP\\微信web开发者工具\\dll;D:\\APP\\nodejs\\;D:\\APP\\python\\Scripts\\;D:\\APP\\python\\;C:\\Users\\lenovo\\AppData\\Local\\Microsoft\\WindowsApps;D:\\APP\\Microsoft VS Code\\bin;C:\\Users\\lenovo\\AppData\\Roaming\\npm;D:\\APP\\Git\\mingw64\\bin;D:\\APP\\Git\\usr\\bin;D:\\APP\\cmder\\vendor\\bin",
"PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JSE;.WSF;.WSH;.MSC",
"path_position": "append",
"PLINK_PROTOCOL": "ssh",
"position": "append",
"print_debug": "if 0 gtr 0 call \"D:\\APP\\cmder\\vendor\\lib\\lib_console.cmd\" debug_output",
"print_error": "call \"D:\\APP\\cmder\\vendor\\lib\\lib_console.cmd\" show_error",
"print_verbose": "if 0 gtr 0 call \"D:\\APP\\cmder\\vendor\\lib\\lib_console.cmd\" verbose_output",
"PROCESSOR_ARCHITECTURE": "AMD64",
"PROCESSOR_IDENTIFIER": "Intel64 Family 6 Model 142 Stepping 12, GenuineIntel",
"PROCESSOR_LEVEL": "6",
"PROCESSOR_REVISION": "8e0c",
"ProgramData": "C:\\ProgramData",
"ProgramFiles": "C:\\Program Files",
"ProgramFiles(x86)": "C:\\Program Files (x86)",
"ProgramW6432": "C:\\Program Files",
"PROMPT": "C\bL\bI\bN\bK\b \b$P$G",
"PSModulePath": "C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules",
"PUBLIC": "C:\\Users\\Public",
"SESSIONNAME": "Console",
"SVN_SSH": "D:\\\\APP\\\\Git\\\\bin\\\\ssh.exe",
"SystemDrive": "C:",
"SystemRoot": "C:\\WINDOWS",
"TEMP": "C:\\Users\\lenovo\\AppData\\Local\\Temp",
"TERM": "cygwin",
"time_init": "0",
"TMP": "C:\\Users\\lenovo\\AppData\\Local\\Temp",
"USERDOMAIN": "DESKTOP-KD168PS",
"USERDOMAIN_ROAMINGPROFILE": "DESKTOP-KD168PS",
"USERNAME": "lenovo",
"USERPROFILE": "C:\\Users\\lenovo",
"user_aliases": "D:\\APP\\cmder\\config\\user_aliases.cmd",
"USER_BUILD": "windows.1",
"USER_MAJOR": "2",
"USER_MINOR": "31",
"USER_PATCH": "1",
"verbose_output": "0",
"VUE_APP_API_SERVER": "http://192.168.1.140/api",
"VUE_APP_NODE_ENV": "dev",
"VUE_APP_PUBLIC_PATH": "epmet-oper",
"VUE_CLI_ENTRY_FILES": "[\"D:\\\\Project\\\\Web\\\\epmet-oper-gov\\\\src\\\\main.js\"]",
"WEBPACK_DEV_SERVER": "true",
"windir": "C:\\WINDOWS",
"ZES_ENABLE_SYSMAN": "1",
"_prog": "node"
},
"sharedObjects": [
"D:\\APP\\nodejs\\node.exe",
"C:\\WINDOWS\\SYSTEM32\\ntdll.dll",
"C:\\WINDOWS\\System32\\KERNEL32.DLL",
"C:\\WINDOWS\\System32\\KERNELBASE.dll",
"C:\\WINDOWS\\System32\\PSAPI.DLL",
"C:\\WINDOWS\\System32\\WS2_32.dll",
"C:\\WINDOWS\\System32\\RPCRT4.dll",
"C:\\WINDOWS\\System32\\ADVAPI32.dll",
"C:\\WINDOWS\\System32\\msvcrt.dll",
"C:\\WINDOWS\\System32\\sechost.dll",
"C:\\WINDOWS\\System32\\USER32.dll",
"C:\\WINDOWS\\System32\\win32u.dll",
"C:\\WINDOWS\\System32\\GDI32.dll",
"C:\\WINDOWS\\System32\\gdi32full.dll",
"C:\\WINDOWS\\SYSTEM32\\dbghelp.dll",
"C:\\WINDOWS\\System32\\msvcp_win.dll",
"C:\\WINDOWS\\System32\\ucrtbase.dll",
"C:\\WINDOWS\\System32\\combase.dll",
"C:\\WINDOWS\\System32\\CRYPT32.dll",
"C:\\WINDOWS\\System32\\OLEAUT32.dll",
"C:\\WINDOWS\\SYSTEM32\\IPHLPAPI.DLL",
"C:\\WINDOWS\\SYSTEM32\\bcrypt.dll",
"C:\\WINDOWS\\SYSTEM32\\USERENV.dll",
"C:\\WINDOWS\\SYSTEM32\\WINMM.dll",
"C:\\WINDOWS\\System32\\IMM32.DLL",
"D:\\APP\\cmder\\vendor\\conemu-maximus5\\ConEmu\\ConEmuHk64.dll",
"C:\\WINDOWS\\SYSTEM32\\powrprof.dll",
"C:\\WINDOWS\\SYSTEM32\\UMPDC.dll",
"C:\\WINDOWS\\system32\\uxtheme.dll",
"C:\\WINDOWS\\system32\\mswsock.dll",
"C:\\WINDOWS\\SYSTEM32\\kernel.appcore.dll",
"C:\\WINDOWS\\System32\\bcryptprimitives.dll",
"C:\\WINDOWS\\system32\\napinsp.dll",
"C:\\WINDOWS\\system32\\pnrpnsp.dll",
"C:\\WINDOWS\\SYSTEM32\\DNSAPI.dll",
"C:\\WINDOWS\\System32\\NSI.dll",
"C:\\WINDOWS\\System32\\winrnr.dll",
"C:\\WINDOWS\\system32\\wshbth.dll",
"C:\\WINDOWS\\system32\\nlansp_c.dll",
"C:\\WINDOWS\\SYSTEM32\\dhcpcsvc6.DLL",
"C:\\WINDOWS\\SYSTEM32\\dhcpcsvc.DLL",
"C:\\WINDOWS\\SYSTEM32\\CRYPTBASE.DLL",
"\\\\?\\D:\\Project\\Web\\epmet-oper-gov\\node_modules\\_node-sass@4.14.1@node-sass\\vendor\\win32-x64-67\\binding.node"
]
}

BIN
src/assets/img/yantai/index/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
src/assets/img/yantai/index/db.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
src/assets/img/yantai/index/guanli.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
src/assets/img/yantai/index/shuju.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
src/assets/img/yantai/index/you.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/img/yantai/index/yuanhu-you.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
src/assets/img/yantai/index/yuanhu-zuo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
src/assets/img/yantai/index/zuo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/img/yantai/login/bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

BIN
src/assets/img/yantai/login/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

1
src/assets/scss/modules/visual/shijianchulifenxi.scss

@ -22,6 +22,7 @@
}
.l_bottom {
height: calc(988px - 200px - 365px);
max-height: 450px;
margin-top: 0;
}
}

185
src/assets/scss/pages/yantai-index.scss

@ -0,0 +1,185 @@
@import "~@/assets/scss/c/config.scss";
@import "~@/assets/scss/c/function.scss";
.g-cnt {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image: url(~@/assets/img/yantai/index/bg.png);
background-size: cover;
background-position: center;
}
.m-top {
position: absolute;
top: 0;
width: 1920px;
left: -1000px;
right: -1000px;
margin: 0 auto;
.name {
position: absolute;
top: 0;
left: 0;
text-align: center;
width: 100%;
line-height: 90px;
font-size: 42px;
font-weight: bold;
color: #fff;
background-image: -webkit-linear-gradient(bottom, rgb(23, 222, 238), rgb(23, 222, 238), #fff, #fff);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
}
.m-list {
position: absolute;
top: 50%;
left: 0;
right: 0;
margin: auto;
transform: translateY(-50%);
.list {
display: flex;
justify-content: space-around;
align-items: center;
width: 100%;
margin: 0 auto;
.menu {
position: relative;
.menu-list {
position: absolute;
top: 50px;
width: 100%;
left: 0;
.menu-item {
position: relative;
margin-bottom: 40px;
width: 150px;
height: 70px;
line-height: 70px;
color: rgba(#fff, 0.6);
font-size: 20px;
border-radius: 60px;
text-align: center;
transition: all 0.2s ease;
cursor: pointer;
&.z-zuo {
left: 60px;
background: linear-gradient(to left, rgba(rgb(67, 67, 210), 0.3), rgba(#00a, 0));
box-shadow: -4px 4px 6px 0 inset rgba(#fff, 0.2);
&:nth-child(2),
&:nth-child(6) {
margin-left: 20px;
}
&:nth-child(3),
&:nth-child(5) {
margin-left: 20px * 2;
}
&:nth-child(4) {
margin-left: 20px * 2 + 1px;
}
}
&.z-you {
left: 70px;
background: linear-gradient(to right, rgba(rgb(67, 67, 210), 0.3), rgba(#00a, 0));
box-shadow: 4px 4px 6px 0 inset rgba(#fff, 0.2);
&:nth-child(2),
&:nth-child(6) {
margin-left: -20px;
}
&:nth-child(3),
&:nth-child(5) {
margin-left: -20px * 2;
}
&:nth-child(4) {
margin-left: -20px * 2 - 1px;
}
}
&:hover,
&.z-on {
transform: scale(1.15);
color: rgba(#fff, 0.95);
}
}
}
}
.arrow {
width: 60px;
margin: 0 20px;
}
.item {
position: relative;
margin: 0 50px;
width: 420px;
.item-wrap {
text-align: center;
cursor: pointer;
transition: all 0.2s ease;
&:hover {
transform: scale(1.1);
}
}
&.z-on {
.name {
color: #ffffff;
background-color: transparent;
border-color: #ffffff;
&::before {
background-color: #ffffff;
}
}
}
.logo {
width: 100%;
}
.name {
position: absolute;
top: 12%;
left: 0;
width: 100%;
font-size: 36px;
line-height: 40px;
color: #fff;
}
}
}
}
.m-footer {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 20px;
color: rgba(255, 255, 255, 0.6);
text-align: center;
p {
margin: 10px 0;
}
a {
padding: 0 5px;
color: rgba(255, 255, 255, 0.6);
&:focus,
&:hover {
color: #fff;
}
}
}

210
src/assets/scss/pages/yantai-login.scss

@ -0,0 +1,210 @@
@import "~@/assets/scss/c/config.scss";
@import "~@/assets/scss/c/function.scss";
.g-bd {
&::before,
&::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
content: "";
}
&::before {
background-image: url(~@/assets/img/yantai/login/bg.jpg);
background-size: cover;
}
&::after {
// background-color: rgba(38, 50, 56, 0.1);
}
}
.m-snow-box {
position: absolute;
top: 20vh;
width: 35vw;
height: 50vh;
left: 13vw;
border-radius: 40%;
// overflow: hidden;
}
.m-fm {
position: absolute;
top: 0;
bottom: 0;
right: 13%;
margin: auto;
width: 484px;
height: 429px;
background: rgba(#fff, 1);
box-shadow: 0px 0px 20px 2px rgba(150, 150, 200, 0.6);
border-radius: 12px 12px 12px 12px;
&:hover {
opacity: 1;
background: rgba(#fff, 1);
}
.wrap {
padding-top: 5px;
.title {
margin: 0 auto;
width: 400px;
line-height: 80px;
border-bottom: 1px solid #d4d4d4;
font-size: 34px;
font-family: PingFang SC;
font-weight: bold;
color: #000000;
text-align: center;
}
.fm {
padding: 15px 30px;
.fm-item {
box-sizing: border-box;
margin: 0 auto;
margin-top: 16px;
width: 400px;
height: 46px;
line-height: 46px;
border: 1px solid #c6c6c6;
border-radius: 4px;
display: flex;
align-items: center;
.input {
width: 85%;
input {
display: block;
padding-left: 15px;
line-height: 44px;
height: 44px;
width: 100%;
border: none;
}
}
.ico {
position: relative;
width: 35px;
height: 46px;
img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
}
}
.fm-captcha {
box-sizing: border-box;
margin: 0 auto;
margin-top: 16px;
width: 400px;
display: flex;
align-items: center;
.fm-item {
margin: 0;
width: 200px;
}
.captcha {
position: relative;
margin-left: auto;
width: 180px;
height: 46px;
img {
display: block;
width: 100%;
height: 100%;
background-color: #eee;
border: none;
}
}
}
.fm-btn {
box-sizing: border-box;
margin: 0 auto;
margin-top: 40px;
width: 400px;
height: 56px;
line-height: 56px;
background: linear-gradient(90deg, #1a5afd, #26c4ff);
border-radius: 4px;
font-size: 23px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
text-align: center;
cursor: pointer;
}
}
.hint {
display: none;
padding-left: 40px;
color: rgb(255, 80, 80);
}
}
}
.m-footer {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 20px;
color: rgba(255, 255, 255, 0.6);
text-align: center;
p {
margin: 10px 0;
}
a {
padding: 0 5px;
color: rgba(255, 255, 255, 0.6);
&:focus,
&:hover {
color: #fff;
}
}
}
.m-pop {
height: auto;
.div_row {
height: 50px;
text-align: center;
line-height: 50px;
&:hover {
color: rgb(2, 119, 173);
font-weight: bold;
text-decoration: underline;
}
.i_icon {
width: 15px;
height: 15px;
margin-right: 10px;
float: left;
}
.span_name {
font-size: 18px;
cursor: pointer;
/* color: rgb(37, 156, 235); */
}
}
}

7
src/assets/scss/people-info.scss

@ -20,6 +20,7 @@
width: 1180px;
overflow-y: auto;
overflow-x: hidden;
position: relative;
}
.title {
@ -40,6 +41,12 @@
}
}
.div_tuomin{
position: absolute;
top:25px;
right:40px;
}
.btn-close {
position: absolute;
z-index: 2;

37
src/router/index.js

@ -6,6 +6,7 @@ import store from "@/js/store";
Vue.use(Router);
const CUSTOMER = process.env.VUE_APP_CUSTOMER;
// 页面路由(独立页面)
export const pageRoutes = [
{
@ -26,7 +27,11 @@ export const pageRoutes = [
},
{
path: "/login",
component: () => import("@/views/pages/login"),
component: () => {
return CUSTOMER == "yantai"
? import("@/views/pages/yantai-login")
: import("@/views/pages/login");
},
name: "login",
meta: {
title: "登录",
@ -35,7 +40,11 @@ export const pageRoutes = [
{
path: "/",
name: "index",
component: () => import("@/views/pages/index"),
component: () => {
return CUSTOMER == "yantai"
? import("@/views/pages/yantai-index")
: import("@/views/pages/index");
},
},
{
path: "/indexWork",
@ -138,6 +147,18 @@ function cookApiDataItem(item) {
// });
return item;
}
// 把按钮都化为页面内部的权限
function cookApiDataItem2(item) {
let { children } = item;
if (children && Array.isArray(children) && children.length > 0) {
let btns = item.children.filter((item) => item.type == 1);
item.btns = btns;
item.children = item.children
.filter((val) => val.type == 0)
.map((val) => cookApiDataItem2(val));
}
return item;
}
// 模块路由(基于主入口布局页面) 可视化数据
export const moduleShujuRoutes = {
@ -145,7 +166,10 @@ export const moduleShujuRoutes = {
component: () => import("@/views/main-shuju/main"),
name: "main-shuju",
redirect: {
path: "/main-shuju/visual-basicinfo-basicInfoMain",
path:
CUSTOMER == "yantai" && process.env.VUE_APP_NODE_ENV == "prod"
? "/main-shuju/i-1536625421829599234"
: "/main-shuju/visual-basicinfo-basicInfoMain",
},
meta: {
title: "主入口布局",
@ -282,9 +306,9 @@ router.beforeEach((to, from, next) => {
name: "login",
});
}
window.SITE_CONFIG["menuList"] = res.data.map((item) =>
cookApiDataItem(item)
);
window.SITE_CONFIG["menuList"] = res.data
.map((item) => cookApiDataItem2(item))
.map((item) => cookApiDataItem(item));
fnAddDynamicMenuRoutes(window.SITE_CONFIG["menuList"]);
// next({ ...to, replace: true })
next({
@ -338,6 +362,7 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
...window.SITE_CONFIG["contentTabDefault"],
menuId: menuList[i].id,
title: menuList[i].name,
btns: menuList[i].btns || [],
},
};
// eslint-disable-next-line

17
src/views/components/resiSearch.vue

@ -281,7 +281,6 @@ export default {
else if (item.itemType == 'inputRange') _form[item.columnName] = { start: '', end: ''}
else _form[item.columnName] = ''
})
console.log('_form----------rrr', _form)
return _form
}
let itemList = this.formList.map(item => {
@ -310,10 +309,10 @@ export default {
}
let orgOptionProps = {
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
}
return {
@ -403,13 +402,13 @@ export default {
}
}
},
changeVDisabled() {
changeVDisabled () {
return !this.form.VILLAGE_ID
},
changeBDisabled() {
changeBDisabled () {
return !this.form.BUILD_ID
},
changeDDisabled() {
changeDDisabled () {
return !this.form.UNIT_ID
},
},
@ -428,7 +427,7 @@ export default {
deep: true
}
},
created() {
created () {
// this.initForm()
// console.log('formcccc---', this.form)
this.getOrgTreeList()

4
src/views/main-navbar.vue

@ -8,10 +8,10 @@
<div class="aui-navbar__header">
<h1 class="aui-navbar__brand" @click="$router.push({ name: 'home' })">
<a class="aui-navbar__brand-lg" href="javascript:;">{{
customerName
$store.state.user.agencyName
}}</a>
<a class="aui-navbar__brand-mini" href="javascript:;">{{
customerName.slice(0, 2)
$store.state.user.agencyName .slice(0, 2)
}}</a>
</h1>
</div>

4
src/views/main-shuju/main-navbar.vue

@ -3,9 +3,9 @@
<nav v-if="showHeader" class="m-navbar">
<div class="navbar__header">
<h1 class="navbar__brand" @click="$router.push({ name: 'home' })">
<a class="navbar__brand-lg" href="javascript:;">{{ customerName }}</a>
<a class="navbar__brand-lg" href="javascript:;">{{ $store.state.user.agencyName }}</a>
<a class="navbar__brand-mini" href="javascript:;">{{
customerName.slice(0, 2)
$store.state.user.agencyName.slice(0, 2)
}}</a>
</h1>
</div>

2
src/views/modules/base/community/communityTable.vue

@ -82,7 +82,7 @@
class="diy-button--reset"
size="small"
@click="handleExportOpen">导出</el-button>
<el-button v-if="agencyObj.level == 'community'"
<el-button v-if="agencyObj.level == 'community' && false"
style="margin-left:10px"
class="diy-button--qrcode"
size="small"

43
src/views/modules/base/community/roomDetail.vue

@ -1,7 +1,12 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<div class="div_tuomin">
<el-button v-if="view_real_data"
size="mini"
class="diy-button--search"
@click="handleTuomin">显示脱敏信息</el-button>
</div>
<div v-if="initLoading"
class="m-row">
<div class="m-info">
@ -51,11 +56,11 @@
</div>
<div class="info-prop">
<span class="info-title-2">联系方式</span>
<span>{{dataForm.ownerPhone?dataForm.ownerPhone:'--' }}</span>
<span>{{dataForm.showOwnerPhone?dataForm.showOwnerPhone:'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">房主身份证</span>
<span>{{dataForm.ownerIdCard?dataForm.ownerIdCard:'--' }}</span>
<span>{{dataForm.showOwnerIdCard?dataForm.showOwnerIdCard:'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">备注</span>
@ -164,6 +169,24 @@ export default {
},
async handleTuomin () {
const url = "/gov/org/ichouse/detailByType";
const { data, code, msg } = await requestPost(url, {
id: this.houseId,
type: "house",
});
if (code === 0) {
this.$set(this.dataForm, 'showOwnerPhone', data.mobile)
this.$set(this.dataForm, 'showOwnerIdCard', data.idCard)
} else {
this.$message.error(msg);
}
},
async loadHouseInfo () {
const url = "/gov/org/ichouse/" + this.houseId
@ -261,9 +284,21 @@ export default {
},
},
props: {}
props: {
view_real_data: {//
type: Boolean,
default: false,
}
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/management/detail-main.scss";
.div_tuomin {
position: absolute;
top: 0;
right: 40px;
z-index: 1000;
}
</style>

57
src/views/modules/base/community/roomForm.vue

@ -1,6 +1,12 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<div v-if="false"
class="div_tuomin">
<el-button size="mini"
class="diy-button--search"
@click="handleTuomin">显示脱敏信息</el-button>
</div>
<el-form ref="ref_form"
:inline="false"
:model="dataForm"
@ -39,7 +45,8 @@
v-model="dataForm.doorName">
</el-input>
</el-form-item>
<el-form-item v-if="formType != 'detail'" label="房屋编码"
<el-form-item v-if="formType != 'detail'"
label="房屋编码"
prop="coding"
label-width="150px"
style="display: block">
@ -47,12 +54,12 @@
maxlength="50"
placeholder="请输入楼栋编码"
v-model="dataForm.coding">
</el-input>
<el-button style="margin-left: 10px"
type="primary"
size="small"
@click="handleCode">生成</el-button>
type="primary"
size="small"
@click="handleCode">生成</el-button>
</el-form-item>
<div v-if="formType === 'detail'">
<el-form-item label="房屋编码"
@ -225,6 +232,7 @@ export default {
},
methods: {
async initForm (type, row, agencyObj) {
this.$refs.ref_form.resetFields();
@ -245,7 +253,7 @@ export default {
// this.rentFlag = parseInt(this.dataForm.rentFlagKey)
} else {
this.dataForm.neighborHoodId = this.agencyObj.neighborHoodId
this.dataForm.buildingId = this.agencyObj.id
}
@ -255,6 +263,24 @@ export default {
},
async handleTuomin () {
const url = "/gov/org/ichouse/detailByType";
const { data, code, msg } = await requestPost(url, {
id: this.houseId,
type: "house",
});
if (code === 0) {
this.$set(this.dataForm, 'ownerPhone', data.mobile)
this.$set(this.dataForm, 'ownerIdCard', data.idCard)
} else {
this.$message.error(msg);
}
},
async loadHouseInfo () {
const url = "/gov/org/ichouse/" + this.houseId
@ -292,15 +318,15 @@ export default {
this.$message.error(msg)
}
},
async handleCode() {
async handleCode () {
if (!this.dataForm.buildingUnitId) return this.$message.error('请选择单元')
const { data, code, msg } = await requestPost(
"/gov/org/houseInformation/getHouseCoding/" + this.dataForm.buildingUnitId);
if (msg == "success" && code == 0) {
this.dataForm.coding = data.coding
this.dataForm.sysCoding = data.sysCoding
}
}
},
async handleComfirm () {
@ -450,9 +476,20 @@ export default {
},
},
props: {}
props: {
view_real_data: {//
type: Boolean,
default: false,
}
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss";
.div_tuomin {
position: absolute;
top: 0;
right: 40px;
}
</style>

57
src/views/modules/base/community/roomTable.vue

@ -2,6 +2,7 @@
<div>
<div class="div_btn">
<el-button v-if="agencyObj.level === 'building' || source !== 'search'"
v-show="btnAuths.ic_house_add"
style="float: left"
class="diy-button--add"
size="small"
@ -9,11 +10,13 @@
<div class="btn_upload"
v-if="showImportBtn">
<el-button :headers="$getElUploadHeaders()"
v-if="btnAuths.ic_house_import"
style="float: left"
class="diy-button--export"
size="small"
@click="handleExportModule">下载房屋模板</el-button>
<el-upload ref="upload"
v-if="btnAuths.ic_house_import"
:multiple="false"
:show-file-list="false"
:before-upload="beforeUpload"
@ -28,21 +31,24 @@
</el-upload>
</div>
<el-button style="float: left; margin-left: 10px"
v-if="btnAuths.ic_house_export"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
<el-button style="float: left; margin-left: 10px"
v-if="btnAuths.ic_house_batch_del"
class="diy-button--more"
size="small"
@click="deleteBatch">批量删除</el-button>
<el-button style="margin-left: 10px"
v-if="btnAuths.ic_house_export_yhyd"
class="diy-button--export"
size="small"
:disabled="yihuyidangDisabled"
@click="handleExportYihuyidang()">导出一户一档</el-button>
<el-button size="small"
class="diy-button--add"
v-if="displayedBaobiaoBtn"
v-if="btnAuths.ic_house_smart_import && displayedBaobiaoBtn"
@click="reportForm">智能填报</el-button>
</div>
@ -145,16 +151,17 @@
class="operate">
<template slot-scope="scope">
<el-button type="text"
v-if="btnAuths.ic_house_view"
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button v-if="scope.row.showBtn"
<el-button v-if="btnAuths.ic_house_update && scope.row.showBtn"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.showBtn"
<el-button v-if="btnAuths.ic_house_del && scope.row.showBtn"
type="text"
class="div-table-button--delete"
size="small"
@ -184,6 +191,7 @@
class="dialog-h"
@closed="diaClose">
<room-form ref="ref_form"
:view_real_data="btnAuths.ic_house_view_real_data"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></room-form>
</el-dialog>
@ -192,12 +200,13 @@
<el-dialog :visible.sync="detailShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
:title="'查看房屋'"
width="900px"
top="5vh"
class="dialog-h"
@closed="detailFormCancle">
<room-detail ref="ref_form_detail"
:view_real_data="btnAuths.ic_house_view_real_data"
@diaDetailClose="detailFormCancle"></room-detail>
</el-dialog>
@ -259,18 +268,34 @@ export default {
yihuyidangDisabled: false,
displayedBaobiaoBtn: false,
btnAuths: {
ic_house_add: false, //
ic_house_import: false, //
ic_house_export: false, //
ic_house_batch_del: false, //
ic_house_export_yhyd: false, //
ic_house_smart_import: false, //
ic_house_del: false, //
ic_house_view: false, //
ic_house_update: false, //
ic_house_view_real_data: false, //
},
};
},
components: {
baobiao,
roomForm,
roomDetail
roomDetail,
},
async mounted () {
this.updateBtnAuths();
this.displayedBaobiaoBtn = await this.$refs.baobiao.existsTemplate({
elseParams: {
categoryKeys: ['house_info'], categoryKey: 'house_info',
}
categoryKeys: ["house_info"],
categoryKey: "house_info",
},
});
},
computed: {
@ -283,6 +308,16 @@ export default {
...mapGetters(["clientHeight", "iframeHeight"]),
},
methods: {
//
updateBtnAuths () {
let rot = this.$route;
if (Array.isArray(rot.meta.btns)) {
rot.meta.btns.forEach((item) => {
this.btnAuths[item.permissions] = true;
});
}
},
reportForm () {
let paramMap = {
pageSize: this.pageSize,
@ -446,17 +481,17 @@ export default {
// this.$refs.ref_form.initForm("detail", row, this.agencyObj);
// });
this.detailShow = true
this.detailShow = true;
// const _data = await this.detail(row)
this.$nextTick(() => {
this.$refs.ref_form_detail.initForm(row, this.agencyObj)
})
this.$refs.ref_form_detail.initForm(row, this.agencyObj);
});
},
detailFormCancle () {
// this.$refs.ref_form_detail.diaDestroy()
this.detailShow = false
this.detailShow = false;
},
handleAdd () {

21
src/views/modules/base/epidemic/natInfo/noNatDetail.vue

@ -10,7 +10,7 @@
</div>
<div class="info-prop">
<span class="info-title-2">手机号</span>
<span class="info-title-2">联系方式</span>
<span>{{ formData.realMobile||'--' }}</span>
</div>
@ -20,7 +20,11 @@
</div>
<div class="info-prop">
<span class="info-title-2">检检测地点</span>
<span class="info-title-2">检测时间</span>
<span>{{ formData.latestNatTime||'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">检测地点</span>
<span>{{ formData.natAddress||'--' }}</span>
</div>
<div class="info-prop">
@ -28,6 +32,19 @@
<span>{{ formData.natResult==='0'?'阴性':formData.natResult==='1'?'阳性':'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">本辖区居民</span>
<span>{{ formData.isAgencyUserDesc||'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">导入时间</span>
<span>{{ formData.importTime||'--' }}</span>
</div>
<div class="info-prop">
<span class="info-title-2">导入组织</span>
<span>{{ formData.agencyName||'--' }}</span>
</div>
</div>
</div>

6
src/views/modules/base/epidemic/natInfo/noNatList.vue

@ -131,7 +131,7 @@
<el-table-column prop="mobile"
header-align="center"
align="center"
label="手机号"
label="联系方式"
min-width="110">
</el-table-column>
<el-table-column prop="idCard"
@ -544,7 +544,7 @@ export default {
//
async handleExport () {
let title = '核酸检测信息'
let title = '人员名单核酸信息'
const url = "/epmetuser/icNatCompareRecord/export"
@ -588,7 +588,7 @@ export default {
},
handleExportModule () {
let title = '核酸检测信息导入模板'
let title = '核酸人员名单导入模板'
const url = "/epmetuser/icNatCompareRecord/template-download"
let params = {}

5
src/views/modules/base/organization/organization.vue

@ -120,6 +120,7 @@
<!-- 网格列表 -->
<el-table
v-if="currentAgencyLevel == 'community'"
v-show="gridTableFlag"
height="250"
:data="gridTableListData"
@ -1105,6 +1106,7 @@ export default {
//
currentAgencyLevel: localStorage.getItem("level"),
currentAreaCode: "",
currentAreaCodeSwitch: "",
parentAreaCode: "",
parentAgencyId: localStorage.getItem("agencyId"),
parentAgencyLevel: localStorage.getItem("level"),
@ -2238,6 +2240,7 @@ export default {
//
this.currentAgencyLevel = data.level;
this.currentAreaCode = data.areaCode;
this.currentAreaCodeSwitch = data.areaCodeSwitch;
if (data.parentList && data.parentList.length > 0) {
this.parentAreaCode =
data.parentList[data.parentList.length - 1].areaCode;
@ -2467,7 +2470,7 @@ export default {
parentAgencyId: this.currentAgencyId,
agencyName: this.agencyForm.agencyName,
level: this.agencyForm.level,
areaCodeSwitch: "closed",
areaCodeSwitch: this.currentAreaCodeSwitch,
areaCode: this.agencyForm.areaCode,
areaName: this.agencyForm.areaName,
contacts: this.agencyForm.contacts,

1658
src/views/modules/base/resi.vue

File diff suppressed because it is too large

4
src/views/modules/renFangTongJi/cpts/shequtongji.vue

@ -21,8 +21,8 @@ export default {
default: "",
},
orgIds: {
type: String,
default: "",
type: Array,
default: () => [],
},
},

440
src/views/modules/shequ/cpts/people-more.vue

@ -1,46 +1,55 @@
<template>
<div class="m-pop">
<div class="wrap">
<div class="btn-close" @click="handleClose">
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div class="wrap2">
<div class="title">
<span>更多信息</span>
</div>
<div v-if="view_real_data"
class="div_tuomin">
<el-button size="mini"
class="diy-button--search"
@click="handleTuomin">显示脱敏信息</el-button>
</div>
<div
:key="'fieldSubList' + index"
v-for="(fieldSubList, index) in fieldList"
>
<div :key="'fieldSubList' + index"
v-for="(fieldSubList, index) in fieldList">
<div class="list">
<div class="item" v-if="index == 0">
<div class="item"
v-if="index == 0">
<span class="item-field">所属网格</span>
<span>{{ gridName }}</span>
</div>
<div class="item" v-if="index == 0">
<div class="item"
v-if="index == 0">
<span class="item-field">所属小区</span>
<span>{{ xiaoquName }}</span>
</div>
<div class="item" v-if="index == 0">
<div class="item"
v-if="index == 0">
<span class="item-field">所属楼栋</span>
<span>{{ louName }}-{{ danyuanName }}</span>
</div>
<div class="item" v-if="index == 0">
<div class="item"
v-if="index == 0">
<span class="item-field">所属家庭</span>
<span>{{ homeName }}</span>
</div>
<div class="item" :key="field.itemId" v-for="field in fieldSubList">
<div class="item"
:key="field.itemId"
v-for="field in fieldSubList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
<span v-if="field.columnName==='MOBILE'||field.columnName==='ID_CARD'">{{ info[field.columnName]||'--'}}</span>
<span v-else-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
">{{
info[field.columnName] == null
? "--"
: getOptionLabel(
@ -48,8 +57,7 @@
info[field.columnName],
field.itemType
)
}}</span
>
}}</span>
<span v-else>{{
info[field.columnName] == null ? "--" : info[field.columnName]
@ -61,63 +69,47 @@
</div>
<div class="tabs">
<div
class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9"
>
<div class="tab-btn"
@click="subStartGroupIndex"
v-if="groupList.length > 9">
<img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div>
<div
v-show="index >= startGroupIndex && index < startGroupIndex + 9"
class="tab"
:class="groupIndex % groupList.length == index ? 'z-on' : ''"
:key="'tab' + index"
@click="groupIndex = index"
v-for="(item, index) in groupList"
>
<div v-show="index >= startGroupIndex && index < startGroupIndex + 9"
class="tab"
:class="groupIndex % groupList.length == index ? 'z-on' : ''"
:key="'tab' + index"
@click="groupIndex = index"
v-for="(item, index) in groupList">
{{ item.label }}
</div>
<div
class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9"
>
<div class="tab-btn"
@click="addStartGroupIndex"
v-if="groupList.length > 9">
<img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div>
</div>
<div
:key="'group' + index"
v-show="groupIndex % groupList.length == index"
v-for="(group, index) in groupList"
>
<div
v-if="
<div :key="'group' + index"
v-show="groupIndex % groupList.length == index"
v-for="(group, index) in groupList">
<div v-if="
group.tableName == 'ic_resi_demand' &&
Array.isArray(allInfo.ic_resi_demand) &&
allInfo.ic_resi_demand.length > 0
"
>
<div
class="list"
:key="'ic_resi_demand' + infoIndex"
v-for="(infoItem, infoIndex) in allInfo.ic_resi_demand"
>
<div
class="item"
:key="field.itemId"
v-for="field in group.itemList"
>
">
<div class="list"
:key="'ic_resi_demand' + infoIndex"
v-for="(infoItem, infoIndex) in allInfo.ic_resi_demand">
<div class="item"
:key="field.itemId"
v-for="field in group.itemList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
<span v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
">{{
infoItem[field.columnName] == null
? "--"
: getOptionLabel(
@ -125,8 +117,7 @@
infoItem[field.columnName],
field.itemType
)
}}</span
>
}}</span>
<span v-else>{{
infoItem[field.columnName] == null
@ -136,179 +127,136 @@
</div>
</div>
</div>
<div
v-else-if="group.tableName == 'ic_hs'"
style="margin-top: 10px; padding: 0 20px"
>
<el-table
class="table"
:data="natList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%"
>
<el-table-column
label="序号"
header-align="center"
align="center"
type="index"
width="50"
></el-table-column>
<el-table-column
prop="testTime"
header-align="center"
align="center"
label="检测时间"
width="150"
>
<div v-else-if="group.tableName == 'ic_hs'"
style="margin-top: 10px; padding: 0 20px">
<el-table class="table"
:data="natList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%">
<el-table-column label="序号"
header-align="center"
align="center"
type="index"
width="50"></el-table-column>
<el-table-column prop="testTime"
header-align="center"
align="center"
label="检测时间"
width="150">
</el-table-column>
<el-table-column
prop="address"
header-align="center"
align="center"
label="检测机构"
show-overflow-tooltip
min-width="180"
>
<el-table-column prop="address"
header-align="center"
align="center"
label="检测机构"
show-overflow-tooltip
min-width="180">
</el-table-column>
<el-table-column
prop="result"
header-align="center"
align="center"
label="检测结果"
width="240"
>
<el-table-column prop="result"
header-align="center"
align="center"
label="检测结果"
width="240">
</el-table-column>
</el-table>
</div>
<div
v-else-if="group.tableName == 'ic_xc'"
style="margin-top: 10px; padding: 0 20px"
>
<el-table
class="table"
:data="tripList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%"
>
<el-table-column
label="序号"
header-align="center"
align="center"
type="index"
width="50"
></el-table-column>
<el-table-column
prop="fromRegion"
header-align="center"
align="center"
label="来自地区"
show-overflow-tooltip
min-width="100"
>
<div v-else-if="group.tableName == 'ic_xc'"
style="margin-top: 10px; padding: 0 20px">
<el-table class="table"
:data="tripList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%">
<el-table-column label="序号"
header-align="center"
align="center"
type="index"
width="50"></el-table-column>
<el-table-column prop="fromRegion"
header-align="center"
align="center"
label="来自地区"
show-overflow-tooltip
min-width="100">
</el-table-column>
<el-table-column
prop="arrivalTime"
header-align="center"
align="center"
label="来到本地时间"
width="140"
>
<el-table-column prop="arrivalTime"
header-align="center"
align="center"
label="来到本地时间"
width="140">
</el-table-column>
<el-table-column
prop="leaveTime"
header-align="center"
align="center"
label="离开本地时间"
width="140"
>
<el-table-column prop="leaveTime"
header-align="center"
align="center"
label="离开本地时间"
width="140">
</el-table-column>
<el-table-column
prop="noticeTime"
header-align="center"
align="center"
label="最近一次通知时间"
width="140"
>
<el-table-column prop="noticeTime"
header-align="center"
align="center"
label="最近一次通知时间"
width="140">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注"
show-overflow-tooltip
width="120"
>
<el-table-column prop="remark"
header-align="center"
align="center"
label="备注"
show-overflow-tooltip
width="120">
</el-table-column>
</el-table>
</div>
<div
v-else-if="group.tableName == 'ic_ym'"
style="margin-top: 10px; padding: 0 20px"
>
<el-table
v-if="vaccineList"
class="table"
:data="vaccineList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%"
>
<el-table-column
label="序号"
header-align="center"
align="center"
type="index"
width="50"
></el-table-column>
<el-table-column
prop="vaccinateTime"
header-align="center"
align="center"
label="接种时间"
show-overflow-tooltip
min-width="100"
>
<div v-else-if="group.tableName == 'ic_ym'"
style="margin-top: 10px; padding: 0 20px">
<el-table v-if="vaccineList"
class="table"
:data="vaccineList"
border
height="400"
:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
style="width: 100%">
<el-table-column label="序号"
header-align="center"
align="center"
type="index"
width="50"></el-table-column>
<el-table-column prop="vaccinateTime"
header-align="center"
align="center"
label="接种时间"
show-overflow-tooltip
min-width="100">
</el-table-column>
<el-table-column
prop="address"
header-align="center"
align="center"
label="接种地点"
>
<el-table-column prop="address"
header-align="center"
align="center"
label="接种地点">
</el-table-column>
<el-table-column
prop="manufactor"
header-align="center"
align="center"
label="疫苗厂家"
>
<el-table-column prop="manufactor"
header-align="center"
align="center"
label="疫苗厂家">
</el-table-column>
</el-table>
</div>
<div class="list" v-else>
<div
class="item"
:class="{ 'z-long': group.itemList.length == 1 }"
:key="field.itemId"
v-for="field in group.itemList"
>
<div class="list"
v-else>
<div class="item"
:class="{ 'z-long': group.itemList.length == 1 }"
:key="field.itemId"
v-for="field in group.itemList">
<span class="item-field">{{ field.label }}</span>
<span
v-if="
<span v-if="
field.itemType == 'select' ||
field.itemType == 'radio' ||
field.itemType == 'checkbox' ||
field.itemType == 'cascader'
"
>{{
">{{
!allInfo[group.tableName] ||
allInfo[group.tableName][0][field.columnName] == null
? "--"
@ -317,8 +265,7 @@
allInfo[group.tableName][0][field.columnName],
field.itemType
)
}}</span
>
}}</span>
<span v-else>{{
!allInfo[group.tableName] ||
@ -349,13 +296,17 @@ export default {
type: String,
default: "",
},
view_real_data: {//
type: Boolean,
default: false,
}
},
components: {
cptCard,
},
data() {
data () {
return {
fieldList: [],
groupList: [],
@ -376,11 +327,11 @@ export default {
},
computed: {
isShundeju() {
isShundeju () {
return this.$store.state.user.customerId == "1550309684576591874";
},
xiaoquName() {
xiaoquName () {
const {
xiaoquList,
info: { VILLAGE_ID },
@ -393,7 +344,7 @@ export default {
}
return "";
},
louName() {
louName () {
const {
louList,
info: { BUILD_ID },
@ -406,7 +357,7 @@ export default {
}
return "";
},
danyuanName() {
danyuanName () {
const {
danyuanList,
info: { UNIT_ID },
@ -419,7 +370,7 @@ export default {
}
return "";
},
danyuanName() {
danyuanName () {
const {
danyuanList,
info: { UNIT_ID },
@ -432,7 +383,7 @@ export default {
}
return "";
},
homeName() {
homeName () {
const {
homeList,
info: { HOME_ID },
@ -448,17 +399,34 @@ export default {
},
watch: {
userId() {
userId () {
this.getApiData();
},
},
mounted() {
mounted () {
this.getApiData();
},
methods: {
addStartGroupIndex() {
async handleTuomin () {
const url = "/gov/org/ichouse/detailByType";
const { data, code, msg } = await requestPost(url, {
id: this.userId,
type: "icResiUser",
});
if (code === 0) {
this.$set(this.info, 'MOBILE', data.mobile)
this.$set(this.info, 'ID_CARD', data.idCard)
} else {
this.$message.error(msg);
}
},
addStartGroupIndex () {
const { startGroupIndex, groupList } = this;
if (startGroupIndex < groupList.length - 9) {
this.startGroupIndex = startGroupIndex + 1;
@ -466,7 +434,7 @@ export default {
this.startGroupIndex = groupList.length - 9;
}
},
subStartGroupIndex() {
subStartGroupIndex () {
const { startGroupIndex, groupList } = this;
if (startGroupIndex > 0) {
this.startGroupIndex = startGroupIndex - 1;
@ -474,11 +442,11 @@ export default {
this.startGroupIndex = 0;
}
},
handleClose() {
handleClose () {
this.$emit("close");
},
async getApiData() {
async getApiData () {
await this.getField();
await this.getInfo();
this.getDetailList();
@ -488,7 +456,7 @@ export default {
this.getHomeList();
},
getOptionLabel(options, value, type = "") {
getOptionLabel (options, value, type = "") {
if (Array.isArray(options)) {
let valueArr = value.split(",");
if (type == "cascader") {
@ -510,7 +478,7 @@ export default {
return "--";
},
getNodePath(node, val, path) {
getNodePath (node, val, path) {
// node:val:id, path:id
for (let i = 0; i < node.length; i++) {
const ele = node[i];
@ -530,7 +498,7 @@ export default {
},
//
async getField() {
async getField () {
const url = "/oper/customize/icform/getcustomerform";
const { data, code, msg } = await requestPost(url, {
@ -570,7 +538,7 @@ export default {
},
//
async getInfo() {
async getInfo () {
const url = "/epmetuser/icresiuser/detail";
const { data, code, msg } = await requestPost(url, {
@ -651,7 +619,7 @@ export default {
},
//
async getOptions(url) {
async getOptions (url) {
if (!url) return [];
const { data, code, msg } = await requestPost(url, {});
@ -663,7 +631,7 @@ export default {
}
},
async getXiaoquList() {
async getXiaoquList () {
const url = "/gov/org/icneighborhood/neighborhoodoption";
const { data, code, msg } = await requestPost(url, {
@ -677,7 +645,7 @@ export default {
this.$message.error(msg);
}
},
async getLouList() {
async getLouList () {
const url = "/gov/org/icbuilding/buildingoption";
const { data, code, msg } = await requestPost(url, {
@ -690,7 +658,7 @@ export default {
this.$message.error(msg);
}
},
async getDanyuanList() {
async getDanyuanList () {
const url = "/gov/org/icbuildingunit/unitoption";
const { data, code, msg } = await requestPost(url, {
@ -703,7 +671,7 @@ export default {
this.$message.error(msg);
}
},
async getHomeList() {
async getHomeList () {
const url = "/gov/org/ichouse/houseoption";
const { data, code, msg } = await requestPost(url, {
@ -716,7 +684,7 @@ export default {
this.$message.error(msg);
}
},
async getDetailList() {
async getDetailList () {
const url = "/epmetuser/epidemicPrevention/info";
let params = {
id: this.userId,

412
src/views/modules/shequzhili/event/cpts/add.vue

@ -2,202 +2,160 @@
<div class="g-add">
<div class="g-add-page">
<div class="g-left">
<el-form
ref="ref_form1"
:inline="true"
:model="formData"
:rules="dataRule"
class="form"
>
<el-form-item
label="所属网格 "
prop="gridId"
label-width="150px"
style="display: block"
>
<el-select
v-model.trim="formData.gridId"
placeholder="请选择"
clearable
class="cell-width-1"
>
<el-option
v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-form ref="ref_form1"
:inline="true"
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="所属网格 "
prop="gridId"
label-width="150px"
style="display: block">
<el-select v-model.trim="formData.gridId"
placeholder="请选择"
clearable
class="cell-width-1">
<el-option v-for="item in gridList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="报事人"
prop="name"
label-width="150px"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="10"
placeholder="请输入报事人姓名"
v-model="formData.name"
>
<el-form-item label="报事人"
prop="name"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
maxlength="10"
placeholder="请输入报事人姓名"
v-model="formData.name">
</el-input>
<div>
<el-button
style="margin-top: 10px"
type="primary"
size="mini"
@click="handleShowPersonList"
>居民信息中选择</el-button
>
<el-button style="margin-top: 10px"
type="primary"
size="mini"
@click="handleShowPersonList">居民信息中选择</el-button>
</div>
</el-form-item>
<el-form-item
label="手机号"
prop="mobile"
label-width="150px"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="30"
placeholder="请输入手机号 "
v-model="formData.mobile"
>
<el-form-item label="手机号"
prop="mobile"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
maxlength="30"
placeholder="请输入手机号 "
v-model="formData.mobile">
</el-input>
</el-form-item>
<el-form-item
label="身份证号"
prop="idCard"
label-width="150px"
style="display: block"
>
<el-input
class="cell-width-1"
maxlength="30"
placeholder="请输入身份证号"
v-model="formData.idCard"
></el-input>
<el-form-item label="身份证号"
prop="idCard"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
maxlength="30"
placeholder="请输入身份证号"
v-model="formData.idCard"></el-input>
</el-form-item>
<el-form-item label="反应渠道" label-width="150px" prop="sourceType">
<el-select
v-model="formData.sourceType"
placeholder="请选择"
size="small"
clearable
class="cell-width-1"
>
<el-option
v-for="item in qudaoArray"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-form-item label="反应渠道"
label-width="150px"
prop="sourceType">
<el-select v-model="formData.sourceType"
placeholder="请选择"
size="small"
clearable
class="cell-width-1">
<el-option v-for="item in qudaoArray"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="发生时间"
prop="happenTime"
label-width="150px"
style="display: block"
>
<el-date-picker
v-model="formData.happenTime"
class="cell-width-1"
type="datetime"
placeholder="发生时间"
value-format="yyyy-MM-dd hh:mm:ss"
>
<el-form-item label="发生时间"
prop="happenTime"
label-width="150px"
style="display: block">
<el-date-picker v-model="formData.happenTime"
class="cell-width-1"
type="datetime"
placeholder="发生时间"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
<el-form-item
label="事件内容"
prop="eventContent"
label-width="150px"
style="display: block"
>
<el-input
class="cell-width-2"
type="textarea"
maxlength="500"
show-word-limit
:rows="5"
placeholder="请输入事件内容,不超过500字"
v-model="formData.eventContent"
></el-input>
<el-form-item label="事件内容"
prop="eventContent"
label-width="150px"
style="display: block">
<el-input class="cell-width-2"
type="textarea"
maxlength="500"
show-word-limit
:rows="5"
placeholder="请输入事件内容,不超过500字"
v-model="formData.eventContent"></el-input>
</el-form-item>
</el-form>
</div>
<div class="g-right">
<el-form
ref="ref_form2"
:inline="true"
:model="formData"
:rules="dataRule"
class="form"
>
<el-form-item label="图片" label-width="150px" style="display: block">
<el-upload
:headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedPic"
:on-remove="removePic"
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="3"
>
<el-form ref="ref_form2"
:inline="true"
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="图片"
label-width="150px"
style="display: block">
<el-upload :headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedPic"
:on-remove="removePic"
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="3">
<span class="font-14">选择图片</span>
<div slot="tip" class="upload_tip">
<div slot="tip"
class="upload_tip">
最多上传3张图片图片支持jpgjpegbmpgit或png格式
</div>
</el-upload>
</el-form-item>
<el-form-item
label="地理位置"
prop="address"
label-width="150px"
style="display: block"
>
<el-input class="cell-width-1" v-model="formData.address">
<el-form-item label="地理位置"
prop="address"
label-width="150px"
style="display: block">
<el-input class="cell-width-1"
v-model="formData.address">
</el-input>
</el-form-item>
<el-form-item
label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block"
>
<el-form-item label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block">
<div style="width: 500px">
<div class="div_map">
<div id="app"></div>
<div class="div_searchmap">
<el-input
class="cell-width-map"
maxlength="50"
size="mini"
placeholder="请输入关键字"
v-model="keyWords"
>
<el-input class="cell-width-map"
maxlength="50"
size="mini"
placeholder="请输入关键字"
v-model="keyWords">
</el-input>
<el-button
style="margin-left: 10px"
type="primary"
size="mini"
@click="handleSearchMap"
>查询</el-button
>
<el-button style="margin-left: 10px"
type="primary"
size="mini"
@click="handleSearchMap">查询</el-button>
</div>
</div>
@ -222,62 +180,54 @@
</div>
<!-- 新增弹出框 -->
<el-dialog
:visible.sync="personTableShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
title="选择居民"
width="550px"
top="5vh"
class="dialog-h"
@closed="diaClose"
>
<el-dialog :visible.sync="personTableShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
title="选择居民"
width="550px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<div style="padding: 10px 30px">
<el-form :inline="false" ref="ref_formSearch" :label-width="'90px'">
<el-form-item label="所属网格" label-width="150px">
<el-select
class="cell-width-1"
v-model.trim="selGridId"
placeholder="请选择"
clearable
>
<el-option
v-for="item in gridList"
@click.native="handleChangeGrid"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-form :inline="false"
ref="ref_formSearch"
:label-width="'90px'">
<el-form-item label="所属网格"
label-width="150px">
<el-select class="cell-width-1"
v-model.trim="selGridId"
placeholder="请选择"
clearable>
<el-option v-for="item in gridList"
@click.native="handleChangeGrid"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="居民" label-width="150px" prop="selPersonIndex">
<el-select
v-model="selPersonIndex"
class="cell-width-1"
filterable
placeholder="请选择"
clearable
>
<el-option
v-for="(item, index) in demandUserList"
:key="item.demandUserId"
:label="item.label"
:value="index"
>
<el-form-item label="居民"
label-width="150px"
prop="selPersonIndex">
<el-select v-model="selPersonIndex"
class="cell-width-1"
filterable
placeholder="请选择"
clearable>
<el-option v-for="(item, index) in demandUserList"
:key="item.demandUserId"
:label="item.label"
:value="index">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="div-btn">
<el-button
style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSelPerson"
>确定</el-button
>
<el-button style="margin-left: 20px"
type="primary"
size="small"
@click="handleComfirmSelPerson">确定</el-button>
</div>
</div>
</el-dialog>
@ -298,7 +248,7 @@ var markers;
var infoWindowList;
var geocoder; //
function iniFmData() {
function iniFmData () {
return {
gridId: "", //
reportUserId: "", // ID
@ -320,7 +270,7 @@ function iniFmData() {
}
export default {
data() {
data () {
return {
formType: "add", // addeditdetail
@ -376,7 +326,7 @@ export default {
},
components: {},
computed: {
dataRule() {
dataRule () {
let checkIdCard = (rule, value, callback) => {
if (value === "") {
callback(new Error("请输入身份证"));
@ -435,7 +385,7 @@ export default {
},
},
async mounted() {
async mounted () {
const { user } = this.$store.state;
this.agencyId = user.agencyId;
let { latitude, longitude } = this.$store.state.user;
@ -453,7 +403,7 @@ export default {
},
methods: {
async handleShowPersonList() {
async handleShowPersonList () {
if (this.formData.gridId) {
await this.handleChangeGrid();
this.personTableShow = true;
@ -461,10 +411,10 @@ export default {
this.$message.info("请先选择网格");
}
},
diaClose() {
diaClose () {
this.personTableShow = false;
},
handleComfirmSelPerson() {
handleComfirmSelPerson () {
if (this.selPersonIndex === 0 || this.selPersonIndex) {
let selPerson = this.demandUserList[this.selPersonIndex];
this.formData.name = selPerson.demandUserName;
@ -478,7 +428,7 @@ export default {
}
},
async handleChangeGrid() {
async handleChangeGrid () {
const url = "/epmetuser/icresiuser/demandusers";
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/epidemicPrevention/page"
let params = {
@ -497,7 +447,7 @@ export default {
this.tableLoading = false;
},
async loadGrid() {
async loadGrid () {
const url = "/gov/org/customergrid/gridoption";
let params = {
@ -513,7 +463,7 @@ export default {
this.$message.error(msg);
}
},
async getCategoryList() {
async getCategoryList () {
const url = "/gov/issue/issueprojectcategorydict/list";
let params = {};
@ -535,7 +485,7 @@ export default {
},
//
filterTree(arr) {
filterTree (arr) {
let childs = arr;
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
@ -549,12 +499,12 @@ export default {
return arr;
},
handleChangeAgency(value) {
handleChangeAgency (value) {
// this.agencyName = this.$refs["myCascader"].getCheckedNodes()[0].label
// this.orgId = this.selCategoryArray.length > 0 ? this.selCategoryArray[this.selCategoryArray.length - 1] : ''
},
async getEventInfo() {
async getEventInfo () {
this.okflag = false;
this.$refs["ref_form1"].validate((valid, messageObj) => {
if (!valid) {
@ -592,7 +542,7 @@ export default {
});
},
removePic(file, fileList) {
removePic (file, fileList) {
this.formData.imageList.splice(
this.formData.imageList.findIndex((item) => item === file.url),
1
@ -604,19 +554,19 @@ export default {
this.hideUploadBtn = fileList.length >= 3;
},
// 3
handleEditChange(file, fileList) {
handleEditChange (file, fileList) {
this.hideUploadBtn = fileList.length >= 3;
},
exceedPic() {
exceedPic () {
this.$message.warning("最多上传3张预览图片");
},
handleSuccess(response, file, fileList) {
handleSuccess (response, file, fileList) {
this.replayImgList.push(file);
this.formData.imageList.push(response.data.url);
},
// init
initMap() {
initMap () {
//
var center = new window.TMap.LatLng(
this.formData.latitude,
@ -648,7 +598,7 @@ export default {
// this.convert()
},
setMarker(lat, lng) {
setMarker (lat, lng) {
markers.setGeometries([]);
markers.add([
{
@ -662,7 +612,7 @@ export default {
]);
},
handleSearchMap() {
handleSearchMap () {
infoWindowList.forEach((infoWindow) => {
infoWindow.close();
});
@ -694,7 +644,7 @@ export default {
});
},
handleMoveCenter() {
handleMoveCenter () {
//
const center = map.getCenter();
const lat = center.getLat();
@ -705,7 +655,7 @@ export default {
this.convert(lat, lng);
},
convert(lat, lng) {
convert (lat, lng) {
markers.setGeometries([]);
// var input = document.getElementById('location').value.split(',');
let location;
@ -739,12 +689,12 @@ export default {
});
},
resetData() {
resetData () {
this.formData = iniFmData();
this.replayImgList = [];
},
//
startLoading() {
startLoading () {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
@ -752,7 +702,7 @@ export default {
});
},
//
endLoading() {
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close();

175
src/views/modules/visual/command/cpts/popup.vue

@ -1,13 +1,14 @@
<template>
<div class="m-pop" ref="pop" @mousewheel="handleWheel" v-show="!hidden">
<div class="m-pop"
ref="pop"
@mousewheel="handleWheel"
v-show="!hidden">
<div class="info">
<div
v-if="
<div v-if="
placeType === 'resi' ||
placeType === 'special_resi' ||
placeType === 'volunteer'
"
>
">
<div class="info-title">居民信息</div>
<div class="item">
姓名
@ -52,25 +53,22 @@
<span>{{ info.resiCategoryNames || "--" }}</span>
</div>
<div @click="handleClickBtn('watch-resi')" class="more-btn">更多</div>
<div @click="handleClickBtn('watch-resi')"
class="more-btn">更多</div>
<div class="operate">
<div
@click="handleClickBtn('create-demand')"
v-if="info.agencyId == $store.state.user.agencyId"
class="btn z-blue"
>
<div @click="handleClickBtn('create-demand')"
v-if="info.agencyId == $store.state.user.agencyId"
class="btn z-blue">
发布需求
</div>
<div
v-if="
<div v-if="
info.agencyId == $store.state.user.agencyId &&
placeType === 'volunteer'
"
@click="handleClickBtn('create-service')"
class="btn z-yellow"
>
@click="handleClickBtn('create-service')"
class="btn z-yellow">
发起服务
</div>
</div>
@ -112,13 +110,11 @@
</div>
</div>
<div
v-if="
<div v-if="
placeType === 'public_service' ||
placeType === 'city_management' ||
placeType === 'superior_resource'
"
>
">
<div class="info-title">场所信息</div>
<div class="item">
场所名称
@ -150,11 +146,9 @@
</div>
</div>
<div
v-if="
<div v-if="
placeType === 'nucleic_point'
"
>
">
<div class="info-title">核酸检测点信息</div>
<div class="item">
检测点名称
@ -177,11 +171,9 @@
<span>{{ info.address || "--" }}</span>
</div>
</div>
<div
v-if="
<div v-if="
placeType === 'vaccine_point'
"
>
">
<div class="info-title">疫苗接种点信息</div>
<div class="item">
接种点名称
@ -221,35 +213,27 @@
<span>{{ info.eventContent || "--" }}</span>
</div>
<div
v-if="info.imageList && info.imageList.length > 0"
class="info-prop"
>
<div v-if="info.imageList && info.imageList.length > 0"
class="info-prop">
<span>图片</span>
<div class="item-pics">
<img
:src="src"
:key="src"
style="width: 100px; height: 100px; padding-right: 10px"
v-for="src in info.imageList"
@click="watchImg(src)"
/>
<img :src="src"
:key="src"
style="width: 100px; height: 100px; padding-right: 10px"
v-for="src in info.imageList"
@click="watchImg(src)" />
</div>
</div>
<div
v-if="info.voiceList && info.voiceList.length > 0"
class="info-prop"
>
<div v-if="info.voiceList && info.voiceList.length > 0"
class="info-prop">
<span>音频</span>
<div class="item-pics">
<audio controls>
<source
:src="item.url"
type=""
:key="item.url"
v-for="item in info.voiceList"
/>
<source :src="item.url"
type=""
:key="item.url"
v-for="item in info.voiceList" />
</audio>
</div>
</div>
@ -270,12 +254,13 @@
手机号
<span>{{ info.mobile || "--" }}</span>
</div>
<div class="item">
<!-- <div class="item">
身份证号
<span>{{ info.idCard || "--" }}</span>
</div>
</div> -->
<div @click="handleClickBtn('watch-event')" class="more-btn">更多</div>
<div @click="handleClickBtn('watch-event')"
class="more-btn">更多</div>
</div>
<div v-if="placeType === 'community_org'">
@ -313,11 +298,9 @@
<span>{{ info.organizationCreatedTime || "--" }}</span>
</div>
<div
v-if="info.agencyId == $store.state.user.agencyId"
@click="handleClickBtn('create-service')"
class="btn z-yellow"
>
<div v-if="info.agencyId == $store.state.user.agencyId"
@click="handleClickBtn('create-service')"
class="btn z-yellow">
发起服务
</div>
</div>
@ -354,12 +337,10 @@
</div>
</div>
<div
v-if="
<div v-if="
placeType === 'enterprise_patrol' ||
placeType === 'enterprise_patrol_unqualified'
"
>
">
<div class="info-title">企事业信息</div>
<div class="item">
场所类型
@ -390,7 +371,8 @@
<span>{{ info.mobile || "--" }}</span>
</div>
<div @click="handleClickBtn('watch-xuncha')" class="more-btn">更多</div>
<div @click="handleClickBtn('watch-xuncha')"
class="more-btn">更多</div>
</div>
<div v-if="placeType === 'party_unit'">
@ -428,11 +410,9 @@
<span>{{ info.address || "--" }}</span>
</div>
<div
v-if="info.agencyId == $store.state.user.agencyId"
@click="handleClickBtn('create-service')"
class="btn z-yellow"
>
<div v-if="info.agencyId == $store.state.user.agencyId"
@click="handleClickBtn('create-service')"
class="btn z-yellow">
发起服务
</div>
</div>
@ -460,7 +440,8 @@
<span>{{ info.centerAddress || "--" }}</span>
</div>
<div class="operate">
<div @click="handleClickBtn('create-service')" class="btn z-yellow">
<div @click="handleClickBtn('create-service')"
class="btn z-yellow">
发起服务
</div>
</div>
@ -469,18 +450,14 @@
<div v-if="placeType === 'list'">
<div class="info-title">列表</div>
<div class="list">
<div
class="item"
@click="handleClickListItem(item)"
:key="'list' + item.id"
v-for="(item, index) in list"
>
<div class="item"
@click="handleClickListItem(item)"
:key="'list' + item.id"
v-for="(item, index) in list">
<div class="item-cnt">{{ index + 1 }}{{ item.content }}</div>
<img
src="@/assets/img/shuju/command/arrow-right-green.png"
alt=""
class="i-arrow"
/>
<img src="@/assets/img/shuju/command/arrow-right-green.png"
alt=""
class="i-arrow" />
</div>
</div>
</div>
@ -501,7 +478,7 @@ export default {
},
},
data() {
data () {
return {
hidden: true,
placeType: "",
@ -514,16 +491,16 @@ export default {
computed: {},
watch: {},
mounted() {},
mounted () { },
methods: {
handleWheel(e) {
handleWheel (e) {
if (this.$refs.pop.clientHeight >= 321) {
e.stopPropagation();
}
},
handleClickBtn(type) {
handleClickBtn (type) {
this.$emit("operate", type, {
placeType: this.placeType,
id: this.srcItem.id,
@ -531,12 +508,12 @@ export default {
});
},
handleClickListItem(item) {
handleClickListItem (item) {
console.log("handleClickListItem", item);
this.$emit("clickListItem", item);
},
async show(item) {
async show (item) {
console.log("-----------------show:", item);
const { placeType, latitude, longitude } = item;
if (!placeType) {
@ -620,7 +597,7 @@ export default {
return true;
},
async loadResi(info) {
async loadResi (info) {
const url = "/epmetuser/icresiuser/resi-brief/" + info.id;
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/distribution"
@ -675,7 +652,7 @@ export default {
}
},
async loadPublicService(info) {
async loadPublicService (info) {
const url = "/gov/org/icPublicService/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icPublicService/detail"
@ -700,7 +677,7 @@ export default {
}
},
async loadEvent(info) {
async loadEvent (info) {
const url = "/gov/project/icEvent/detail";
//const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/eventDetail/" + this.eventId;
@ -715,7 +692,7 @@ export default {
}
},
async loadDangerousChemicals(info) {
async loadDangerousChemicals (info) {
const url = "/gov/org/icDangerousChemicals/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icDangerousChemicals/detail"
@ -743,7 +720,7 @@ export default {
}
},
async loadCityManagement(info) {
async loadCityManagement (info) {
const url = "/gov/org/icCityManagement/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icCityManagement/detail"
@ -768,7 +745,7 @@ export default {
}
},
async loadCommunityOrg(info) {
async loadCommunityOrg (info) {
// const url = "/gov/org/icCityManagement/detail"
const url =
"/heart/iccommunityselforganization/community-self-org-detail/" +
@ -794,7 +771,7 @@ export default {
}
},
async loadGridInfo(info) {
async loadGridInfo (info) {
const url = "/gov/org/icSuperiorResource/detail";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icSuperiorResource/detail"
@ -819,7 +796,7 @@ export default {
}
},
async loadEnterprisePartrol(info) {
async loadEnterprisePartrol (info) {
const url = "/gov/org/enterprise/detail/" + info.id;
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/enterprise/detail"
@ -833,7 +810,7 @@ export default {
this.$message.error(msg);
}
},
async loadVaccinePoint(info) {
async loadVaccinePoint (info) {
const url = "/epmetuser/icPointVaccinesInoculation/" + info.id;
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/enterprise/detail"
@ -847,7 +824,7 @@ export default {
this.$message.error(msg);
}
},
async loadHesuanPoint(info) {
async loadHesuanPoint (info) {
const url = "/epmetuser/icPointNucleicMonitoring/" + info.id;
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/enterprise/detail"
@ -861,7 +838,7 @@ export default {
this.$message.error(msg);
}
},
async loadGroupRent(info) {
async loadGroupRent (info) {
const url = "/gov/org/ichouse/" + info.id;
const { data, code, msg } = await requestGet(url);
@ -874,7 +851,7 @@ export default {
this.$message.error(msg);
}
},
async loadPartyUnit(info) {
async loadPartyUnit (info) {
const url = "/heart/icpartyunit/detail";
// const url = 'http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/detail'
let params = {
@ -896,7 +873,7 @@ export default {
}
},
async loadGridInfo(info) {
async loadGridInfo (info) {
const url = "/gov/org/grid/griddetail";
let params = {
@ -920,7 +897,7 @@ export default {
}
},
async requestList() {
async requestList () {
const url = "/data/aggregator/coverage/analysis/resourceCategories";
let params = {
agencyId: this.orgId,

2
src/views/modules/visual/communityGovern/fivelayers/mapIndex copy 2.vue

@ -1629,6 +1629,8 @@ const vueGis = {
this.zoom = 13
} else if (agencyLevel === 'community') {
this.zoom = 14
} else {
this.zoom = 11
}
},

2
src/views/modules/visual/communityGovern/fivelayers/mapIndex copy.vue

@ -1637,6 +1637,8 @@ const vueGis = {
this.zoom = 13
} else if (agencyLevel === 'community') {
this.zoom = 14
} else {
this.zoom = 11
}
},

2
src/views/modules/visual/communityGovern/fivelayers/mapIndex-baidu.vue

@ -1632,6 +1632,8 @@ const vueGis = {
this.zoom = 13
} else if (agencyLevel === 'community') {
this.zoom = 14
} else {
this.zoom = 11
}
},

8
src/views/modules/visual/communityGovern/shijianchuli/chart.js

@ -7,7 +7,8 @@
* @param pieHeight 立体的高度
* @param opacity 饼或者环的透明度
*/
const getPie3D = (pieData, internalDiameterRatio, distance, alpha, pieHeight, opacity = 1) => {
const getPie3D = (pieData, internalDiameterRatio, distance, alpha, pieHeight, opacity = 1,beta) => {
const series = []
let sumValue = 0
let startValue = 0
@ -53,7 +54,7 @@
}
series.push(seriesItem)
}
// 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,
// 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
legendData = []
@ -156,7 +157,7 @@
viewControl: {
// 3d效果可以放大、旋转等,请自己去查看官方配置
alpha, // 角度
beta: -40,
beta,
distance, // 调整视角到主体的距离,类似调整zoom
rotateSensitivity: 0, // 设置为0无法旋转
zoomSensitivity: 0, // 设置为0无法缩放
@ -245,6 +246,7 @@ const getParametricEquation = (startRatio, endRatio, isSelected, isHovered, k, h
* 获取3d丙图的最高扇区的高度
*/
const getHeight3D = (series, height) => {
series.sort((a, b) => {
return b.pieData.value - a.pieData.value
})

125
src/views/modules/visual/communityGovern/shijianchuli/lineOption.js

@ -1,16 +1,37 @@
import * as echarts from 'echarts'
let circleList = [
'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAFdklEQVRYhY1YTY/bRBh+/BHbiRN7l02bqst+st1dVT0gceXABYk7PfYPwIELv4IfABJ3euuBCxKCKxckBEKi2y1F6Xa3abTZT+fLHxnbaMZje+zE3Y70aiLPzPs888w778xEin/8EO9YJKGbVDEkrvhdWdSKBumGehGJReBVdVZyApsPk/roicSdi4aKb4sUEK38jeLEHIdVRQWOnsgLgORCLWsKzFUDqlmHXEvGRzMCMnEx6XmIgpCDRaU6saMnMTYfRpmMQgzIJdCiNTebqHc6kHUbMYkQBT7ikCReFBWypkNSZUS+A/f0FOOjMSdRtlgglikgypwCK8z0FQPWzgYkpQn/8grT3jFmo0ggjMxhrSWjsWqhcXcP9c4Yo5fH8AYugFDQOSVBx8apAqkzRQBXYd1bhnF7G8HVNZznV4hDhZNWuIkEQm4EkhLC3luGtrwEb9DF8MUV+560R7xmpFXMB1kCYu+1obc3MD7qY9qbAagDqHFTKwhQkBnicIbrgyEaqy6am9uQ5Fdwnp8LfaW0FpcgX3NzvcXARy/6cAchB9e5aZxEqhaEWVGiAQCftU97PuJZH617GzBdH5Njh4/JglKdi3i1XkNzbQuTNwO4A8LBjZJpXAWRAOHgnkBOgjtwoZgD5tM/ewripkHJMFMHuQr2fgehTzB+ORVmTUmYAJoAWgAsAHbJLN7W5H1z1agv6pP6LgZvYRdIkGsKVLOD64Mel1njM6fOGtxxg33rfLwNe3+DjXYOX+H0t64we0nYasnSjLrnWLq/CrnWZ3mDkygSsHdtRLMA/iXhYJqgQELAuvc+9r98BOPWeqbdnU+Ajc+PcfjdDxi+eC2Akywu/MsJ800xrp6epQTkwi5QmzYCZ8yJqYIKCYn6nTYefP1FATwt9Btto31y+TVh16jMN8UQMOWCAnKtgeDaK+SCnISGDx59CrW5PAeeLWhzmfVJ+xe3rMx8yzVTPE+KQSgpOmbD2cKMyBLTzoNK8LQkfcRkJWdKU9+SoolBKJeGS4gjlLZmbkrdupGA0rAqx+e+s1ImEPNVKR+riYX+6EYCoTeqHJ/7XkggRhwGqFk1IYqjQo4fdZ/dSGDUPRTyfij4iZlviiGQSAkkDKPZFJplCMBEyHABuo9/BZlWq0Dbuo9/yfrn4xMi1DfFEC4ossAmBpk4qC01CwdLnts9TE5Ocfjt9wicwRx44CRttE+SkHw+dpaRoL4phoCpZuDURl0HKx9tQVuiW6ac25MMd/l3F79/9Q1WP7uP1vY6l/0YvZ8PEIf07J9yc/nYRAnqU9F1XP/jiAoUCZApAZkO0Npq4+KvMz5YFRJWcuzSdXz90x8A/uTjIz5TnwOnBHIVWlu3mG+KUVoCCCQiOAd9KA0d5pohKJA6pVmSxsCQngAlG/K28ZwC1JfSMJjv/EaEVAFxq0QgLoHbfwlzfQdk2oN/4S3I7W+7D/gF01ckmOsduP3/mO/SJbW4BKkjGguKfgJ7fw3Df9/AO/OEwAxuvBGlshu3FFi7dxFcnjCf+bYsxEB6RUovCSGrr58NYO9FsHY3ob93Aee5w52rhQuHuHzi1rX3bOjtFfjnR/w6Fop3wXRceikt3/9TABX1TgOt7Q12unnnV5icjBB65fhJlkExAHOtBaO9zOQfdV/BPZ1yUlFJgUgkAIFA+V2QkLF2LRjt25BVC2HgI/LpuyCZiaTIkHUdiqYjIkP4F2dcsaiUDefeBSKBRQeIPFerpgJz3YRq1NlDhAlJIhDPxeR4AjKZm2U58BblgfTNFvPnWeHqLMQHQCYSnGd+xeM0fwNWAGbPMv42rHqelx+gVa/lcnnba1gkl5Wq53m587v8NyCOXfR7vgD4H8khvGFl000HAAAAAElFTkSuQmCC',
'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAhCAYAAAC4JqlRAAAFb0lEQVRYhY1YW28bRRT+ZtbrS24mjVu3btPUDoiqFIEQ4gUh8dKX8hf4A/wT+Am88cA7b5GgrxVPFIREL0rapHHbOHGcxM7Fa3u9c9BMZrZn1+umI43W2j2Xb75z5pwZi89/JLznEExMTFGhKb+njtyUD+KCZxaILOfTnvGIAfj3z5/hmjGcnpjyLosBPtPvtB+yfsxIMBCuQWY4komnD09eRVHMoISc1R9jTH0EahcDhIisM5V6mhmugfz75t35qlgOyJTTxJQ3MCcqqIo8yhRBIcQQCmOrmYOPgvAgaYQedbCnXuPUgkhPYsBiBjjNzrGnp1hEUd7CCiTmqIsjtYsmnRllyfSMQTELKa5iQVTxsXcZp6qJJh0gAAwrbjgQWpc4gLTznKxjUSyhgR660Qu8hDLv8w5cCkBEZ4joBU4h0fNWsSjr+IQWsKm2cDQlYQ2AdJKdO2+gIi5hhV6jpXYRAijpHLIzlwXAZAMQ6gBFGziWVxGIG2hIgW21iQ6TFe7JGYhjLmuY187VS7SoYwxr5wU78xaEZ+VhaY2Mc2AEYKi/q10MxRgtHUI5wFDtoGd14qTMpTNeFOHLGupqD23qmBVp58XUzFsWOICxdT5g4AR1EFAJbW2TDvGYBnFSCs5AzIJcRZVGGKtX6AOYsasu2d8lxoafAhDalfPwmOTUtsQi5rXt6DFe8zqSTEIfnphBNdrAG+sgb1fuAMzaZ7FxG40rNaxo5fYOtjefYZOtXrCtZkKjmuh4H+E6fLQQGrbEBACvjjKFGFHXCMxaAJyB2cvXcOPre/h+dgE33SpW7wCffoXmnw/w637LrJBYWExeUBdn2rb2Ea1j3wGQiV0wgzKdmAKSs9PnIOY/QOXb7/ADd+7G3AJu6m9ahoUpz3ZNztieQZn7lJwB4WOGjg2NcS1gIPJffoN7+SIW087d0N+0jJNPbVmpbQvfMCs4A2+TUKKAU0PZREXUhipV3J3m3A0rk2N6MmZa25YGWJyEMqUvSLGkTE0/j4WLAPgFI5Opz2zHIw2AbFDSbfW8k4U4uQhAODIymfrMdiYAgsIIcyZuxDpY5MrsYRtPLwJw2MYzm/1OT8UNSNtWplglWnC8YhqjL+bNvlestrsKN3r0EA/sCqeu/tFD/OHkmb4Bom1rH/yAIhkaQh89MY+5RGN5W9sH3QPsPfwdPwd9tNPOg/75Ny1jC9LQ6oYOhLHdN/0g0Q1jBlQTPe8u6qIMSb2J2m4q3M42Nn/7BT/d/gx3KtXzetDZQ/PZv3hCyvT+vp2B1TVMaJsij0K0HgMwIBIAKMCYBmjLZVSinqlWI9Z0XHmNSGH09B/8BeBvq897QcAAxCzIZVzWtrWPLAAOhFIbaMm7qMgaimrHKPNEdeV1eEE3HHAGtC1RRDH6D+vsRAQHgG8VRQOMqY0tUcOHIsAbOjJG0rX9XeeBIZ9iEULUUFVtPNe2kTqkJkLgDOlckHm8kqtYVlvYoQMDImKrfPeJyNIuluDJOmrUxSttk23LRAjcEckdErSQUM/Rlg0or45bqowDtWkMhLy2pw+lfOvKBsryEpbUIV7a45irC/GJOM2AYB+MoFakE/TlMla8L1CmQxypFk4MuZNVVOn+J6+Z45xuWMNoG09o3yTkGMnjOTJ3AYvn252xj9NoH09lHQtiCVdyVdwifScYYYjIynqmxRSEjwKNcUxdbKkXhjGVqoYqlXMTu4BnO88LqbZwiC10RQmeuI5ZUUAJecvCGIqOEag3OKMgEefM21F6F5hh72xkr2eJozPLD1AAQc9NELIup9x4VkOCu5ZN3A3dC+6MGZt2W06Pd92G3QITY9r1PEHTe/43wHWzfk8OAP8D28XBfaJJ48oAAAAASUVORK5CYII='
]
export function lineOption () {
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
// axisPointer: {
// type: 'cross',
// label: {
// backgroundColor: '#6a7985'
// }
// },
formatter: (params) => {
console.log(params);
return `<div style="padding: 5px 20px 5px 10px;">
<div>${params[0].axisValue}</div>
<div>项目数 ${params[0].value}</div>
</div>`
}
}
},
// grid: {
// left: '5%',
// right: '5%',
// bottom: '5%',
// top: '10%',
// containLabel: true
// },
xAxis: {
type: 'category',
// boundaryGap: false,
@ -25,7 +46,8 @@ export function lineOption () {
lineStyle: {
color: '#0c4b59'
}
}
},
// data: className
},
yAxis: {
nameTextStyle: {
@ -58,29 +80,82 @@ export function lineOption () {
}
}
},
// series: [
// {
// name: '项目数',
// type: 'line',
// smooth: true,
// barWidth: 15,
// areaStyle: {},
// itemStyle: {
// color: new echarts.graphic.LinearGradient(
// 0, 1, 0, 0,
// [
// { offset: 0, color: 'rgba(121, 55, 255, 0)' },
// { offset: 1, color: '#6339FF' }
// ]
// )
// }
// },
// // {
// // data: [820, 932, 901, 934, 1290, 1330, 1320],
// // type: 'line',
// // areaStyle: {}
// // }
// ]
series: [
{
name: '项目数',
type: 'line',
smooth: true,
barWidth: 15,
areaStyle: {},
itemStyle: {
color: new echarts.graphic.LinearGradient(
0, 1, 0, 0,
[
{ offset: 0, color: 'rgba(121, 55, 255, 0)' },
{ offset: 1, color: '#6339FF' }
]
)
}
name: '',
type: 'bar',
zlevel: 1,
itemStyle: {
normal: {
barBorderRadius: 0,
color: function (params) {
// 大于等于50%的是黄色 反之为蓝色
var colorList = [
['rgba(252, 210, 152, .2)', 'rgba(252, 210, 152, 1)'],
['rgba(36, 253, 231, .2)', 'rgba(36, 253, 231, 1)'],
];
var colorItem
colorItem = colorList[1];
// 设置线条渐变色
return new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: colorItem[0]
},
{
offset: 1,
color: colorItem[1]
}
], false);
}
},
},
// {
// data: [820, 932, 901, 934, 1290, 1330, 1320],
// type: 'line',
// areaStyle: {}
// }
barWidth: 7,
// data: serviceCount
},
{
name: 'XXX',
type: 'pictorialBar',
symbol: function (params, value) {
// 设置图片
return circleList[1]
},
symbolPosition: 'end',
symbolSize: [30, 30],
symbolOffset: [0, -12],
z: 20,
// data: serviceCount
}
]
}
}

2
src/views/modules/visual/communityGovern/shijianchuli/shijianchulifenxi copy.vue

@ -637,8 +637,6 @@ export default {
};
// element.selected = !element.selected
} else {
element.selected = false
element.label = {
show: false,

867
src/views/modules/visual/communityGovern/shijianchuli/shijianchulifenxi.vue

File diff suppressed because it is too large

15
src/views/modules/workSys/dataOpenConfig.vue

@ -76,6 +76,16 @@
:inline="true"
:model="formData">
<el-form-item label="部门"
label-width="150px"
style="display: block">
<span>{{selRow.deptName}}</span>
</el-form-item>
<el-form-item label="数据名称"
label-width="150px"
style="display: block">
<span>{{selRow.dataName}}</span>
</el-form-item>
<el-form-item label="适用范围"
label-width="150px"
style="display: block">
@ -147,6 +157,7 @@ export default {
scopeList: [],
dataSyncConfigId: '',
selRow:{}
}
},
@ -188,7 +199,8 @@ export default {
async getOrgList () {
const url = '/gov/org/customeragency/my-subagency-list'
// const url = '/gov/org/customeragency/my-subagency-list'
const url = '/gov/org/customeragency/agencylist'
let params = {};
@ -295,6 +307,7 @@ export default {
// customerId,parentCategoryId,dateform
editShow (row) {
this.selRow=row
this.dataSyncConfigId = row.id
this.orgIdArray = []

378
src/views/modules/workSys/operAuth.vue

@ -0,0 +1,378 @@
<template>
<div class="div_main">
<div class="div_search">
<el-form :inline="true"
:model="formData"
ref="ref_searchform"
:label-width="'110px'">
<div>
<el-form-item label="操作时间"
label-width="110px"
prop="startTime">
<el-date-picker v-model="timeRange"
size="small"
type="datetimerange"
@change="handleTimeChange"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="姓名"
prop="operatorName">
<el-input v-model="formData.operatorName"
size="small"
class="list_item_width_1"
clearable
placeholder="请输入姓名">
</el-input>
</el-form-item>
<el-form-item label="手机"
prop="operatorMobile">
<el-input v-model="formData.operatorMobile"
size="small"
class="list_item_width_1"
clearable
placeholder="请输入手机号">
</el-input>
</el-form-item>
<el-button style="margin-left:30px"
size="small"
class="diy-button--search"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
size="small"
class="diy-button--reset"
@click="resetSearch">重置</el-button>
</div>
</el-form>
</div>
<div class="div_table">
<div class="div_btn">
<el-button v-if="false"
style="float:left;margin-left:10px"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
</div>
<el-table class="table"
ref="ref_table"
:data="tableData"
border
:height="tableHeight"
v-loading="tableLoading"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
style="width: 100%">
<el-table-column label="序号"
header-align="center"
align="center"
type="index"
width="50"></el-table-column>
<el-table-column prop="operatorName"
header-align="center"
align="center"
label="姓名"
min-width="100">
</el-table-column>
<el-table-column prop="operatorMobile"
header-align="center"
align="center"
label="手机号"
min-width="110">
</el-table-column>
<el-table-column prop="content"
header-align="center"
align="center"
label="操作事项"
min-width="230">
</el-table-column>
<el-table-column prop="operateTime"
header-align="center"
align="center"
show-overflow-tooltip
label="操作时间"
min-width="150">
</el-table-column>
<!-- <el-table-column label="操作"
fixed="right"
width="140"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<el-button type="text"
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
</template>
</el-table-column> -->
</el-table>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
let loading //
export default {
data () {
return {
loading: false,
total: 0,
pageSize: 20,
pageNo: 0,
tableLoading: false,
agencyId: '',
timeRange: [],
formData: {
category: 'data_tm',
operatorName: '',//
operatorMobile: '',//
startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
},
tableData: [],
}
},
components: {
},
async created () {
},
async mounted () {
//
const { user } = this.$store.state
this.agencyId = user.agencyId
await this.loadTable()
},
activated () {
this.$refs['ref_table'].doLayout()
},
methods: {
async handleSearch () {
await this.loadTable()
this.$nextTick(() => {
this.$refs.ref_table.doLayout() //
})
},
async loadTable () {
this.tableLoading = true
const url = "/sys/log/operation/page"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/natlist"
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
...this.formData
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.total = data.total
this.tableData = data.list
this.tableData.forEach(item => {
item.isResiUserShow = item.isResiUser === '0' ? '否' : '是'
if (item.natResult === '1') {
item.natResultShow = '阳性'
} else if (item.natResult === '0') {
item.natResultShow = '阴性'
} else {
item.natResultShow = ''
}
});
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
handleTimeChange (time) {
if (time) {
this.formData.startTime = time[0]
this.formData.endTime = time[1]
} else {
this.formData.startTime = ''
this.formData.endTime = ''
}
},
//
resetSearch () {
this.formData = {
category: 'data_tm',
operatorName: '',//
operatorMobile: '',//
startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
}
this.timeRange = []
this.pageNo = 0
// this.loadTable()
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
},
//
async handleExport () {
let title = '操作记录'
const url = "/epmetuser/icNat/export"
app.ajax.exportFilePost(
url,
this.formData,
(data, rspMsg) => {
this.download(data, title + '.xlsx')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
},
//
download (data, fileName) {
if (!data) {
return
}
var csvData = new Blob([data])
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(csvData, fileName);
}
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
}
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {
tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 330 + this.iframeHeight : this.clientHeight - 330
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
watch: {
},
props: {
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/management/epidemic.scss";
</style>

209
src/views/pages/yantai-index.vue

@ -0,0 +1,209 @@
<template>
<fixed1920>
<div class="g-cnt">
<div class="m-top animate__animated menu animate__fadeInDown">
<img class="logo" src="@/assets/img/yantai/index/db.png" />
<div class="name">智慧社区平台</div>
</div>
<div class="m-list">
<div class="list">
<div class="animate__animated menu animate__fadeInLeft">
<img
class="menu-bg"
src="@/assets/img/yantai/index/yuanhu-you.png"
/>
<div class="menu-list">
<div class="menu-item z-zuo" @click="toPage('/main/base-resi')">
人房信息
</div>
<div
class="menu-item z-zuo"
@click="toPage('/main/base-epidemic-antiInfo')"
>
疫情防控
</div>
<div
class="menu-item z-zuo"
@click="toPage('/main/shequzhili-event-eventList')"
>
社区治理
</div>
<div
class="menu-item z-zuo z-on"
@click="toPage('/main/communityParty-members-index')"
>
社区党建
</div>
<div
class="menu-item z-zuo"
@click="toPage('/main/communityService-measure-index')"
>
社区服务
</div>
<div class="menu-item z-zuo" @click="toPage('/main/workPc-guidance-guidanceList.vue')">便携工具</div>
<div class="menu-item z-zuo" @click="toPage('/main/workSys-mapConfig')">系统管理</div>
</div>
</div>
<img class="arrow" src="@/assets/img/yantai/index/zuo.png" />
<div
class="item animate__animated animate__pulse"
@click="handleClickItem(1)"
>
<div class="item-wrap">
<img class="logo" src="@/assets/img/yantai/index/guanli.png" />
<div class="name">管理平台</div>
</div>
</div>
<div
class="item animate__animated animate__pulse"
@click="handleClickItem(2)"
>
<div class="item-wrap">
<img class="logo" src="@/assets/img/yantai/index/shuju.png" />
<div class="name">数据分析平台</div>
</div>
</div>
<img class="arrow" src="@/assets/img/yantai/index/you.png" />
<div class="menu animate__animated menu animate__fadeInRight">
<img
class="menu-bg"
src="@/assets/img/yantai/index/yuanhu-zuo.png"
/>
<div class="menu-list">
<div
class="menu-item z-you"
@click="toPage('/main-shuju/visual-basicinfo-basicInfoMain')"
>
基础信息
</div>
<div
class="menu-item z-you"
@click="toPage('/main-shuju/visual-warning-index')"
>
人员预警
</div>
<div
class="menu-item z-you"
@click="toPage('/main-shuju/visual-measure-service')"
>
需求清单
</div>
<div
class="menu-item z-you z-on"
@click="toPage('/main-shuju/visual-communityParty-party')"
>
社区党建
</div>
<div
class="menu-item z-you"
@click="
toPage(
'/main-shuju/visual-communityGovern-shijianchuli-shijianchulifenxi'
)
"
>
社区治理
</div>
<div
class="menu-item z-you"
@click="toPage('/main-shuju/visual-heart-index')"
>
初心互助
</div>
<div class="menu-item z-you" @click="toPage('/main-shuju/i-1536625421829599234')">
三维展示
</div>
</div>
</div>
</div>
</div>
<div class="m-footer">
<div class="login-footer">
<p>
<!-- <a href="http://www.elinkchina.com.cn/" target="_blank">{{
$t("login.copyright")
}}</a> -->
</p>
</div>
</div>
</div>
</fixed1920>
</template>
<script>
import { messages } from "@/i18n";
import fixed1920 from "@/views/components/fixed1920.vue";
export default {
data() {
return {
pubKey: null, //
isShowLogin: true,
i18nMessages: messages,
};
},
components: { fixed1920 },
computed: {
bdStyle() {
console.log("clientHeight", document.documentElement.clientHeight);
const scale = document.documentElement.clientWidth / 1920;
const height = document.documentElement.clientHeight / scale;
const top = (document.documentElement.clientHeight - height) / 2;
const left = (document.documentElement.clientWidth - 1920) / 2;
return {
transform: `scale(${scale})`,
height: `${height}px`,
left: `${left}px`,
top: `${top}px`,
};
},
},
created() {},
mounted() {},
methods: {
handleClickItem(k) {
if (k == 1) {
this.$router.replace({ name: "main" });
} else if (k == 2) {
this.$router.replace({ name: "main-shuju" });
}
},
toPage(path) {
this.$router.push({ path });
},
//
getAutoLogin(platformToken) {
this.dataForm.thirdToken = platformToken;
this.dataForm.platform = "pyld";
this.$http
.post(`/auth/sso/oper/third/login`, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
if (res.code == 8302) {
return this.$message.error(res.msg);
}
return this.$message.error(res.msg);
}
localStorage.setItem("customerId", res.data.customerId);
localStorage.setItem("userType", "work");
localStorage.setItem("showHeader", "0");
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "home" });
})
.catch(() => {});
// epmet-ext9.elinkservice.cn/platform-admin
},
},
};
</script>
<style lang="scss" src="@/assets/scss/pages/yantai-index.scss" scoped></style>

435
src/views/pages/yantai-login.vue

@ -0,0 +1,435 @@
<template>
<div class="g-app">
<div class="g-bd" v-if="isShowLogin || true">
<div class="m-snow-box" id="snow_box"></div>
<div class="m-fm animate__animated animate__rotateInDownLeft">
<div class="wrap">
<h2 class="title">{{ $t("brand.work") }}</h2>
<div class="fm">
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon
>
<div class="fm-item">
<div class="ico">
<img src="@/assets/img/login/zhanghao.png" alt="" />
</div>
<div class="input">
<input
type="text"
v-model="dataForm.phone"
placeholder="账号"
/>
</div>
</div>
<div class="fm-item">
<div class="ico">
<img src="@/assets/img/login/mima.png" alt="" />
</div>
<div class="input">
<input
type="password"
v-model="dataForm.password"
:placeholder="$t('login.password')"
/>
</div>
</div>
<div class="fm-captcha">
<div class="fm-item">
<div class="input">
<input
type="text"
v-model="dataForm.captcha"
placeholder="验证码"
/>
</div>
</div>
<div class="captcha">
<img :src="captchaPath" @click="getCaptcha()" />
</div>
</div>
<div class="fm-btn" @click="dataFormSubmitHandle()">
{{ $t("login.title") }}
</div>
<div class="hint">请使用小程序端的账号密码登录</div>
</el-form>
</div>
</div>
</div>
<div class="m-footer">
<div class="login-footer">
<p>
<!-- <a href="" target="_blank">{{ $t("login.copyright") }}</a> -->
</p>
</div>
</div>
</div>
<c-dialog
:showFooter="false"
:title="'选择客户'"
:isNest="false"
:visible="diaVisible"
:dialogHeight="0.8"
:width="30"
:top="'120px'"
@cancel="diaCancel"
>
<div class="m-pop">
<div v-for="(item, index) in tableData" :key="index" class="div_row">
<span @click="selectCustomer(item)" class="span_name">{{
item.customerName
}}</span>
</div>
</div>
</c-dialog>
</div>
</template>
<script>
import CDialog from "@c/CDialog";
import particles_js from "particles.js/particles.js";
import { messages } from "@/i18n";
import { getUUID } from "@/utils";
import { Loading } from "element-ui"; // Loading
import JSEncrypt from "jsencrypt"; //
let loading; //
export default {
data() {
return {
pubKey: null, //
isShowLogin: true,
i18nMessages: messages,
captchaPath: "",
dataForm: {
customerId: "",
app: "gov",
client: "web",
username: "",
phone: "",
password: "",
uuid: "",
captcha: "",
},
//
diaVisible: false,
tableLoading: false,
tableData: [],
};
},
components: {
CDialog,
},
computed: {
dataRule() {
return {
phone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
password: [
{ required: true, message: "密码不能为空", trigger: "blur" },
],
captcha: [
{ required: true, message: "验证码不能为空", trigger: "blur" },
],
};
},
},
created() {
//
if (this.$route.query.platformToken) {
this.isShowLogin = false;
this.getAutoLogin(this.$route.query.platformToken);
} else {
this.getCaptcha();
//
this.getPubKey();
}
},
mounted() {
localStorage.removeItem("showHeader");
particlesJS(
"snow_box",
{
particles: {
number: {
value: 380,
density: {
enable: true,
value_area: 800,
},
},
color: {
value: "#ffffff",
},
shape: {
type: "circle",
stroke: {
width: 0,
color: "#000000",
},
polygon: {
nb_sides: 5,
},
image: {
src: "img/github.svg",
width: 100,
height: 100,
},
},
opacity: {
value: 0.5,
random: false,
anim: {
enable: false,
speed: 1,
opacity_min: 0.1,
sync: false,
},
},
size: {
value: 3,
random: true,
anim: {
enable: false,
speed: 40,
size_min: 0.1,
sync: false,
},
},
line_linked: {
enable: true,
distance: 150,
color: "#ffffff",
opacity: 0,
width: 1,
},
move: {
enable: true,
speed: 6,
direction: "none",
random: false,
straight: false,
out_mode: "out",
bounce: false,
attract: {
enable: false,
rotateX: 600,
rotateY: 1200,
},
},
},
interactivity: {
detect_on: "canvas",
events: {
onhover: {
enable: true,
mode: "grab",
},
onclick: {
enable: true,
mode: "push",
},
resize: true,
},
modes: {
grab: {
distance: 140,
line_linked: {
opacity: 1,
},
},
bubble: {
distance: 400,
size: 40,
duration: 2,
opacity: 8,
speed: 3,
},
repulse: {
distance: 200,
duration: 0.4,
},
push: {
particles_nb: 4,
},
remove: {
particles_nb: 2,
},
},
},
retina_detect: true,
},
function () {
console.log("callback - particles.js config loaded");
}
);
},
methods: {
//
getPubKey() {
this.$http
.post("/auth/govweb/getKey")
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.pubKey = res.data; // ;
})
.catch(() => {});
},
//
getCaptcha() {
this.dataForm.uuid = getUUID();
this.captchaPath = `${window.SITE_CONFIG["apiURL"]}/auth/login/captcha?uuid=${this.dataForm.uuid}`;
},
//
dataFormSubmitHandle() {
this.$refs["dataForm"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
}
this.startLoading();
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/epmetuser/customerstaff/customerlist'
const url = "/epmetuser/customerstaff/customerlist";
const params = {
phone: this.dataForm.phone,
};
// this.$http
// .post(url, params).then(({ data })=> {
// console.log('res--comll', data)
// if (data.data.length === 0) {
// //
// this.$message.error('')
// this.endLoading()
// } else if (data.data.length === 1) {
// this.selectCustomer(data.data[0])
// } else {
// this.endLoading()
// this.diaVisible = true
// this.$nextTick(() => {
// this.tableData = data.data
// })
// }
// }).catch((err) => {
// this.endLoading()
// this.$message.error(err)
// })
window.app.ajax.post(
url,
params,
(data, rspMsg) => {
if (data.length === 0) {
//
this.$message.error("账号不存在");
this.endLoading();
} else if (data.length === 1) {
this.selectCustomer(data[0]);
} else {
this.endLoading();
this.diaVisible = true;
this.$nextTick(() => {
this.tableData = data;
});
}
},
(rspMsg, data) => {
this.endLoading();
this.$message.error(rspMsg);
}
);
});
},
//
getAutoLogin(platformToken) {
this.dataForm.thirdToken = platformToken;
this.dataForm.platform = "pyld";
this.$http
.post(`/auth/sso/oper/third/login`, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
if (res.code == 8302) {
return this.$message.error(res.msg);
}
return this.$message.error(res.msg);
}
localStorage.setItem("customerId", res.data.customerId);
localStorage.setItem("userType", "work");
localStorage.setItem("showHeader", "0");
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "home" });
})
.catch(() => {});
// epmet-ext9.elinkservice.cn/platform-admin
},
//
selectCustomer(row) {
localStorage.setItem("customerId", row.customerId);
localStorage.setItem("customerName", row.customerName);
this.startLoading();
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/auth/govweb/login'
const url = "/auth/govweb/login";
this.dataForm.customerId = row.customerId;
let param = {};
Object.assign(param, this.dataForm);
param.password = this.encryptedData(this.pubKey, this.dataForm.password);
this.$http
.post(url, param)
.then(({ data: res }) => {
this.endLoading();
if (res.code !== 0) {
this.getCaptcha();
return this.$message.error(res.msg);
}
this.diaVisible = false;
localStorage.setItem("userType", "work");
localStorage.setItem("token", res.data.token);
this.$router.replace({ name: "index" });
})
.catch(() => {
this.endLoading();
});
},
//
diaCancel() {
this.diaVisible = false;
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
//
encryptedData(key, data) {
// JSEncrypt
let encryptor = new JSEncrypt();
//
encryptor.setPublicKey(key);
//
return encryptor.encrypt(data);
},
},
};
</script>
<style lang="scss" src="@/assets/scss/pages/yantai-login.scss" scoped></style>
Loading…
Cancel
Save