Browse Source

一些功能

master
dai 2 years ago
parent
commit
292a65a4f9
  1. 509
      report.20230426.090430.1984.0.001.json
  2. 43
      src/views/modules/communityParty/article/drafts.vue
  3. 1445
      src/views/modules/communityParty/article/index.vue
  4. 2176
      src/views/modules/cpts/base/cpts/edit.vue
  5. 36
      src/views/modules/cpts/base/index.vue
  6. 280
      src/views/modules/lingshan/aqsc/qyda.vue
  7. 2
      src/views/modules/lingshan/djyl/article/conf.js
  8. 221
      src/views/modules/lingshan/djyl/article/cpts/offline.vue
  9. 479
      src/views/modules/lingshan/djyl/article/drafts.vue
  10. 831
      src/views/modules/lingshan/djyl/article/index.vue
  11. 1317
      src/views/modules/lingshan/shzl/mapConfig.vue
  12. 1661
      src/views/modules/lingshan/shzl/tsrq/cpts/edit.vue
  13. 390
      src/views/modules/lingshan/shzl/tsrq/cpts/pop-import.vue
  14. 24
      src/views/modules/lingshan/shzl/tsrq/dict.js
  15. 670
      src/views/modules/lingshan/shzl/tsrq/index.vue
  16. 1053
      src/views/modules/lingshan/xtgl/articleCategory.vue
  17. 2
      src/views/modules/visual/cpts/map/index.vue

509
report.20230426.090430.1984.0.001.json

@ -0,0 +1,509 @@
{
"header": {
"event": "Allocation failed - JavaScript heap out of memory",
"trigger": "FatalError",
"filename": "report.20230426.090430.1984.0.001.json",
"dumpEventTime": "2023-04-26T09:04:30Z",
"processId": 1984,
"cwd": "D:\\Project\\Web\\epmet-cloud-lingshan-integration",
"commandLine": [
"node",
"D:\\Project\\Web\\epmet-cloud-lingshan-integration\\node_modules\\.bin\\\\..\\_@vue_cli-service@3.10.0@@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": "0x00007ff6c60dd24e",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+16366"
},
{
"pc": "0x00007ff6c60dc0f9",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+11929"
},
{
"pc": "0x00007ff6c60db923",
"symbol": "std::basic_ios<char,std::char_traits<char> >::fill+9923"
},
{
"pc": "0x00007ff6c61cdc22",
"symbol": "uv_loop_fork+89362"
},
{
"pc": "0x00007ff6c65f609e",
"symbol": "v8::internal::FatalProcessOutOfMemory+798"
},
{
"pc": "0x00007ff6c65f5fd7",
"symbol": "v8::internal::FatalProcessOutOfMemory+599"
},
{
"pc": "0x00007ff6c66a9a14",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+14068"
},
{
"pc": "0x00007ff6c669f822",
"symbol": "v8::internal::Heap::CollectGarbage+7234"
},
{
"pc": "0x00007ff6c669e038",
"symbol": "v8::internal::Heap::CollectGarbage+1112"
},
{
"pc": "0x00007ff6c66a7967",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+5703"
},
{
"pc": "0x00007ff6c66a79e6",
"symbol": "v8::internal::Heap::RootIsImmortalImmovable+5830"
},
{
"pc": "0x00007ff6c67df8b1",
"symbol": "v8::internal::Factory::NewFillerObject+49"
},
{
"pc": "0x00007ff6c6899786",
"symbol": "v8::internal::StoreBuffer::StoreBufferOverflow+27190"
},
{
"pc": "0x000003c014850481",
"symbol": ""
}
],
"javascriptHeap": {
"totalMemory": 1482977280,
"totalCommittedMemory": 1482977280,
"usedMemory": 1335990304,
"availableMemory": 43634208,
"memoryLimit": 1526909922,
"heapSpaces": {
"read_only_space": {
"memorySize": 524288,
"committedMemory": 524288,
"capacity": 515584,
"used": 33520,
"available": 482064
},
"new_space": {
"memorySize": 2097152,
"committedMemory": 2097152,
"capacity": 1031168,
"used": 281424,
"available": 749744
},
"old_space": {
"memorySize": 1297289216,
"committedMemory": 1297289216,
"capacity": 1179969632,
"used": 1179825152,
"available": 144480
},
"code_space": {
"memorySize": 9437184,
"committedMemory": 9437184,
"capacity": 7549376,
"used": 7549376,
"available": 0
},
"map_space": {
"memorySize": 29896704,
"committedMemory": 29896704,
"capacity": 6416880,
"used": 6416880,
"available": 0
},
"large_object_space": {
"memorySize": 143732736,
"committedMemory": 143732736,
"capacity": 184141872,
"used": 141883952,
"available": 42257920
},
"new_large_object_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
}
}
},
"resourceUsage": {
"userCpuSeconds": 8180.31,
"kernelCpuSeconds": 396.093,
"cpuConsumptionPercent": 0.828521,
"maxRss": 1836003328,
"pageFaults": {
"IORequired": 178853511,
"IONotRequired": 0
},
"fsActivity": {
"reads": 133094,
"writes": 1680
}
},
"libuv": [
],
"environmentVariables": {
"=C:": "C:\\",
"=D:": "D:\\Project\\Web\\epmet-cloud-lingshan-integration",
"ALLUSERSPROFILE": "C:\\ProgramData",
"APPDATA": "C:\\Users\\lenovo\\AppData\\Roaming",
"BABEL_ENV": "development",
"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",
"dp0": "D:\\Project\\Web\\epmet-cloud-lingshan-integration\\node_modules\\.bin\\",
"DriverData": "C:\\Windows\\System32\\Drivers\\DriverData",
"HOME": "C:\\Users\\lenovo",
"HOMEDRIVE": "C:",
"HOMEPATH": "\\Users\\lenovo",
"INIT_CWD": "D:\\Project\\Web\\epmet-cloud-lingshan-integration",
"LOCALAPPDATA": "C:\\Users\\lenovo\\AppData\\Local",
"LOGONSERVER": "\\\\DESKTOP-KD168PS",
"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": "D:\\APP\\Nodejs\\etc\\npmrc",
"npm_config_globalignorefile": "D:\\APP\\Nodejs\\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\\nvm\\v11.15.0\\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": "D:\\APP\\Nodejs",
"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\\nvm\\v11.15.0\\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.2",
"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_proj4": "2.8.0",
"npm_package_dependencies_qs": "6.7.0",
"npm_package_dependencies_quill": "1.3.6",
"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_sass_loader": "7.3.1",
"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": "f653d3c867bd828f8d7da420c8baf74d10941134",
"npm_package_name": "lingshan-oper",
"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": "1.0.0",
"NPM_PREFIX_NPM_CLI_JS": "D:\\APP\\Nodejs\\node_modules\\npm\\bin\\npm-cli.js",
"NUMBER_OF_PROCESSORS": "8",
"NVM_HOME": "D:\\APP\\nvm",
"NVM_SYMLINK": "D:\\APP\\Nodejs",
"OneDrive": "C:\\Users\\lenovo\\OneDrive",
"OS": "Windows_NT",
"Path": "D:\\APP\\nvm\\v11.15.0\\node_modules\\npm\\node_modules\\npm-lifecycle\\node-gyp-bin;D:\\Project\\Web\\epmet-cloud-lingshan-integration\\node_modules\\.bin;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;%NVM_HOME%;%NVM_SYMLINK%;C:\\Program Files\\PowerShell\\7\\;D:\\APP\\python\\Scripts\\;D:\\APP\\python\\;C:\\Users\\lenovo\\AppData\\Local\\Microsoft\\WindowsApps;D:\\APP\\Microsoft VS Code\\bin;D:\\APP\\nvm;D:\\APP\\Nodejs;D:\\APP\\SHH",
"PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JSE;.WSF;.WSH;.MSC;.CPL",
"POWERSHELL_DISTRIBUTION_CHANNEL": "MSI:Windows 10 Home China",
"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": "$P$G",
"PSModulePath": "C:\\Users\\lenovo\\Documents\\WindowsPowerShell\\Modules;C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules",
"PUBLIC": "C:\\Users\\Public",
"SystemDrive": "C:",
"SystemRoot": "C:\\WINDOWS",
"TEMP": "C:\\Users\\lenovo\\AppData\\Local\\Temp",
"TMP": "C:\\Users\\lenovo\\AppData\\Local\\Temp",
"USERDOMAIN": "DESKTOP-KD168PS",
"USERDOMAIN_ROAMINGPROFILE": "DESKTOP-KD168PS",
"USERNAME": "lenovo",
"USERPROFILE": "C:\\Users\\lenovo",
"VUE_APP_API_SERVER": "http://localhost:7099/api",
"VUE_APP_NODE_ENV": "dev",
"VUE_APP_PUBLIC_PATH": "lingshan-oper",
"VUE_CLI_ENTRY_FILES": "[\"D:\\\\Project\\\\Web\\\\epmet-cloud-lingshan-integration\\\\src\\\\main.js\"]",
"WEBPACK_DEV_SERVER": "true",
"windir": "C:\\WINDOWS",
"WSLENV": "WT_SESSION::WT_PROFILE_ID",
"WT_PROFILE_ID": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"WT_SESSION": "d9c7e1a5-e00a-451a-990e-feb4f63fdf55",
"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\\dbghelp.dll",
"C:\\WINDOWS\\System32\\gdi32full.dll",
"C:\\WINDOWS\\System32\\ucrtbase.dll",
"C:\\WINDOWS\\System32\\msvcp_win.dll",
"C:\\WINDOWS\\System32\\combase.dll",
"C:\\WINDOWS\\System32\\CRYPT32.dll",
"C:\\WINDOWS\\System32\\OLEAUT32.dll",
"C:\\WINDOWS\\SYSTEM32\\USERENV.dll",
"C:\\WINDOWS\\SYSTEM32\\IPHLPAPI.DLL",
"C:\\WINDOWS\\SYSTEM32\\bcrypt.dll",
"C:\\WINDOWS\\SYSTEM32\\WINMM.dll",
"C:\\WINDOWS\\System32\\IMM32.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-cloud-lingshan-integration\\node_modules\\_node-sass@4.14.1@node-sass\\vendor\\win32-x64-67\\binding.node"
]
}

43
src/views/modules/communityParty/article/drafts.vue

@ -299,6 +299,37 @@ export default {
},
],
},
{
//
field: "附件",
keyName: "fileList2",
type: "upload",
limit: 3,
listType: "file",
editDisabled: true,
rules: [],
value: () => [],
uploadUrl:
window.SITE_CONFIG["apiURL"] +
"/oss/file/article/upload",
supKeys: ["fileListArr2", "fileListItem2"],
supValues: [() => [], ""],
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type.toLowerCase();
if (!isLt1M) {
that.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (srcType.indexOf("pdf") == -1) {
that.$message.error("仅限pdf格式");
return false;
}
return true;
},
},
{
field: "置顶",
keyName: "isTop",
@ -343,6 +374,13 @@ export default {
];
data.imgUrlArr = [data.imgUrl];
}
data.fileList2 = (data.fileList || []).map((item) => ({
url: item.content,
name: item.fileName,
size: 0,
type: item.content.split(".").pop(),
format: item.content.split(".").pop(),
}));
return data;
},
@ -352,6 +390,11 @@ export default {
that.$message.error("请上传封面图片");
return false;
}
fmData.fileList = (fmData.fileList2 || []).map((item) => ({
content: item.url,
fileName: item.name,
contentType: "file",
}));
return true;
},
},

1445
src/views/modules/communityParty/article/index.vue

File diff suppressed because it is too large

2176
src/views/modules/cpts/base/cpts/edit.vue

File diff suppressed because it is too large

36
src/views/modules/cpts/base/index.vue

@ -259,7 +259,7 @@
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { requestPost, requestGet } from "@/js/dai/request";
import { mapGetters } from "vuex";
import axios from "axios";
import editForm from "./cpts/edit";
@ -452,12 +452,21 @@ export default {
searchParams.forEach((item, index) => {
if (item.type == "select" || item.type == "cascader") {
if (item.optionUrl) {
this.getFmOptions(
index,
item.optionUrl,
item.optionUrlParams || {},
item.optionCook || null
);
if (item.optionUrlMethod == "get") {
this.getFmOptionsGet(
index,
item.optionUrl,
item.optionUrlParams || {},
item.optionCook || null
);
} else {
this.getFmOptions(
index,
item.optionUrl,
item.optionUrlParams || {},
item.optionCook || null
);
}
}
}
});
@ -476,6 +485,19 @@ export default {
}
},
async getFmOptionsGet(index, url, params, cookFn) {
const { data, code, msg } = await requestGet(url, {
...params,
});
if (code === 0) {
this.searchParams[index].optionList =
typeof cookFn == "function" ? cookFn(data) : data || [];
} else {
this.$message.error("请求检索基础数据失败!");
}
},
handleChangeCascader (vals, item) {
if (typeof item.handleChangeFn == "function") {
item.handleChangeFn(vals, item);

280
src/views/modules/lingshan/aqsc/qyda.vue

@ -0,0 +1,280 @@
<template>
<div>
<base-page
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
:addUrl="addUrl"
:editUrl="editUrl"
:delUrl="delUrl"
:editAuth="editAuth"
:delAuth="delAuth"
:infoUrl="infoUrl"
:exportUrl="exportUrl"
:importUrl="importUrl"
:mubanUrl="mubanUrl"
:editParams="editParams"
:editElseRules="editElseRules"
:editBtnName="(item) => (!item.latitude ? '待完善' : '修改')"
idName="icDangerousChemicalsId"
></base-page>
</div>
</template>
<script>
import basePage from "@/views/modules/cpts/base/index";
import { getItemByIdInCascader, collapse } from "@/utils/cascader";
export default {
props: {},
data() {
return {
searchParams: [
{ field: "企业名称", keyName: "name", type: "input" },
{
field: "企业类别",
keyName: "category",
type: "select",
optionUrl:
"/gov/org/coverage/dict-select-list/dangerous_chemicals",
optionUrlParams: {},
optionList: [],
},
{ field: "企业地址", keyName: "address", type: "input" },
{ field: "联系人", keyName: "principalName", type: "input" },
{
field: "安全负责人",
keyName: "securityPrincipalName",
type: "input",
},
],
tableParams: [
{ field: "序号", keyName: "", type: "no" },
{ field: "所属组织", keyName: "orgName", type: "text" },
{ field: "企业名称", keyName: "name", type: "text" },
{ field: "企业类别", keyName: "categoryName", type: "text" },
{ field: "企业地址", keyName: "address", type: "text" },
{ field: "联系人", keyName: "principalName", type: "text" },
{ field: "联系电话", keyName: "principalMobile", type: "text" },
{
field: "安全负责人",
keyName: "securityPrincipalName",
type: "text",
},
{
field: "安全负责人电话",
keyName: "securityPrincipalMobile",
type: "text",
},
],
tableUrl: "/gov/org/icDangerousChemicals/list",
mubanUrl: "/gov/org/icDangerousChemicals/download",
importUrl: "/gov/org/icDangerousChemicals/import",
exportUrl: "/gov/org/icDangerousChemicals/export",
addUrl: "/gov/org/icDangerousChemicals/add",
editUrl: "/gov/org/icDangerousChemicals/edit",
infoUrl: "/gov/org/icDangerousChemicals/detail",
delUrl: "/gov/org/icDangerousChemicals/del",
editAuth(item) {
return item.agencyId == this.$store.state.user.agencyId;
},
delAuth(item) {
return item.agencyId == this.$store.state.user.agencyId;
},
editParams: [
{
field: "所属组织",
keyName: "orgId",
type: "cascader",
value: () => [],
supKeys: ["orgType"],
supValues: [""],
optionUrl: "/gov/org/customeragency/agencygridtree",
optionUrlParams: {
agencyId: this.$store.state.user.agencyId,
},
optionList: [],
optionProps: {
multiple: false,
value: "agencyId",
label: "agencyName",
children: "subAgencyList",
checkStrictly: true,
emitPath: false,
},
optionCook(obj) {
return [obj];
},
handleChangeFn(val, item, that) {
const { optionList } = item;
const optionPlaneList = collapse(
optionList,
"subAgencyList"
);
if (val) {
let selectedItem = getItemByIdInCascader(
optionPlaneList,
[val],
"agencyId",
"subAgencyList"
)[0];
that.fmData[item["keyName"]] =
selectedItem.agencyId;
that.fmData[item["supKeys"][0]] =
selectedItem.level == "grid"
? "grid"
: "agency";
console.log("handleChangeFn", selectedItem);
} else {
that.fmData[item["keyName"]] = "";
that.fmData[item["supKeys"][0]] = "";
}
},
rules: [
{
required: true,
message: "所属组织不能为空",
trigger: "blur",
},
],
},
{
field: "企业名称",
keyName: "name",
type: "input",
maxlength: 50,
editDisabled: false,
rules: [
{
required: true,
message: "企业名称不能为空",
trigger: "blur",
},
],
},
{
field: "企业类别",
keyName: "category",
type: "select",
optionUrl:
"/gov/org/coverage/dict-select-list/dangerous_chemicals",
optionUrlParams: {
// dictType: "ic_service_type",
},
optionList: [],
editDisabled: false,
rules: [
{
required: true,
message: "企业类别不能为空",
trigger: "blur",
},
],
},
{
field: "是否重点安全企业",
keyName: "securityFlag",
type: "select",
optionUrl: "",
optionUrlParams: {},
optionList: [
{
value: true,
label: "是",
},
{
value: false,
label: "否",
},
],
editDisabled: false,
rules: [
{
required: true,
message: "是否重点安全企业不能为空",
trigger: "blur",
},
],
},
{
field: "联系人",
keyName: "principalName",
type: "input",
maxlength: 50,
},
{
field: "联系电话",
keyName: "principalMobile",
type: "input",
maxlength: 50,
},
{
field: "安全负责人",
keyName: "securityPrincipalName",
type: "input",
maxlength: 50,
},
{
field: "安全负责人电话",
keyName: "securityPrincipalMobile",
type: "input",
maxlength: 50,
},
{
field: "包企领导",
keyName: "bqLd",
type: "input",
maxlength: 50,
},
{
field: "包企干部",
keyName: "bqGb",
type: "input",
maxlength: 50,
},
{
field: "企业地址",
keyName: "address",
type: "address",
maxlength: 50,
supKeys: ["longitude", "latitude"],
supValues: ["", ""],
rules: [
{
required: true,
message: "经营地址坐标不能为空",
trigger: "blur",
},
],
},
{
field: "企业介绍",
keyName: "companyProfile",
type: "textarea",
},
],
editElseRules: {
longitude: {
type: "number",
required: true,
message: "请拖动地图选择坐标点",
},
},
};
},
components: { basePage },
computed: {},
watch: {},
async mounted() {},
methods: {},
};
</script>
<style lang="scss" scoped></style>

2
src/views/modules/lingshan/djyl/article/conf.js

@ -0,0 +1,2 @@
// 文章一级栏目id 先写死吧
export const parentCategoryId = "1645734953282990082";

221
src/views/modules/lingshan/djyl/article/cpts/offline.vue

@ -0,0 +1,221 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form
ref="ref_form"
:inline="true"
:model="fmData"
:rules="dataRule"
class="form"
>
<el-form-item
label="文章名称"
prop="title"
label-width="150px"
style="display: block"
>
<div style="width: 610px">
{{ fmData.title || "--" }}
</div>
</el-form-item>
<el-form-item
label="下线网格 "
prop="gridIdList"
label-width="150px"
style="display: block"
>
<el-cascader
v-model="fmData.gridIdList"
placeholder="请选择"
:options="gridOptions"
:props="{
multiple: true,
value: 'value',
label: 'label',
children: 'children',
checkStrictly: false,
emitPath: false,
}"
:show-all-levels="false"
size="small"
clearable
class="item-select"
style="width: 500px"
@change="handleChangeCascader"
>
</el-cascader>
</el-form-item>
</el-form>
</div>
<div class="div_btn resi-btns">
<el-button size="small" @click="handleCancle"> </el-button>
<el-button
type="primary"
size="small"
:disabled="btnDisable"
@click="handleComfirm"
> </el-button
>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
export default {
props: {},
data() {
return {
btnDisable: false,
fmData: {
articleId: "",
title: "",
gridIdList: [],
},
gridOptions: [],
};
},
components: {},
computed: {
dataRule() {
return {
gridIdList: [
{ required: true, message: "下线网格不能为空", trigger: "blur" },
],
};
},
},
watch: {},
async mounted() {},
methods: {
handleChangeCascader(e) {
console.log(e);
},
async initForm({ articleId, title }) {
this.fmData.articleId = articleId;
this.fmData.title = title;
this.fmData.gridIdList = [];
this.gridOptions = [];
this.getGridOpitons(articleId);
},
async getGridOpitons(articleId) {
const url = "/gov/voice/article/publishgridlist";
const params = {
articleId,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
function poll(list) {
return list.map((item) => {
return {
label: item.agencyName,
value: item.agencyId,
type: "agency",
children: [
...poll(item.subAgencyGridList),
...item.gridList.map((grid) => ({
label: grid.gridName,
value: grid.gridId,
type: "grid",
})),
],
};
});
}
let gridOptions = poll([data.agencyGridList]);
console.log(gridOptions);
this.gridOptions = gridOptions;
} else {
this.$message.error(msg);
}
},
async handleComfirm() {
this.btnDisable = true;
setTimeout(() => {
this.btnDisable = false;
}, 5000);
this.$refs["ref_form"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
this.btnDisable = false;
} else {
this.submit();
}
});
},
async submit() {
let url = "/gov/voice/article/offlinearticle";
let params = { ...this.fmData };
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message({
type: "success",
message: "操作成功",
});
this.$emit("afterOffline");
this.btnDisable = false;
} else {
this.btnDisable = false;
this.$message.error(msg);
}
},
handleCancle() {
this.$emit("close");
},
},
};
</script>
<style lang="scss" scoped>
.item_width_1 {
width: 500px;
}
.item_width_2 {
width: 400px;
}
.item_width_3 {
margin-left: 10px;
width: 200px;
}
.item_width_4 {
width: 200px;
}
.div_map {
margin-top: 10px;
}
.div_btn {
// display: flex;
// justify-content: flex-end;
}
.el-tabs {
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
}
.attachement-list {
}
</style>

479
src/views/modules/lingshan/djyl/article/drafts.vue

@ -0,0 +1,479 @@
<template>
<div>
<base-page
ref="basePage"
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
:addUrl="addUrl"
:editUrl="editUrl"
:delUrl="delUrl"
:editAuth="editAuth"
:delAuth="delAuth"
:infoUrl="infoUrl"
:exportUrl="exportUrl"
:importUrl="importUrl"
:mubanUrl="mubanUrl"
:editParams="editParams"
:editFixedParams="editFixedParams"
:editElseRules="editElseRules"
:editConfig="editConfig"
:editParamsDiv="5"
:infoAuth="() => false"
:formBtnFixed="true"
idName="draftId"
>
<template v-slot:editOperateSup="{ id, formType, info }">
<el-button
v-if="formType != 'watch' && info.richTextFlag == '1'"
type="warning"
size="small"
:disabled="draftBtnDisable"
@click="handleClickDraft(info)"
>存草稿</el-button
>
</template>
</base-page>
</div>
</template>
<script>
import basePage from "@/views/modules/cpts/base/index";
import { getItemByIdInCascader, collapse } from "@/utils/cascader";
import { requestPost } from "@/js/dai/request";
import dateFormat from "dai-js/tools/dateFormat.js";
import { parentCategoryId } from "./conf";
export default {
props: {},
data() {
return {
draftBtnDisable: false,
searchParams: [
{ field: "文章标题", keyName: "title", type: "input" },
{
field: "创建时间",
keyName: "createdTime",
type: "date-range",
supKeys: ["startDate", "endDate"],
supValues: ["", ""],
},
],
tableParams: [
{ field: "序号", keyName: "", type: "no" },
{ field: "文章标题", keyName: "title", type: "text" },
{ field: "创建时间", keyName: "createdTime", type: "text" },
],
tableUrl: "/gov/voice/draft/draftListV2",
mubanUrl: "",
importUrl: "",
exportUrl: "",
addUrl: "",
editUrl: "/gov/voice/article/addOrSaveDraft",
infoUrl: "/gov/voice/draft/detailV2",
delUrl: "/gov/voice/draft/deletedraft",
editAuth(item) {
return true;
},
delAuth(item) {
return true;
},
editParams: [
{
field: "所属栏目",
keyName: "tagIds",
type: "select",
value: parentCategoryId,
multiple: true,
optionUrl: `/gov/voice/categoryDict/subCategories?parentCategoryId=${parentCategoryId}`,
optionUrlParams: {},
optionList: [],
optionCook(list) {
return [
list.map((item) => ({
label: item.categoryName,
value: item.id,
})),
];
},
rules: [
{
required: true,
message: "所属栏目不能为空",
trigger: "blur",
},
],
},
{
field: "文章标题",
keyName: "title",
type: "input",
maxlength: 50,
editDisabled: true,
rules: [
{
required: true,
message: "文章标题不能为空",
trigger: "blur",
},
],
},
{
field: "封面图片",
keyName: "imgArr",
type: "upload",
limit: 1,
listType: "picture-card",
editDisabled: true,
rules: [],
value: () => [],
uploadUrl:
window.SITE_CONFIG["apiURL"] +
"/oss/file/article/upload",
supKeys: ["imgUrlArr", "imgUrl"],
supValues: [() => [], ""],
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
if (!isLt1M) {
that.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (srcType.indexOf("image") == -1) {
that.$message.error("仅限图片格式");
return false;
}
return true;
},
},
{
field: "发布范围",
keyName: "gridIdList",
type: "cascader",
value: [],
supKeys: ["publishRangeDesc"],
supValues: [""],
optionUrl: "/gov/org/customeragency/agencygridtree",
optionUrlParams: {
agencyId: this.$store.state.user.agencyId,
},
optionList: [],
optionProps: {
multiple: true,
value: "agencyId",
label: "agencyName",
children: "subAgencyList",
checkStrictly: false,
emitPath: false,
},
optionCook(obj) {
return [obj];
},
handleChangeFn(vals, item, that) {
console.log("handleChangeFn", vals);
const { optionList } = item;
const optionPlaneList = collapse(
optionList,
"subAgencyList"
);
if (vals.length > 0) {
let selectedList = vals.map(
(v) =>
getItemByIdInCascader(
optionPlaneList,
[v],
"agencyId",
"subAgencyList"
)[0]
);
console.log("handleChangeFn", selectedList);
let selectedFilterList = selectedList.filter(
(a) => a.level == "grid"
);
that.fmData[item["keyName"]] =
selectedFilterList.map((a) => a.agencyId);
that.fmData[item["supKeys"][0]] = selectedFilterList
.map((a) => a.agencyName)
.join("、");
} else {
}
},
rules: [
{
required: true,
message: "发布范围不能为空",
trigger: "blur",
},
],
},
{
field: "发布时间",
keyName: "publishDate",
type: "date",
value: dateFormat(new Date(), "yyyy-MM-dd"),
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
rules: [
{
required: true,
message: "发布时间不能为空",
trigger: "blur",
},
],
},
{
field: "发布单位",
keyName: "publisher",
type: "select",
optionUrl: "/gov/voice/article/publishagencylist",
optionList: [],
optionType: "group",
supKeys: ["publisherName", "publisherType"],
supValues: ["", ""],
optionCook(data) {
let ret = [];
const {
agencyDeptList,
agencyGridList,
agencyId,
agencyName,
} = data;
if (agencyId) {
ret.push({
label: "以组织名义",
optionList: [
{
label: agencyName,
value: agencyId,
type: "agency",
},
],
});
}
if (
Array.isArray(agencyDeptList) &&
agencyDeptList.length > 0
) {
ret.push({
label: "以部门名义",
optionList: [
...agencyDeptList.map((d) => ({
label: d.agencyDeptName,
value: d.departmentId,
type: "department",
})),
],
});
}
if (
Array.isArray(agencyGridList) &&
agencyGridList.length > 0
) {
ret.push({
label: "以网格名义",
optionList: [
...agencyGridList.map((d) => ({
label: d.agencyGridName,
value: d.gridId,
type: "grid",
})),
],
});
}
return ret;
},
handleChangeFn(vals, item, that) {
const { optionList } = item;
let opts = [];
optionList.forEach((g) => {
opts = [...opts, ...g.optionList];
});
let publisher = opts.find((p) => vals == p.value);
that.fmData[item["supKeys"][0]] = publisher.label;
that.fmData[item["supKeys"][1]] = publisher.type;
},
rules: [
{
required: true,
message: "发布单位不能为空",
trigger: "blur",
},
],
},
{
field: "文章标签",
keyName: "tagNameList",
type: "select",
multiple: true,
filterable: true,
allowCreate: true,
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagName,
}));
},
},
{
field: "内容",
keyName: "content",
type: "rich-text",
rules: [
{
required: true,
message: "内容不能为空",
trigger: "blur",
},
],
},
{
//
field: "附件",
keyName: "fileList2",
type: "upload",
limit: 3,
listType: "file",
editDisabled: true,
rules: [],
value: () => [],
uploadUrl:
window.SITE_CONFIG["apiURL"] +
"/oss/file/article/upload",
supKeys: ["fileListArr2", "fileListItem2"],
supValues: [() => [], ""],
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type.toLowerCase();
if (!isLt1M) {
that.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (srcType.indexOf("pdf") == -1) {
that.$message.error("仅限pdf格式");
return false;
}
return true;
},
},
{
field: "置顶",
keyName: "isTop",
type: "switch",
activeValue: "1",
inactiveValue: "0",
},
],
editFixedParams: {
type: "article",
},
editElseRules: {},
editConfig: {
confirmBtnName: "发布",
cookInfoFn(data) {
if (data.richTextFlag == "0") {
data.content = data.contentList
.map((item) => {
if (item.contentType == "text") {
return `<p>${item.content}</p>`;
} else if (item.contentType == "img") {
return `<img src="${item.content}" style="max-width:100%"></img>`;
} else if (item.contentType == "video") {
return `<video src="${item.content}" style="max-width:100%" controls></video>`;
} else if (item.contentType == "file") {
return `<a src="${item.content}" target="_blank">附件:${item.fileName}</a>`;
}
})
.join(" ");
} else {
data.content =
Array.isArray(data.contentList) &&
data.contentList.length > 0
? data.contentList[0].content
: "";
}
if (data.imgUrl) {
data.imgArr = [
{
name: "封面",
url: data.imgUrl,
},
];
data.imgUrlArr = [data.imgUrl];
}
data.fileList2 = (data.fileList || []).map((item) => ({
url: item.content,
name: item.fileName,
size: 0,
type: item.content.split(".").pop(),
format: item.content.split(".").pop(),
}));
return data;
},
beforeSubmit(formType, fmData, that) {
if (fmData.isTop == "1" && !fmData.imgUrl) {
that.$message.error("请上传封面图片");
return false;
}
fmData.fileList = (fmData.fileList2 || []).map((item) => ({
content: item.url,
fileName: item.name,
contentType: "file",
}));
return true;
},
},
};
},
components: { basePage },
computed: {},
watch: {},
async mounted() {},
methods: {
async handleClickDraft(fmData) {
let url = "/gov/voice/article/addOrSaveDraft";
let params = {
...fmData,
type: "draft",
};
params =
this.$refs.basePage.$refs.editForm.cookBeforeSubmit(params);
if (!params.title && !params.content) {
return this.$message.error("标题或内容不能为空");
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message({
type: "success",
message: "保存成功",
});
this.$refs.basePage.handleClose();
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped></style>

831
src/views/modules/lingshan/djyl/article/index.vue

@ -0,0 +1,831 @@
<template>
<div>
<base-page
ref="basePage"
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
:addUrl="addUrl"
:editUrl="editUrl"
:delUrl="delUrl"
:editAuth="editAuth"
:delAuth="delAuth"
:infoUrl="infoUrl"
:exportUrl="exportUrl"
:importUrl="importUrl"
:mubanUrl="mubanUrl"
:editParams="editParams"
:editFixedParams="editFixedParams"
:editElseRules="editElseRules"
:editConfig="editConfig"
:editParamsDiv="5"
:editBtnName="(item) => '修改'"
:formBtnFixed="true"
idName="articleId"
>
<template v-slot:editOperateSup="{ id, formType, info }">
<el-button
v-if="formType == 'add'"
type="warning"
size="small"
:disabled="draftBtnDisable"
@click="handleClickDraft(info)"
>存草稿</el-button
>
</template>
<template v-slot:listBtnSup="{ item }">
<el-button
v-if="
item.statusFlag == 'published' &&
item.agencyId == $store.state.user.agencyId
"
@click="handleOfflineShow(item)"
type="text"
size="small"
style="color: #666"
>下线</el-button
>
</template>
<template v-slot:listBtnbefore="{ item }">
<el-button
v-if="item.isTop == '1'"
v-show="item.statusFlag == 'published'"
@click="handleCancleTopArticle(item, 'cancel_top')"
type="text"
size="small"
style="color: #fe6252"
>取消置顶</el-button
>
<el-button
v-show="item.statusFlag == 'published'"
v-else
@click="handleTopArticle(item, 'top')"
type="text"
size="small"
style="color: #22c1c3"
>置顶</el-button
>
</template>
</base-page>
<el-dialog
:visible.sync="offlineShowed"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="下线"
width="850px"
top="5vh"
class="dialog-h"
@closed="offlineShowed = false"
>
<offline
ref="offlineForm"
@close="offlineShowed = false"
@afterOffline="handleOfflineSuccess"
></offline>
</el-dialog>
<el-dialog
:visible.sync="showAddImage"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="上传封面图片"
width="650px"
top="5vh"
class="dialog-h"
@closed="showAddImage = false"
>
<div class="dialog-h-content scroll-h">
<!-- <span>请先上 传封面图片</span> -->
<el-form
ref="ref_form"
:inline="true"
:model="formData"
class="div_form"
>
<div class="form_flex">
<div class="form_item">
<el-form-item
label=""
prop="selImgUrl"
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"
:before-upload="beforeAvatarUpload"
:on-remove="removePic"
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="1"
>
<span class="font-14">选择图片</span>
</el-upload>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="div_btn">
<el-button size="small" @click="showAddImage = false"
> </el-button
>
<el-button size="small" type="primary" @click="handleAddImage"
> </el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import basePage from "@/views/modules/cpts/base/index";
import { getItemByIdInCascader, collapse } from "@/utils/cascader";
import { requestPost } from "@/js/dai/request";
import dateFormat from "dai-js/tools/dateFormat.js";
import nextTick from "dai-js/tools/nextTick";
import offline from "./cpts/offline";
import { parentCategoryId } from "./conf";
export default {
props: {},
data() {
return {
offlineShowed: false,
draftBtnDisable: false,
searchParams: [
{
field: "所属栏目",
keyName: "category",
type: "select",
value: parentCategoryId,
multiple: false,
optionUrl: `/gov/voice/categoryDict/subCategories?parentCategoryId=${parentCategoryId}`,
optionUrlMethod: "get",
optionUrlParams: {},
optionList: [],
optionCook(list) {
return [
{
label: "全部",
value: parentCategoryId,
},
...list.map((item) => ({
label: item.categoryName,
value: item.id,
})),
];
},
},
{ field: "文章标题", keyName: "title", type: "input" },
{
field: "标签",
keyName: "tagIds",
type: "select",
multiple: true,
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagId,
}));
},
},
{
field: "状态",
keyName: "statusFlag",
value: "",
type: "select",
optionUrl: "",
optionUrlParams: {},
optionList: [
{
label: "已发布",
value: "published",
},
{
label: "已下线",
value: "offline",
},
],
},
{
field: "发布范围",
keyName: "publishRangeIds",
type: "cascader",
optionUrl: "/gov/org/customeragency/agencygridtree",
optionUrlParams: {
agencyId: this.$store.state.user.agencyId,
},
optionList: [],
optionProps: {
multiple: false,
value: "agencyId",
label: "agencyName",
children: "subAgencyList",
checkStrictly: true,
},
optionCook(obj) {
return [obj];
},
supKeys: ["publishRangeId", "publishRangeType"],
supValues: ["", ""],
handleChangeFn(vals, item) {
const { optionList } = item;
if (vals.length > 0) {
item["supValues"][0] = vals[vals.length - 1];
item["supValues"][1] = getItemByIdInCascader(
optionList,
vals,
"agencyId",
"subAgencyList"
)[vals.length - 1]["level"];
item["supValues"][1] =
item["supValues"][1] == "grid"
? "grid"
: "agency";
} else {
item["supValues"][0] = "";
item["supValues"][1] = "";
}
},
},
{
field: "发布时间",
keyName: "publishTime",
type: "date-range",
supKeys: ["startDate", "endDate"],
supValues: ["", ""],
},
],
tableParams: [
{ field: "序号", keyName: "", type: "no" },
{ field: "文章标题", keyName: "title", type: "text" },
{ field: "所属栏目", keyName: "categoryName", type: "text" },
{
field: "标签",
keyName: "tagNameList",
type: "array",
arrayDiv: "、",
},
{ field: "状态", keyName: "statusFlagName", type: "text" },
{ field: "发布单位", keyName: "publisherName", type: "text" },
{ field: "发布时间", keyName: "publishDate", type: "text" },
{
field: "发布范围",
keyName: "publishRangeDesc",
type: "text",
},
{ field: "置顶", keyName: "isTopName", type: "text" },
],
tableUrl: "/gov/voice/article/articleListV2",
mubanUrl: "",
importUrl: "",
exportUrl: "",
addUrl: "/gov/voice/article/addOrSaveDraft",
editUrl: "/gov/voice/article/updateArticle",
infoUrl: "/gov/voice/article/detailV2",
delUrl: "/gov/voice/article/delete批量",
editAuth(item) {
return item.statusFlagName == "已发布";
},
delAuth(item) {
return item.statusFlagName == "已下线";
},
editParams: [
{
field: "所属栏目",
keyName: "category",
type: "select",
value: "",
multiple: false,
optionUrl: `/gov/voice/categoryDict/subCategories?parentCategoryId=${parentCategoryId}`,
optionUrlMethod: "get",
optionUrlParams: {},
optionList: [],
optionCook(list) {
return list.map((item) => ({
label: item.categoryName,
value: item.id,
}));
},
rules: [
{
required: true,
message: "所属栏目不能为空",
trigger: "blur",
},
],
},
{
field: "文章标题",
keyName: "title",
type: "input",
maxlength: 50,
editDisabled: true,
rules: [
{
required: true,
message: "文章标题不能为空",
trigger: "blur",
},
],
},
{
field: "封面图片",
keyName: "imgArr",
type: "upload",
limit: 1,
listType: "picture-card",
editDisabled: true,
rules: [],
value: () => [],
uploadUrl:
window.SITE_CONFIG["apiURL"] +
"/oss/file/article/upload",
supKeys: ["imgUrlArr", "imgUrl"],
supValues: [() => [], ""],
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
if (!isLt1M) {
that.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (srcType.indexOf("image") == -1) {
that.$message.error("仅限图片格式");
return false;
}
return true;
},
},
{
field: "发布范围",
keyName: "gridIdList",
type: "cascader",
value: () => [],
supKeys: ["publishRangeDesc"],
supValues: [""],
optionUrl: "/gov/org/customeragency/agencygridtree",
optionUrlParams: {
agencyId: this.$store.state.user.agencyId,
},
optionList: [],
optionProps: {
multiple: true,
value: "agencyId",
label: "agencyName",
children: "subAgencyList",
checkStrictly: false,
emitPath: false,
},
optionCook(obj) {
return [obj];
},
handleChangeFn(vals, item, that) {
console.log("handleChangeFn", vals);
const { optionList } = item;
const optionPlaneList = collapse(
optionList,
"subAgencyList"
);
if (vals.length > 0) {
let selectedList = vals.map(
(v) =>
getItemByIdInCascader(
optionPlaneList,
[v],
"agencyId",
"subAgencyList"
)[0]
);
console.log("handleChangeFn", selectedList);
let selectedFilterList = selectedList.filter(
(a) => a.level == "grid"
);
that.fmData[item["keyName"]] =
selectedFilterList.map((a) => a.agencyId);
that.fmData[item["supKeys"][0]] = selectedFilterList
.map((a) => a.agencyName)
.join("、");
} else {
}
},
rules: [
{
required: true,
message: "发布范围不能为空",
trigger: "blur",
},
],
},
{
field: "发布时间",
keyName: "publishDate",
type: "date",
value: dateFormat(new Date(), "yyyy-MM-dd"),
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
rules: [
{
required: true,
message: "发布时间不能为空",
trigger: "blur",
},
],
},
{
field: "发布单位",
keyName: "publisher",
type: "select",
optionUrl: "/gov/voice/article/publishagencylist",
optionList: [],
optionType: "group",
supKeys: ["publisherName", "publisherType"],
supValues: ["", ""],
optionCook(data) {
let ret = [];
const {
agencyDeptList,
agencyGridList,
agencyId,
agencyName,
} = data;
if (agencyId) {
ret.push({
label: "以组织名义",
optionList: [
{
label: agencyName,
value: agencyId,
type: "agency",
},
],
});
}
if (
Array.isArray(agencyDeptList) &&
agencyDeptList.length > 0
) {
ret.push({
label: "以部门名义",
optionList: [
...agencyDeptList.map((d) => ({
label: d.agencyDeptName,
value: d.departmentId,
type: "department",
})),
],
});
}
if (
Array.isArray(agencyGridList) &&
agencyGridList.length > 0
) {
ret.push({
label: "以网格名义",
optionList: [
...agencyGridList.map((d) => ({
label: d.agencyGridName,
value: d.gridId,
type: "grid",
})),
],
});
}
return ret;
},
handleChangeFn(vals, item, that) {
const { optionList } = item;
let opts = [];
optionList.forEach((g) => {
opts = [...opts, ...g.optionList];
});
let publisher = opts.find((p) => vals == p.value);
that.fmData[item["supKeys"][0]] = publisher.label;
that.fmData[item["supKeys"][1]] = publisher.type;
},
rules: [
{
required: true,
message: "发布单位不能为空",
trigger: "blur",
},
],
},
{
field: "文章标签",
keyName: "tagNameList",
type: "select",
multiple: true,
filterable: true,
allowCreate: true,
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagName,
}));
},
},
{
field: "内容",
keyName: "content",
type: "rich-text",
rules: [
{
required: true,
message: "内容不能为空",
trigger: "blur",
},
],
},
{
//
field: "附件",
keyName: "fileList2",
type: "upload",
limit: 3,
listType: "file",
editDisabled: true,
rules: [],
value: () => [],
uploadUrl:
window.SITE_CONFIG["apiURL"] +
"/oss/file/article/upload",
supKeys: ["fileListArr2", "fileListItem2"],
supValues: [() => [], ""],
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type.toLowerCase();
if (!isLt1M) {
that.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (srcType.indexOf("pdf") == -1) {
that.$message.error("仅限pdf格式");
return false;
}
return true;
},
},
{
field: "置顶",
keyName: "isTop",
type: "switch",
activeValue: "1",
inactiveValue: "0",
},
],
editFixedParams: {
type: "article",
},
editElseRules: {},
editConfig: {
confirmBtnName: "发布",
cookInfoFn(data) {
if (data.richTextFlag == "0") {
data.content = data.contentList
.map((item) => {
if (item.contentType == "text") {
return `<p>${item.content}</p>`;
} else if (item.contentType == "img") {
return `<img src="${item.content}" style="max-width:100%"></img>`;
} else if (item.contentType == "video") {
return `<video src="${item.content}" style="max-width:100%" controls></video>`;
} else if (item.contentType == "file") {
return `<a src="${item.content}" target="_blank">附件:${item.fileName}</a>`;
}
})
.join(" ");
} else {
data.content = data.contentList[0].content;
}
if (data.imgUrl) {
data.imgArr = [
{
name: "封面",
url: data.imgUrl,
},
];
data.imgUrlArr = [data.imgUrl];
}
data.fileList2 = (data.fileList || []).map((item) => ({
url: item.content,
name: item.fileName,
size: 0,
type: item.content.split(".").pop(),
format: item.content.split(".").pop(),
}));
return data;
},
beforeSubmit(formType, fmData, that) {
if (fmData.isTop == "1" && !fmData.imgUrl) {
that.$message.error("请上传封面图片");
return false;
}
fmData.fileList = (fmData.fileList2 || []).map((item) => ({
content: item.url,
fileName: item.name,
contentType: "file",
}));
return true;
},
},
formData: {},
showAddImage: false,
uploadUlr:
window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
replayImgList: [],
hideUploadBtn: false,
selType: "top",
selArticleId: "",
selImgUrl: "",
};
},
components: { basePage, offline },
computed: {},
watch: {},
async mounted() {},
methods: {
async handleOfflineShow(item) {
console.log(item);
this.offlineShowed = true;
await nextTick(100);
this.$refs.offlineForm.initForm(item);
},
async handleAddImage() {
console.log("formData", this.formData);
this.topArticle();
},
async handleCancleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
await this.topArticle();
},
async handleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
let hasImage = await this.isHasImage();
if (hasImage === "refrsh") {
this.$message.error("请求失败,请重新尝试");
} else if (hasImage === "no") {
// this.$message.info("");
this.showAddImage = true;
} else {
await this.topArticle();
}
},
async isHasImage() {
const url = "/gov/voice/article/detailV2";
const { tableData } = this;
const { data, code, msg } = await requestPost(url, {
articleId: this.selArticleId,
});
if (code === 0) {
// this.formData = data
if (data.imgUrl) {
return "has";
} else {
return "no";
}
} else {
return "refrsh";
}
},
async topArticle() {
const url = "/gov/voice/article/topArticle";
const { tableData } = this;
let params = {
articleId: this.selArticleId,
type: this.selType,
};
if (this.selImgUrl) {
params.imgUrl = this.selImgUrl;
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("操作成功!");
this.showAddImage = false;
this.$refs.basePage.refresh();
} else {
this.$message.success("操作失败!");
}
},
removePic(file, fileList) {
this.selImgUrl = "";
this.replayImgList = [];
this.hideUploadBtn = fileList.length >= 1;
},
// 3
handleEditChange(file, fileList) {
this.hideUploadBtn = fileList.length >= 1;
},
exceedPic() {
this.$message.warning("只能上传1张封面图");
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 10MB!");
}
return isLt2M;
},
handleSuccess(response, file, fileList) {
this.replayImgList.push(file);
this.selImgUrl = response.data.url;
},
handleOfflineSuccess() {
this.$refs.basePage.refresh();
this.offlineShowed = false;
},
async handleClickDraft(fmData) {
let url = this.addUrl;
let params = {
...fmData,
type: "draft",
};
params =
this.$refs.basePage.$refs.editForm.cookBeforeSubmit(params);
if (!params.title && !params.content) {
return this.$message.error("标题或内容不能为空");
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message({
type: "success",
message: "保存成功",
});
this.$refs.basePage.handleClose();
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/form-main.scss";
.avatar-uploader {
margin: 0 0 0 20px;
}
</style>
<style lang="scss">
.hide {
.el-upload--picture-card {
display: none !important;
}
}
</style>

1317
src/views/modules/lingshan/shzl/mapConfig.vue

File diff suppressed because it is too large

1661
src/views/modules/lingshan/shzl/tsrq/cpts/edit.vue

File diff suppressed because it is too large

390
src/views/modules/lingshan/shzl/tsrq/cpts/pop-import.vue

@ -0,0 +1,390 @@
<template>
<!-- 修改弹出框 -->
<el-dialog
:visible="true"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="批量导入"
width="850px"
top="5vh"
@close="handleClose"
>
<div class="m-imp">
<el-steps
:space="250"
align-center
:active="step"
finish-status="success"
>
<el-step title="选择文件"></el-step>
<el-step title="开始导入"></el-step>
<el-step title="导入完成"></el-step>
</el-steps>
<div class="cnt" v-show="step === 0">
<div class="item">
<div class="field"><i>*</i> 选择要导入的人员类型</div>
<div class="input">
<el-select
v-model="fmData.specialType"
placeholder="请选择"
size="small"
clearable
class="item_width_2"
>
<el-option
v-for="item in specialTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
</div>
<div class="item">
<div class="field"><i>*</i> 选择要导入的人员类型</div>
<div class="input">
<el-upload
:headers="$getElUploadHeaders()"
ref="upload"
class="upload-btn"
action="uploadUlr"
:limit="1"
:accept="'.xls,.xlsx'"
:with-credentials="true"
:show-file-list="true"
:on-progress="handleProgress"
:on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
drag
align-center
:auto-upload="true"
:file="fmData.file"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
只能上传excel文件且不超过10M
</div>
</el-upload>
</div>
</div>
<div class="hint">
<h4>批量导入说明</h4>
<p>
1<a @click="handleExportModule()">点击下载</a
>特殊人群信息模板
</p>
<p>2按模板采集特殊人群信息</p>
<p>3上传文件导入</p>
</div>
<div class="operate">
<el-button size="small" type="primary" @click="toNext(1)">{{
importBtnTitle
}}</el-button>
</div>
</div>
<div class="cnt" v-show="step === 1">
<div class="process">
<el-progress
:format="(per) => '导入进度:' + per + '%'"
:show-text="true"
:text-inside="true"
:stroke-width="24"
:percentage="importPer"
status="warning"
></el-progress>
</div>
<div class="operate">
<el-button size="small" @click="handleClose">
取消
</el-button>
</div>
</div>
<div class="cnt" v-show="step === 2">
<div class="hint">
<p>
导入完成<b>{{ importResult.successItemsQty }}</b
>
</p>
<p>
导入失败<b class="z-fail">{{
importResult.failItemsQty
}}</b
>
<span
>
<a
target="_blank"
:href="importResult.resultDescFile"
>点击下载</a
>未成功导入人员信息</span
>
</p>
</div>
<div class="operate">
<el-button size="small" @click="handleClose">
关闭
</el-button>
</div>
</div>
</div>
</el-dialog>
</template>
<script>
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import dict from "@/views/modules/lingshan/shzl/tsrq/dict";
export default {
components: {},
data() {
return {
//
step: 0,
importBtnTitle: "下一步",
importLoading: false,
//
taskId: "",
importPer: 20,
importResult: {
taskId: "1648930494377668610",
originFileName: "社区矫正人员信息采集表.xlsx",
bizType: "special_crowd",
processStatus: "finished_fail",
startTime: "2023-04-20 14:04:00",
resultDescFile:
"https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/20230420/bda8c794796b4554aefc4e648fb17fd8.xlsx", //
successItemsQty: 0, //
failItemsQty: 1, //
},
specialTypeOptions: dict.specialType,
fmData: {
specialType: "",
file: null,
},
};
},
computed: {},
watch: {},
mounted() {},
methods: {
async handleExportModule() {
const {
fmData: { specialType },
} = this;
if (!specialType) {
return this.$message.error("请先选择导入人员类型");
}
let url = "/epmetuser/lingShan/specialCrowd/downloadTemplate";
let params = {
specialType,
};
await this.$http({
method: "GET",
url,
responseType: "blob",
params,
})
.then((res) => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"]
.split(";")[1]
.split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
} else this.$message.error("下载失败");
})
.catch((err) => {
console.log("err", err);
return this.$message.error("网络错误");
});
},
//
handleExcelSuccess(res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("resss---ppp", res);
} else {
this.$message.error(res.msg);
}
},
handleProgress(event, file, fileList) {
console.log("percentage", file.percentage);
},
beforeExcelUpload(file) {
console.log("file", file);
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
file.type ===
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
const fileType = isType || isTypeComputer;
const isLt1M = file.size / 1024 / 1024 < 10;
if (!fileType) {
this.$message.error("上传文件只能是xls/xlsx格式!");
}
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return fileType && isLt1M;
},
toNext(step) {
if (step == 1) {
this.$refs.upload.submit();
}
},
async uploadHttpRequest(file) {
const {
fmData: { specialType },
} = this;
if (!specialType) {
this.$refs.upload.clearFiles();
return this.$message.error("请先选择导入人员类型");
}
if (!file) {
return this.$message.error("请先选择导入文件");
}
this.importLoading = true;
this.importBtnTitle = "上传中…";
const fmData = new FormData(); //FormDataappend('key', value)
fmData.append("file", file.file); //
await this.$http
.post(
`/epmetuser/lingShan/specialCrowd/import?crowdCategory=${specialType}`,
fmData
)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
this.$message.success("上传成功");
this.step = 1;
//
this.taskId = res.data.data;
this.queryProcess();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});
this.importLoading = false;
this.importBtnTitle = "下一步";
this.$refs.upload.clearFiles();
},
async queryProcess() {
const { taskId } = this;
const url = `/commonservice/import-task/getById?taskId=${taskId}`;
const { data, code, msg } = await requestPost(url, {});
if (code === 0) {
if (
data.processStatus == "finished_fail" ||
data.processStatus == "finished_success"
) {
this.importResult = data;
this.step = 2;
this.importPer = 0;
} else {
let per = this.importPer + parseInt(Math.random() * 20);
this.importPer = Math.min(99, per);
await nextTick(5000);
this.queryProcess();
}
} else {
this.$message.error(msg);
await nextTick(5000);
this.queryProcess();
// this.$message.success("");
}
},
handleClose() {
console.log(">>>>>>>>>>> handleClose");
this.$emit("close");
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/c/function.scss";
/deep/ .m-imp {
padding: 0 50px;
.cnt {
margin-top: 20px;
.item {
display: flex;
margin-top: 15px;
.field {
i {
color: #ff3333;
}
line-height: 32px;
}
}
.hint {
p {
a {
cursor: pointer;
}
b {
color: #05f70d;
&.z-fail {
color: #ff3333;
}
}
}
}
.process {
margin: 50px;
}
.operate {
text-align: right;
}
}
}
</style>

24
src/views/modules/lingshan/shzl/tsrq/dict.js

@ -0,0 +1,24 @@
export default {
specialType: [
{
value: "anzhibangjiao",
label: "安置帮教",
},
{
value: "jiedurenyuan",
label: "戒毒人员",
},
{
value: "jingzhanghuanzhe",
label: "精障患者",
},
{
value: "shequjiaozheng",
label: "社区矫正",
},
{
value: "xinfangrenyuan",
label: "信访人员",
},
],
};

670
src/views/modules/lingshan/shzl/tsrq/index.vue

@ -0,0 +1,670 @@
<template>
<div class="resi-container">
<el-card ref="searchCard" class="search-card">
<el-form
ref="searchForm"
:inline="true"
:model="fmData"
class="demo-form-inline"
>
<el-form-item label="所属组织" prop="gridId">
<el-cascader
class="customer_cascader"
ref="myCascader"
v-model="agencyIdArray"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="特殊人群类型" prop="specialType">
<el-select
v-model="fmData.specialType"
placeholder="请选择"
size="small"
clearable
class="item_width_2"
>
<el-option
v-for="item in specialTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="人员姓名" prop="name">
<el-input
v-model="fmData.name"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
</el-input>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input
v-model="fmData.mobile"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
</el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idCard">
<el-input
v-model="fmData.idCard"
class="resi-cell-input"
size="small"
clearable
placeholder="请输入"
>
</el-input>
</el-form-item>
<el-form-item>
<el-button
class="diy-button--search"
size="small"
@click="handleSearch"
>查询</el-button
>
<el-button
class="diy-button--reset"
size="small"
@click="resetForm('searchForm')"
>重置</el-button
>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button
class="diy-button--add"
size="small"
@click="handleAdd"
>新增</el-button
>
<el-button
class="diy-button--export"
size="small"
@click="displayed.popImport = true"
>批量导入</el-button
>
<el-button
@click="handleChu"
class="diy-button--reset"
size="small"
>导出</el-button
>
</div>
<el-table
:data="tableData"
border
style="width: 100%"
class="resi-table"
:height="maxTableHeight"
>
<el-table-column
label="序号"
type="index"
align="center"
width="50"
/>
<el-table-column
prop="orgNamePath"
label="所属组织"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="specialTypeDisplay"
align="center"
label="特殊人群类型"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="name"
align="center"
label="人员姓名"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="mobile"
label="手机号"
align="center"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="idCard"
align="center"
label="身份证号"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="address"
align="center"
label="家庭地址"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="createdTime"
align="center"
label="创建时间"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="updatedTime"
align="center"
label="更新时间"
:show-overflow-tooltip="true"
/>
<el-table-column
fixed="right"
label="操作"
align="center"
width="220"
>
<template slot-scope="scope">
<el-button
@click="handleWatch(scope.$index)"
type="text"
size="small"
>查看</el-button
>
<el-button
@click="handleEdit(scope.$index)"
v-if="
true ||
scope.row.agencyId == $store.state.user.agencyId
"
type="text"
size="small"
class="div-table-button--edit"
>修改</el-button
>
<el-popconfirm
title="删除之后无法回复,确认删除?"
v-if="
true ||
scope.row.agencyId == $store.state.user.agencyId
"
@onConfirm="handleDel(scope.row, scope.$index)"
@confirm="handleDel(scope.row, scope.$index)"
>
<el-button
slot="reference"
type="text"
size="small"
class="div-table-button--delete"
style="margin-left: 10px"
>删除</el-button
>
</el-popconfirm>
</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="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</div>
</el-card>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="handleClose"
>
<edit-form
ref="eleEditForm"
:displayed="formShow"
@dialogCancle="handleClose"
@dialogOk="handleEditSuccess"
></edit-form>
</el-dialog>
<pop-import
v-if="displayed.popImport"
@close="displayed.popImport = false"
/>
</div>
</template>
<script>
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import dict from "@/views/modules/lingshan/shzl/tsrq/dict";
import editForm from "./cpts/edit";
import popImport from "./cpts/pop-import";
import axios from "axios";
export default {
components: { editForm, popImport },
data() {
return {
openSearch: false,
formShow: false,
formTitle: "特殊人群信息",
pageNo: 1,
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
tableData: [],
agencyIdArray: [],
orgOptions: [],
orgOptionProps: {
multiple: false,
value: "agencyId",
label: "agencyName",
children: "subAgencyList",
checkStrictly: true,
},
specialTypeOptions: dict.specialType,
fmData: {
orgId: "",
orgType: "",
specialType: "",
name: "",
mobile: "",
idCard: "",
},
importBtnTitle: "导入",
importLoading: false,
//
displayed: {
popImport: false,
},
};
},
computed: {
maxTableHeight() {
return this.$store.state.inIframe
? this.clientHeight - 360 + this.iframeHeigh
: this.clientHeight - 360;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
watch: {
"fmData.createTime": function (val) {
if (Array.isArray(val) && val.length == 2) {
this.fmData.startTime = val[0];
this.fmData.endTime = val[1];
} else {
this.fmData.startTime = "";
this.fmData.endTime = "";
}
},
popImport(val) {
if (!val) {
this.getTableData();
}
},
},
mounted() {
this.getOrgTreeList();
this.getTableData();
},
methods: {
getOrgTreeList() {
const { user } = this.$store.state;
this.$http
.post("/gov/org/customeragency/agencygridtree", {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
} else {
console.log("获取组织树成功", res.data);
this.orgOptions = [];
this.orgOptions.push(res.data);
}
})
.catch(() => {
return this.$message.error("网络错误");
});
},
handleChangeAgency() {
let nodes = this.$refs["myCascader"].getCheckedNodes();
if (nodes && nodes.length > 0) {
let obj = nodes()[0].data;
this.fmData.orgType = obj.level === "grid" ? "grid" : "agency";
this.fmData.orgId =
this.agencyIdArray.length > 0
? this.agencyIdArray[this.agencyIdArray.length - 1]
: "";
} else {
this.fmData.orgType = "";
this.fmData.orgId = "";
}
},
async handleExportModule() {
let url =
"/heart/iccommunityselforganization/import-template-download";
let params = {};
await this.$http({
method: "POST",
url,
responseType: "blob",
data: params,
})
.then((res) => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"]
.split(";")[1]
.split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
} else this.$message.error("下载失败");
})
.catch((err) => {
console.log("err", err);
return this.$message.error("网络错误");
});
},
//
handleExcelSuccess(res, file) {
if (res.code === 0 && res.msg === "success") {
console.log("resss---ppp", res);
} else {
this.$message.error(res.msg);
}
},
handleProgress(event, file, fileList) {
console.log("percentage", file.percentage);
},
beforeExcelUpload(file) {
console.log("file", file);
const isType = file.type === "application/vnd.ms-excel";
const isTypeComputer =
file.type ===
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
const fileType = isType || isTypeComputer;
const isLt1M = file.size / 1024 / 1024 < 10;
if (!fileType) {
this.$message.error("上传文件只能是xls/xlsx格式!");
}
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return fileType && isLt1M;
},
async uploadHttpRequest(file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
this.$message({
showClose: true,
message: "导入中,请到系统管理-导入记录中查看进度",
duration: 0,
});
const fmData = new FormData(); //FormDataappend('key', value)
fmData.append("file", file.file); //
await this.$http
.post(
"/heart/iccommunityselforganization/importcommunityselforganization",
fmData
)
.then((res) => {
console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") {
// this.$message.success('')
this.getTableData();
} else this.$message.error(res.data.msg);
})
.catch((err) => {
console.log("失败", err);
file.onError(); //
// this.$message.error('')
});
// axios({
// url:
// window.SITE_CONFIG["apiURL"] +
// "/heart/iccommunityselforganization/importcommunityselforganization",
// method: "post",
// data: fmData,
// // responseType: "blob",
// })
// .then((res) => {
// this.importLoading = false;
// this.importBtnTitle = "";
// console.log("resresresresresresres", res);
// this.getTableData();
// if (res.data.code == 0) {
// return this.$message.success(res.data.data || "");
// } else {
// return this.$message.error(res.data.msg);
// }
// })
// .catch((err) => {
// console.log("", err);
// });
this.importLoading = false;
this.importBtnTitle = "导入";
this.$refs.upload.clearFiles();
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getTableData();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.pageNo = val;
this.getTableData();
},
handleClose() {
this.formShow = false;
},
handleSearch(val) {
console.log(this.fmData);
this.pageNo = 1;
this.getTableData();
},
resetForm(formName) {
this.$refs[formName].resetFields();
this.handleSearch();
},
async handleAdd() {
this.formShow = true;
this.formTitle = "新增";
await nextTick();
console.log(this.$refs);
this.$refs.eleEditForm.initForm("add");
},
async handleChu() {
const url =
"/heart/iccommunityselforganization/exportcommunityselforganization";
const { pageSize, pageNo, fmData } = this;
axios({
url: window.SITE_CONFIG["apiURL"] + url,
method: "post",
data: {
pageSize,
pageNo,
...fmData,
},
responseType: "blob",
})
.then((res) => {
let fileName = window.decodeURI(
res.headers["content-disposition"]
.split(";")[1]
.split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], {
type: "application/vnd.ms-excel",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
})
.catch((err) => {
console.log("获取导出情失败", err);
return this.$message.error("网络错误");
});
},
async handleWatch(rowIndex) {
this.formShow = true;
this.formTitle = "查看";
await nextTick();
this.$refs.eleEditForm.initForm("detail", this.tableData[rowIndex]);
},
async handleEdit(rowIndex) {
this.formShow = true;
this.formTitle = "编辑";
await nextTick();
this.$refs.eleEditForm.initForm("edit", this.tableData[rowIndex]);
},
handleEditSuccess() {
this.handleClose();
this.getTableData();
},
async handleDel(rowData, rowIndex) {
console.log(rowData, rowIndex);
const url = "/epmetuser/lingShan/specialCrowd/deleteByResi";
const { tableData } = this;
const { data, code, msg } = await requestPost(url, {
resiId: tableData[rowIndex].resiId,
});
if (code === 0) {
this.$message.success("删除成功!");
this.getTableData();
} else {
this.$message.error(msg);
// this.$message.success("");
}
},
async getTableData() {
const url = "/epmetuser/lingShan/specialCrowd/listSpecialCrowd";
const { pageSize, pageNo, fmData } = this;
const { data, code, msg } = await requestGet(url, {
pageSize,
pageNo,
...fmData,
});
if (code === 0) {
console.log("列表请求成功!!!!!!!!!!!!!!");
this.total = data.total || 0;
this.tableData = data.list
? data.list.map((item) => {
return item;
})
: [];
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
.resi-container .resi-card-table {
::v-deep .el-table th {
color: #fff;
background-color: rgba(33, 149, 254, 1);
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;
}
}
.resi-card-table {
margin-top: 20px;
}
.resi-row-btn {
margin-bottom: 13px;
.upload-btn {
display: inline-block;
margin: 0 10px;
}
}
.resi-btns {
margin-top: 20px;
text-align: center;
}
.resi-container .resi-card {
position: relative;
overflow: visible;
}
</style>

1053
src/views/modules/lingshan/xtgl/articleCategory.vue

File diff suppressed because it is too large

2
src/views/modules/visual/cpts/map/index.vue

@ -348,7 +348,7 @@ export default {
scene.on("loaded", async () => {
if (mapType == "td") {
this.iniMapBase(scene);
} else if (mapType == "tdzw") {
} else if (mapType == "tdzw") {
this.iniMapBase2(scene);
}

Loading…
Cancel
Save