57 files modified
35 files added
| | |
| | | "name": "saber-admin", |
| | | "version": "3.2.0", |
| | | "dependencies": { |
| | | "@vue-office/docx": "^1.6.2", |
| | | "@vue/composition-api": "^1.7.2", |
| | | "avue-plugin-map": "^1.0.1", |
| | | "avue-plugin-ueditor": "^0.1.4", |
| | | "axios": "^0.18.0", |
| | |
| | | "nprogress": "^0.2.0", |
| | | "portfinder": "^1.0.23", |
| | | "script-loader": "^0.7.2", |
| | | "serve": "^14.2.3", |
| | | "vue": "^2.6.10", |
| | | "vue-axios": "^2.1.2", |
| | | "vue-cron": "^1.0.9", |
| | | "vue-demi": "^0.14.10", |
| | | "vue-i18n": "^8.7.0", |
| | | "vue-router": "^3.0.1", |
| | | "vuex": "^3.1.1", |
| | |
| | | "version": "7.23.0", |
| | | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz", |
| | | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", |
| | | "dev": true, |
| | | "bin": { |
| | | "parser": "bin/babel-parser.js" |
| | | }, |
| | |
| | | "integrity": "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@vue-office/docx": { |
| | | "version": "1.6.2", |
| | | "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz", |
| | | "integrity": "sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ==", |
| | | "hasInstallScript": true, |
| | | "peerDependencies": { |
| | | "@vue/composition-api": "^1.7.1", |
| | | "vue": "^2.0.0 || >=3.0.0", |
| | | "vue-demi": "^0.14.6" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "@vue/composition-api": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/@vue/babel-helper-vue-jsx-merge-props": { |
| | | "version": "1.4.0", |
| | | "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", |
| | |
| | | "vue-template-compiler": "^2.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@vue/cli-service/node_modules/json5": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", |
| | | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "minimist": "^1.2.0" |
| | | }, |
| | | "bin": { |
| | | "json5": "lib/cli.js" |
| | | } |
| | | }, |
| | | "node_modules/@vue/cli-service/node_modules/loader-utils": { |
| | | "version": "1.4.2", |
| | | "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", |
| | | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^1.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=4.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@vue/cli-service/node_modules/vue-loader": { |
| | | "version": "15.11.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", |
| | | "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "@vue/component-compiler-utils": "^3.1.0", |
| | | "hash-sum": "^1.0.2", |
| | | "loader-utils": "^1.1.0", |
| | | "vue-hot-reload-api": "^2.3.0", |
| | | "vue-style-loader": "^4.1.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "css-loader": "*", |
| | | "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "cache-loader": { |
| | | "optional": true |
| | | }, |
| | | "prettier": { |
| | | "optional": true |
| | | }, |
| | | "vue-template-compiler": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/@vue/cli-shared-utils": { |
| | | "version": "3.12.1", |
| | | "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz", |
| | |
| | | "request-promise-native": "^1.0.7", |
| | | "semver": "^6.0.0", |
| | | "string.prototype.padstart": "^3.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@vue/compiler-sfc": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz", |
| | | "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==", |
| | | "dependencies": { |
| | | "@babel/parser": "^7.18.4", |
| | | "postcss": "^8.4.14", |
| | | "source-map": "^0.6.1" |
| | | } |
| | | }, |
| | | "node_modules/@vue/compiler-sfc/node_modules/picocolors": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", |
| | | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" |
| | | }, |
| | | "node_modules/@vue/compiler-sfc/node_modules/postcss": { |
| | | "version": "8.4.31", |
| | | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", |
| | | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", |
| | | "dependencies": { |
| | | "nanoid": "^3.3.6", |
| | | "picocolors": "^1.0.0", |
| | | "source-map-js": "^1.0.2" |
| | | }, |
| | | "engines": { |
| | | "node": "^10 || ^12 || >=14" |
| | | } |
| | | }, |
| | | "node_modules/@vue/component-compiler-utils": { |
| | |
| | | "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", |
| | | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@vue/composition-api": { |
| | | "version": "1.7.2", |
| | | "resolved": "https://registry.npmmirror.com/@vue/composition-api/-/composition-api-1.7.2.tgz", |
| | | "integrity": "sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==", |
| | | "peerDependencies": { |
| | | "vue": ">= 2.5 < 2.7" |
| | | } |
| | | }, |
| | | "node_modules/@vue/preload-webpack-plugin": { |
| | | "version": "1.1.2", |
| | |
| | | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/@zeit/schemas": { |
| | | "version": "2.36.0", |
| | | "resolved": "https://registry.npmmirror.com/@zeit/schemas/-/schemas-2.36.0.tgz", |
| | | "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==" |
| | | }, |
| | | "node_modules/abbrev": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", |
| | |
| | | "version": "1.3.8", |
| | | "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", |
| | | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "mime-types": "~2.1.34", |
| | | "negotiator": "0.6.3" |
| | |
| | | "node": ">=0.4.2" |
| | | } |
| | | }, |
| | | "node_modules/ansi-align": { |
| | | "version": "3.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz", |
| | | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", |
| | | "dependencies": { |
| | | "string-width": "^4.1.0" |
| | | } |
| | | }, |
| | | "node_modules/ansi-colors": { |
| | | "version": "3.2.4", |
| | | "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", |
| | |
| | | "node_modules/arch": { |
| | | "version": "2.2.0", |
| | | "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", |
| | | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", |
| | | "dev": true |
| | | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" |
| | | }, |
| | | "node_modules/are-we-there-yet": { |
| | | "version": "1.1.7", |
| | |
| | | "delegates": "^1.0.0", |
| | | "readable-stream": "^2.0.6" |
| | | } |
| | | }, |
| | | "node_modules/arg": { |
| | | "version": "5.0.2", |
| | | "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", |
| | | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" |
| | | }, |
| | | "node_modules/argparse": { |
| | | "version": "1.0.10", |
| | |
| | | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/boxen": { |
| | | "version": "7.0.0", |
| | | "resolved": "https://registry.npmmirror.com/boxen/-/boxen-7.0.0.tgz", |
| | | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", |
| | | "dependencies": { |
| | | "ansi-align": "^3.0.1", |
| | | "camelcase": "^7.0.0", |
| | | "chalk": "^5.0.1", |
| | | "cli-boxes": "^3.0.0", |
| | | "string-width": "^5.1.2", |
| | | "type-fest": "^2.13.0", |
| | | "widest-line": "^4.0.1", |
| | | "wrap-ansi": "^8.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.16" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/ansi-regex": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", |
| | | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-regex?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/ansi-styles": { |
| | | "version": "6.2.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", |
| | | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-styles?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/camelcase": { |
| | | "version": "7.0.1", |
| | | "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-7.0.1.tgz", |
| | | "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", |
| | | "engines": { |
| | | "node": ">=14.16" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/chalk": { |
| | | "version": "5.3.0", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz", |
| | | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", |
| | | "engines": { |
| | | "node": "^12.17.0 || ^14.13 || >=16.0.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/emoji-regex": { |
| | | "version": "9.2.2", |
| | | "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", |
| | | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" |
| | | }, |
| | | "node_modules/boxen/node_modules/string-width": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", |
| | | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", |
| | | "dependencies": { |
| | | "eastasianwidth": "^0.2.0", |
| | | "emoji-regex": "^9.2.2", |
| | | "strip-ansi": "^7.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/strip-ansi": { |
| | | "version": "7.1.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", |
| | | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", |
| | | "dependencies": { |
| | | "ansi-regex": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/strip-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/type-fest": { |
| | | "version": "2.19.0", |
| | | "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz", |
| | | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", |
| | | "engines": { |
| | | "node": ">=12.20" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/boxen/node_modules/wrap-ansi": { |
| | | "version": "8.1.0", |
| | | "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", |
| | | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", |
| | | "dependencies": { |
| | | "ansi-styles": "^6.1.0", |
| | | "string-width": "^5.0.1", |
| | | "strip-ansi": "^7.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/brace-expansion": { |
| | | "version": "1.1.11", |
| | | "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", |
| | |
| | | "node": ">=4" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template": { |
| | | "version": "0.4.0", |
| | | "resolved": "https://registry.npmmirror.com/chalk-template/-/chalk-template-0.4.0.tgz", |
| | | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", |
| | | "dependencies": { |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk-template?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template/node_modules/ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
| | | "dependencies": { |
| | | "color-convert": "^2.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-styles?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template/node_modules/chalk": { |
| | | "version": "4.1.2", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", |
| | | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", |
| | | "dependencies": { |
| | | "ansi-styles": "^4.1.0", |
| | | "supports-color": "^7.1.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template/node_modules/color-convert": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", |
| | | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
| | | "dependencies": { |
| | | "color-name": "~1.1.4" |
| | | }, |
| | | "engines": { |
| | | "node": ">=7.0.0" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template/node_modules/color-name": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", |
| | | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" |
| | | }, |
| | | "node_modules/chalk-template/node_modules/has-flag": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", |
| | | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/chalk-template/node_modules/supports-color": { |
| | | "version": "7.2.0", |
| | | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", |
| | | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
| | | "dependencies": { |
| | | "has-flag": "^4.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/chardet": { |
| | | "version": "0.4.2", |
| | | "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz", |
| | |
| | | }, |
| | | "engines": { |
| | | "node": ">= 4.0" |
| | | } |
| | | }, |
| | | "node_modules/cli-boxes": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-3.0.0.tgz", |
| | | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/cli-cursor": { |
| | |
| | | "version": "2.0.18", |
| | | "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", |
| | | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "mime-db": ">= 1.43.0 < 2" |
| | | }, |
| | |
| | | "version": "1.7.4", |
| | | "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", |
| | | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "accepts": "~1.3.5", |
| | | "bytes": "3.0.0", |
| | |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", |
| | | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">= 0.8" |
| | | } |
| | |
| | | "version": "2.6.9", |
| | | "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", |
| | | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "ms": "2.0.0" |
| | | } |
| | |
| | | "node_modules/compression/node_modules/ms": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", |
| | | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", |
| | | "dev": true |
| | | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" |
| | | }, |
| | | "node_modules/concat-map": { |
| | | "version": "0.0.1", |
| | |
| | | "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/csstype": { |
| | | "version": "3.1.2", |
| | | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", |
| | | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" |
| | | }, |
| | | "node_modules/current-script-polyfill": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", |
| | |
| | | "object-is": "^1.0.1", |
| | | "object-keys": "^1.1.1", |
| | | "regexp.prototype.flags": "^1.2.0" |
| | | } |
| | | }, |
| | | "node_modules/deep-extend": { |
| | | "version": "0.6.0", |
| | | "resolved": "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz", |
| | | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", |
| | | "engines": { |
| | | "node": ">=4.0.0" |
| | | } |
| | | }, |
| | | "node_modules/deep-is": { |
| | |
| | | "readable-stream": "^2.0.0", |
| | | "stream-shift": "^1.0.0" |
| | | } |
| | | }, |
| | | "node_modules/eastasianwidth": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", |
| | | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" |
| | | }, |
| | | "node_modules/easy-stack": { |
| | | "version": "1.0.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", |
| | | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/fast-url-parser": { |
| | | "version": "1.1.3", |
| | | "resolved": "https://registry.npmmirror.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz", |
| | | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", |
| | | "dependencies": { |
| | | "punycode": "^1.3.2" |
| | | } |
| | | }, |
| | | "node_modules/fast-url-parser/node_modules/punycode": { |
| | | "version": "1.4.1", |
| | | "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", |
| | | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" |
| | | }, |
| | | "node_modules/fastparse": { |
| | | "version": "1.1.2", |
| | |
| | | "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", |
| | | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" |
| | | }, |
| | | "node_modules/ini": { |
| | | "version": "1.3.8", |
| | | "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", |
| | | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" |
| | | }, |
| | | "node_modules/inquirer": { |
| | | "version": "3.3.0", |
| | | "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.3.0.tgz", |
| | |
| | | "version": "2.2.1", |
| | | "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", |
| | | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", |
| | | "dev": true, |
| | | "bin": { |
| | | "is-docker": "cli.js" |
| | | }, |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/is-port-reachable": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/is-port-reachable/-/is-port-reachable-4.0.0.tgz", |
| | | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", |
| | | "engines": { |
| | | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/is-regex": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", |
| | |
| | | "version": "2.2.0", |
| | | "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", |
| | | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "is-docker": "^2.0.0" |
| | | }, |
| | |
| | | "node_modules/merge-stream": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", |
| | | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", |
| | | "dev": true |
| | | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" |
| | | }, |
| | | "node_modules/merge2": { |
| | | "version": "1.4.1", |
| | |
| | | "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/nanoid": { |
| | | "version": "3.3.6", |
| | | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", |
| | | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", |
| | | "bin": { |
| | | "nanoid": "bin/nanoid.cjs" |
| | | }, |
| | | "engines": { |
| | | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" |
| | | } |
| | | }, |
| | | "node_modules/nanomatch": { |
| | | "version": "1.2.13", |
| | | "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", |
| | |
| | | "version": "0.6.3", |
| | | "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", |
| | | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">= 0.6" |
| | | } |
| | |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", |
| | | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">= 0.8" |
| | | } |
| | |
| | | "node_modules/path-is-inside": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", |
| | | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", |
| | | "dev": true |
| | | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" |
| | | }, |
| | | "node_modules/path-key": { |
| | | "version": "2.0.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz", |
| | | "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==" |
| | | }, |
| | | "node_modules/rc": { |
| | | "version": "1.2.8", |
| | | "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz", |
| | | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", |
| | | "dependencies": { |
| | | "deep-extend": "^0.6.0", |
| | | "ini": "~1.3.0", |
| | | "minimist": "^1.2.0", |
| | | "strip-json-comments": "~2.0.1" |
| | | }, |
| | | "bin": { |
| | | "rc": "cli.js" |
| | | } |
| | | }, |
| | | "node_modules/read-pkg": { |
| | | "version": "5.2.0", |
| | | "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", |
| | |
| | | "node": ">=4" |
| | | } |
| | | }, |
| | | "node_modules/registry-auth-token": { |
| | | "version": "3.3.2", |
| | | "resolved": "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz", |
| | | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", |
| | | "dependencies": { |
| | | "rc": "^1.1.6", |
| | | "safe-buffer": "^5.0.1" |
| | | } |
| | | }, |
| | | "node_modules/registry-url": { |
| | | "version": "3.1.0", |
| | | "resolved": "https://registry.npmmirror.com/registry-url/-/registry-url-3.1.0.tgz", |
| | | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", |
| | | "dependencies": { |
| | | "rc": "^1.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/regjsparser": { |
| | | "version": "0.9.1", |
| | | "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", |
| | |
| | | "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", |
| | | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/require-from-string": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", |
| | | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | |
| | | "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/serve": { |
| | | "version": "14.2.3", |
| | | "resolved": "https://registry.npmmirror.com/serve/-/serve-14.2.3.tgz", |
| | | "integrity": "sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==", |
| | | "dependencies": { |
| | | "@zeit/schemas": "2.36.0", |
| | | "ajv": "8.12.0", |
| | | "arg": "5.0.2", |
| | | "boxen": "7.0.0", |
| | | "chalk": "5.0.1", |
| | | "chalk-template": "0.4.0", |
| | | "clipboardy": "3.0.0", |
| | | "compression": "1.7.4", |
| | | "is-port-reachable": "4.0.0", |
| | | "serve-handler": "6.1.5", |
| | | "update-check": "1.5.4" |
| | | }, |
| | | "bin": { |
| | | "serve": "build/main.js" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 14" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler": { |
| | | "version": "6.1.5", |
| | | "resolved": "https://registry.npmmirror.com/serve-handler/-/serve-handler-6.1.5.tgz", |
| | | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", |
| | | "dependencies": { |
| | | "bytes": "3.0.0", |
| | | "content-disposition": "0.5.2", |
| | | "fast-url-parser": "1.1.3", |
| | | "mime-types": "2.1.18", |
| | | "minimatch": "3.1.2", |
| | | "path-is-inside": "1.0.2", |
| | | "path-to-regexp": "2.2.1", |
| | | "range-parser": "1.2.0" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler/node_modules/bytes": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", |
| | | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", |
| | | "engines": { |
| | | "node": ">= 0.8" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler/node_modules/content-disposition": { |
| | | "version": "0.5.2", |
| | | "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.2.tgz", |
| | | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", |
| | | "engines": { |
| | | "node": ">= 0.6" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler/node_modules/mime-db": { |
| | | "version": "1.33.0", |
| | | "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.33.0.tgz", |
| | | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", |
| | | "engines": { |
| | | "node": ">= 0.6" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler/node_modules/mime-types": { |
| | | "version": "2.1.18", |
| | | "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.18.tgz", |
| | | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", |
| | | "dependencies": { |
| | | "mime-db": "~1.33.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 0.6" |
| | | } |
| | | }, |
| | | "node_modules/serve-handler/node_modules/path-to-regexp": { |
| | | "version": "2.2.1", |
| | | "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz", |
| | | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" |
| | | }, |
| | | "node_modules/serve-handler/node_modules/range-parser": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.0.tgz", |
| | | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", |
| | | "engines": { |
| | | "node": ">= 0.6" |
| | | } |
| | | }, |
| | | "node_modules/serve-index": { |
| | | "version": "1.9.1", |
| | | "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", |
| | |
| | | }, |
| | | "engines": { |
| | | "node": ">= 0.8.0" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/ajv": { |
| | | "version": "8.12.0", |
| | | "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", |
| | | "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", |
| | | "dependencies": { |
| | | "fast-deep-equal": "^3.1.1", |
| | | "json-schema-traverse": "^1.0.0", |
| | | "require-from-string": "^2.0.2", |
| | | "uri-js": "^4.2.2" |
| | | }, |
| | | "funding": { |
| | | "type": "github", |
| | | "url": "https://github.com/sponsors/epoberezkin" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/chalk": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.0.1.tgz", |
| | | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", |
| | | "engines": { |
| | | "node": "^12.17.0 || ^14.13 || >=16.0.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/clipboardy": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-3.0.0.tgz", |
| | | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", |
| | | "dependencies": { |
| | | "arch": "^2.2.0", |
| | | "execa": "^5.1.1", |
| | | "is-wsl": "^2.2.0" |
| | | }, |
| | | "engines": { |
| | | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/cross-spawn": { |
| | | "version": "7.0.3", |
| | | "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", |
| | | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", |
| | | "dependencies": { |
| | | "path-key": "^3.1.0", |
| | | "shebang-command": "^2.0.0", |
| | | "which": "^2.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/execa": { |
| | | "version": "5.1.1", |
| | | "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", |
| | | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", |
| | | "dependencies": { |
| | | "cross-spawn": "^7.0.3", |
| | | "get-stream": "^6.0.0", |
| | | "human-signals": "^2.1.0", |
| | | "is-stream": "^2.0.0", |
| | | "merge-stream": "^2.0.0", |
| | | "npm-run-path": "^4.0.1", |
| | | "onetime": "^5.1.2", |
| | | "signal-exit": "^3.0.3", |
| | | "strip-final-newline": "^2.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sindresorhus/execa?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/fast-deep-equal": { |
| | | "version": "3.1.3", |
| | | "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", |
| | | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" |
| | | }, |
| | | "node_modules/serve/node_modules/get-stream": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", |
| | | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/human-signals": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", |
| | | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", |
| | | "engines": { |
| | | "node": ">=10.17.0" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/is-stream": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", |
| | | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/json-schema-traverse": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", |
| | | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" |
| | | }, |
| | | "node_modules/serve/node_modules/mimic-fn": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", |
| | | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", |
| | | "engines": { |
| | | "node": ">=6" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/npm-run-path": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", |
| | | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", |
| | | "dependencies": { |
| | | "path-key": "^3.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/onetime": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", |
| | | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", |
| | | "dependencies": { |
| | | "mimic-fn": "^2.1.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=6" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/path-key": { |
| | | "version": "3.1.1", |
| | | "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", |
| | | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/shebang-command": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", |
| | | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", |
| | | "dependencies": { |
| | | "shebang-regex": "^3.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/shebang-regex": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", |
| | | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/serve/node_modules/which": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", |
| | | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
| | | "dependencies": { |
| | | "isexe": "^2.0.0" |
| | | }, |
| | | "bin": { |
| | | "node-which": "bin/node-which" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/set-blocking": { |
| | |
| | | "version": "0.6.1", |
| | | "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", |
| | | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/source-map-js": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", |
| | | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", |
| | | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=6" |
| | | } |
| | |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
| | | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | |
| | | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/update-check": { |
| | | "version": "1.5.4", |
| | | "resolved": "https://registry.npmmirror.com/update-check/-/update-check-1.5.4.tgz", |
| | | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", |
| | | "dependencies": { |
| | | "registry-auth-token": "3.3.2", |
| | | "registry-url": "3.1.0" |
| | | } |
| | | }, |
| | | "node_modules/upper-case": { |
| | | "version": "1.1.3", |
| | | "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz", |
| | |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", |
| | | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">= 0.8" |
| | | } |
| | |
| | | "dev": true |
| | | }, |
| | | "node_modules/vue": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.15.tgz", |
| | | "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", |
| | | "dependencies": { |
| | | "@vue/compiler-sfc": "2.7.15", |
| | | "csstype": "^3.1.0" |
| | | } |
| | | "version": "2.6.14", |
| | | "resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.14.tgz", |
| | | "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", |
| | | "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details." |
| | | }, |
| | | "node_modules/vue-axios": { |
| | | "version": "2.1.5", |
| | |
| | | "babel-runtime": "^6.26.0", |
| | | "element-ui": "^2.0.7", |
| | | "vue": "^2.5.9" |
| | | } |
| | | }, |
| | | "node_modules/vue-demi": { |
| | | "version": "0.14.10", |
| | | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", |
| | | "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", |
| | | "hasInstallScript": true, |
| | | "bin": { |
| | | "vue-demi-fix": "bin/vue-demi-fix.js", |
| | | "vue-demi-switch": "bin/vue-demi-switch.js" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/antfu" |
| | | }, |
| | | "peerDependencies": { |
| | | "@vue/composition-api": "^1.0.0-rc.1", |
| | | "vue": "^3.0.0-0 || ^2.6.0" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "@vue/composition-api": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/vue-eslint-parser": { |
| | |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz", |
| | | "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" |
| | | }, |
| | | "node_modules/vue-loader": { |
| | | "version": "15.11.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", |
| | | "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "@vue/component-compiler-utils": "^3.1.0", |
| | | "hash-sum": "^1.0.2", |
| | | "loader-utils": "^1.1.0", |
| | | "vue-hot-reload-api": "^2.3.0", |
| | | "vue-style-loader": "^4.1.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "css-loader": "*", |
| | | "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" |
| | | }, |
| | | "peerDependenciesMeta": { |
| | | "cache-loader": { |
| | | "optional": true |
| | | }, |
| | | "prettier": { |
| | | "optional": true |
| | | }, |
| | | "vue-template-compiler": { |
| | | "optional": true |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/vue-loader/node_modules/json5": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", |
| | | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "minimist": "^1.2.0" |
| | | }, |
| | | "bin": { |
| | | "json5": "lib/cli.js" |
| | | } |
| | | }, |
| | | "node_modules/vue-loader/node_modules/loader-utils": { |
| | | "version": "1.4.2", |
| | | "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", |
| | | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^1.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=4.0.0" |
| | | } |
| | | }, |
| | | "node_modules/vue-router": { |
| | | "version": "3.6.5", |
| | | "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz", |
| | |
| | | } |
| | | }, |
| | | "node_modules/vue-template-compiler": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", |
| | | "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", |
| | | "version": "2.6.14", |
| | | "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", |
| | | "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "de-indent": "^1.0.2", |
| | | "he": "^1.2.0" |
| | | "he": "^1.1.0" |
| | | } |
| | | }, |
| | | "node_modules/vue-template-es2015-compiler": { |
| | |
| | | "string-width": "^1.0.2 || 2 || 3 || 4" |
| | | } |
| | | }, |
| | | "node_modules/widest-line": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmmirror.com/widest-line/-/widest-line-4.0.1.tgz", |
| | | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", |
| | | "dependencies": { |
| | | "string-width": "^5.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/widest-line/node_modules/ansi-regex": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", |
| | | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-regex?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/widest-line/node_modules/emoji-regex": { |
| | | "version": "9.2.2", |
| | | "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", |
| | | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" |
| | | }, |
| | | "node_modules/widest-line/node_modules/string-width": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", |
| | | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", |
| | | "dependencies": { |
| | | "eastasianwidth": "^0.2.0", |
| | | "emoji-regex": "^9.2.2", |
| | | "strip-ansi": "^7.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/widest-line/node_modules/strip-ansi": { |
| | | "version": "7.1.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", |
| | | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", |
| | | "dependencies": { |
| | | "ansi-regex": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/strip-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/wmf": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", |
| | |
| | | "@babel/parser": { |
| | | "version": "7.23.0", |
| | | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz", |
| | | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" |
| | | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", |
| | | "dev": true |
| | | }, |
| | | "@babel/plugin-proposal-async-generator-functions": { |
| | | "version": "7.20.7", |
| | |
| | | "integrity": "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==", |
| | | "dev": true |
| | | }, |
| | | "@vue-office/docx": { |
| | | "version": "1.6.2", |
| | | "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz", |
| | | "integrity": "sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ==", |
| | | "requires": {} |
| | | }, |
| | | "@vue/babel-helper-vue-jsx-merge-props": { |
| | | "version": "1.4.0", |
| | | "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", |
| | |
| | | "webpack-chain": "^4.11.0", |
| | | "webpack-dev-server": "^3.4.1", |
| | | "webpack-merge": "^4.2.1" |
| | | }, |
| | | "dependencies": { |
| | | "json5": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", |
| | | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", |
| | | "dev": true, |
| | | "requires": { |
| | | "minimist": "^1.2.0" |
| | | } |
| | | }, |
| | | "loader-utils": { |
| | | "version": "1.4.2", |
| | | "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", |
| | | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", |
| | | "dev": true, |
| | | "requires": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^1.0.1" |
| | | } |
| | | }, |
| | | "vue-loader": { |
| | | "version": "15.11.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", |
| | | "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", |
| | | "dev": true, |
| | | "requires": { |
| | | "@vue/component-compiler-utils": "^3.1.0", |
| | | "hash-sum": "^1.0.2", |
| | | "loader-utils": "^1.1.0", |
| | | "vue-hot-reload-api": "^2.3.0", |
| | | "vue-style-loader": "^4.1.0" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "@vue/cli-shared-utils": { |
| | |
| | | "request-promise-native": "^1.0.7", |
| | | "semver": "^6.0.0", |
| | | "string.prototype.padstart": "^3.0.0" |
| | | } |
| | | }, |
| | | "@vue/compiler-sfc": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz", |
| | | "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==", |
| | | "requires": { |
| | | "@babel/parser": "^7.18.4", |
| | | "postcss": "^8.4.14", |
| | | "source-map": "^0.6.1" |
| | | }, |
| | | "dependencies": { |
| | | "picocolors": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", |
| | | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" |
| | | }, |
| | | "postcss": { |
| | | "version": "8.4.31", |
| | | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", |
| | | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", |
| | | "requires": { |
| | | "nanoid": "^3.3.6", |
| | | "picocolors": "^1.0.0", |
| | | "source-map-js": "^1.0.2" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "@vue/component-compiler-utils": { |
| | |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "@vue/composition-api": { |
| | | "version": "1.7.2", |
| | | "resolved": "https://registry.npmmirror.com/@vue/composition-api/-/composition-api-1.7.2.tgz", |
| | | "integrity": "sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==", |
| | | "requires": {} |
| | | }, |
| | | "@vue/preload-webpack-plugin": { |
| | | "version": "1.1.2", |
| | |
| | | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", |
| | | "dev": true |
| | | }, |
| | | "@zeit/schemas": { |
| | | "version": "2.36.0", |
| | | "resolved": "https://registry.npmmirror.com/@zeit/schemas/-/schemas-2.36.0.tgz", |
| | | "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==" |
| | | }, |
| | | "abbrev": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", |
| | |
| | | "version": "1.3.8", |
| | | "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", |
| | | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", |
| | | "dev": true, |
| | | "requires": { |
| | | "mime-types": "~2.1.34", |
| | | "negotiator": "0.6.3" |
| | |
| | | "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", |
| | | "dev": true |
| | | }, |
| | | "ansi-align": { |
| | | "version": "3.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz", |
| | | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", |
| | | "requires": { |
| | | "string-width": "^4.1.0" |
| | | } |
| | | }, |
| | | "ansi-colors": { |
| | | "version": "3.2.4", |
| | | "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", |
| | |
| | | "arch": { |
| | | "version": "2.2.0", |
| | | "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", |
| | | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", |
| | | "dev": true |
| | | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" |
| | | }, |
| | | "are-we-there-yet": { |
| | | "version": "1.1.7", |
| | |
| | | "delegates": "^1.0.0", |
| | | "readable-stream": "^2.0.6" |
| | | } |
| | | }, |
| | | "arg": { |
| | | "version": "5.0.2", |
| | | "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", |
| | | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" |
| | | }, |
| | | "argparse": { |
| | | "version": "1.0.10", |
| | |
| | | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", |
| | | "dev": true |
| | | }, |
| | | "boxen": { |
| | | "version": "7.0.0", |
| | | "resolved": "https://registry.npmmirror.com/boxen/-/boxen-7.0.0.tgz", |
| | | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", |
| | | "requires": { |
| | | "ansi-align": "^3.0.1", |
| | | "camelcase": "^7.0.0", |
| | | "chalk": "^5.0.1", |
| | | "cli-boxes": "^3.0.0", |
| | | "string-width": "^5.1.2", |
| | | "type-fest": "^2.13.0", |
| | | "widest-line": "^4.0.1", |
| | | "wrap-ansi": "^8.0.1" |
| | | }, |
| | | "dependencies": { |
| | | "ansi-regex": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", |
| | | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" |
| | | }, |
| | | "ansi-styles": { |
| | | "version": "6.2.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", |
| | | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" |
| | | }, |
| | | "camelcase": { |
| | | "version": "7.0.1", |
| | | "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-7.0.1.tgz", |
| | | "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==" |
| | | }, |
| | | "chalk": { |
| | | "version": "5.3.0", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz", |
| | | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" |
| | | }, |
| | | "emoji-regex": { |
| | | "version": "9.2.2", |
| | | "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", |
| | | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" |
| | | }, |
| | | "string-width": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", |
| | | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", |
| | | "requires": { |
| | | "eastasianwidth": "^0.2.0", |
| | | "emoji-regex": "^9.2.2", |
| | | "strip-ansi": "^7.0.1" |
| | | } |
| | | }, |
| | | "strip-ansi": { |
| | | "version": "7.1.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", |
| | | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", |
| | | "requires": { |
| | | "ansi-regex": "^6.0.1" |
| | | } |
| | | }, |
| | | "type-fest": { |
| | | "version": "2.19.0", |
| | | "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz", |
| | | "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" |
| | | }, |
| | | "wrap-ansi": { |
| | | "version": "8.1.0", |
| | | "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", |
| | | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", |
| | | "requires": { |
| | | "ansi-styles": "^6.1.0", |
| | | "string-width": "^5.0.1", |
| | | "strip-ansi": "^7.0.1" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "brace-expansion": { |
| | | "version": "1.1.11", |
| | | "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", |
| | |
| | | "supports-color": "^5.3.0" |
| | | } |
| | | }, |
| | | "chalk-template": { |
| | | "version": "0.4.0", |
| | | "resolved": "https://registry.npmmirror.com/chalk-template/-/chalk-template-0.4.0.tgz", |
| | | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", |
| | | "requires": { |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "dependencies": { |
| | | "ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", |
| | | "requires": { |
| | | "color-convert": "^2.0.1" |
| | | } |
| | | }, |
| | | "chalk": { |
| | | "version": "4.1.2", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", |
| | | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", |
| | | "requires": { |
| | | "ansi-styles": "^4.1.0", |
| | | "supports-color": "^7.1.0" |
| | | } |
| | | }, |
| | | "color-convert": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", |
| | | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", |
| | | "requires": { |
| | | "color-name": "~1.1.4" |
| | | } |
| | | }, |
| | | "color-name": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", |
| | | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" |
| | | }, |
| | | "has-flag": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", |
| | | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" |
| | | }, |
| | | "supports-color": { |
| | | "version": "7.2.0", |
| | | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", |
| | | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
| | | "requires": { |
| | | "has-flag": "^4.0.0" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "chardet": { |
| | | "version": "0.4.2", |
| | | "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz", |
| | |
| | | "requires": { |
| | | "source-map": "~0.6.0" |
| | | } |
| | | }, |
| | | "cli-boxes": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-3.0.0.tgz", |
| | | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" |
| | | }, |
| | | "cli-cursor": { |
| | | "version": "2.1.0", |
| | |
| | | "version": "2.0.18", |
| | | "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", |
| | | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", |
| | | "dev": true, |
| | | "requires": { |
| | | "mime-db": ">= 1.43.0 < 2" |
| | | } |
| | |
| | | "version": "1.7.4", |
| | | "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", |
| | | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", |
| | | "dev": true, |
| | | "requires": { |
| | | "accepts": "~1.3.5", |
| | | "bytes": "3.0.0", |
| | |
| | | "bytes": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", |
| | | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", |
| | | "dev": true |
| | | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" |
| | | }, |
| | | "debug": { |
| | | "version": "2.6.9", |
| | | "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", |
| | | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
| | | "dev": true, |
| | | "requires": { |
| | | "ms": "2.0.0" |
| | | } |
| | |
| | | "ms": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", |
| | | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", |
| | | "dev": true |
| | | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" |
| | | } |
| | | } |
| | | }, |
| | |
| | | } |
| | | } |
| | | }, |
| | | "csstype": { |
| | | "version": "3.1.2", |
| | | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", |
| | | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" |
| | | }, |
| | | "current-script-polyfill": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", |
| | |
| | | "object-keys": "^1.1.1", |
| | | "regexp.prototype.flags": "^1.2.0" |
| | | } |
| | | }, |
| | | "deep-extend": { |
| | | "version": "0.6.0", |
| | | "resolved": "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz", |
| | | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" |
| | | }, |
| | | "deep-is": { |
| | | "version": "0.1.4", |
| | |
| | | "readable-stream": "^2.0.0", |
| | | "stream-shift": "^1.0.0" |
| | | } |
| | | }, |
| | | "eastasianwidth": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", |
| | | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" |
| | | }, |
| | | "easy-stack": { |
| | | "version": "1.0.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", |
| | | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", |
| | | "dev": true |
| | | }, |
| | | "fast-url-parser": { |
| | | "version": "1.1.3", |
| | | "resolved": "https://registry.npmmirror.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz", |
| | | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", |
| | | "requires": { |
| | | "punycode": "^1.3.2" |
| | | }, |
| | | "dependencies": { |
| | | "punycode": { |
| | | "version": "1.4.1", |
| | | "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz", |
| | | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" |
| | | } |
| | | } |
| | | }, |
| | | "fastparse": { |
| | | "version": "1.1.2", |
| | |
| | | "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", |
| | | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" |
| | | }, |
| | | "ini": { |
| | | "version": "1.3.8", |
| | | "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", |
| | | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" |
| | | }, |
| | | "inquirer": { |
| | | "version": "3.3.0", |
| | | "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.3.0.tgz", |
| | |
| | | "is-docker": { |
| | | "version": "2.2.1", |
| | | "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", |
| | | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", |
| | | "dev": true |
| | | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" |
| | | }, |
| | | "is-extendable": { |
| | | "version": "1.0.1", |
| | |
| | | "isobject": "^3.0.1" |
| | | } |
| | | }, |
| | | "is-port-reachable": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmmirror.com/is-port-reachable/-/is-port-reachable-4.0.0.tgz", |
| | | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==" |
| | | }, |
| | | "is-regex": { |
| | | "version": "1.1.4", |
| | | "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", |
| | |
| | | "version": "2.2.0", |
| | | "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", |
| | | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", |
| | | "dev": true, |
| | | "requires": { |
| | | "is-docker": "^2.0.0" |
| | | } |
| | |
| | | "merge-stream": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", |
| | | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", |
| | | "dev": true |
| | | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" |
| | | }, |
| | | "merge2": { |
| | | "version": "1.4.1", |
| | |
| | | "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", |
| | | "dev": true |
| | | }, |
| | | "nanoid": { |
| | | "version": "3.3.6", |
| | | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", |
| | | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" |
| | | }, |
| | | "nanomatch": { |
| | | "version": "1.2.13", |
| | | "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", |
| | |
| | | "negotiator": { |
| | | "version": "0.6.3", |
| | | "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", |
| | | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", |
| | | "dev": true |
| | | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" |
| | | }, |
| | | "neo-async": { |
| | | "version": "2.6.2", |
| | |
| | | "on-headers": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", |
| | | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", |
| | | "dev": true |
| | | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" |
| | | }, |
| | | "once": { |
| | | "version": "1.4.0", |
| | |
| | | "path-is-inside": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz", |
| | | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", |
| | | "dev": true |
| | | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" |
| | | }, |
| | | "path-key": { |
| | | "version": "2.0.1", |
| | |
| | | "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz", |
| | | "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==" |
| | | }, |
| | | "rc": { |
| | | "version": "1.2.8", |
| | | "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz", |
| | | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", |
| | | "requires": { |
| | | "deep-extend": "^0.6.0", |
| | | "ini": "~1.3.0", |
| | | "minimist": "^1.2.0", |
| | | "strip-json-comments": "~2.0.1" |
| | | } |
| | | }, |
| | | "read-pkg": { |
| | | "version": "5.2.0", |
| | | "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", |
| | |
| | | "unicode-match-property-value-ecmascript": "^2.1.0" |
| | | } |
| | | }, |
| | | "registry-auth-token": { |
| | | "version": "3.3.2", |
| | | "resolved": "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz", |
| | | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", |
| | | "requires": { |
| | | "rc": "^1.1.6", |
| | | "safe-buffer": "^5.0.1" |
| | | } |
| | | }, |
| | | "registry-url": { |
| | | "version": "3.1.0", |
| | | "resolved": "https://registry.npmmirror.com/registry-url/-/registry-url-3.1.0.tgz", |
| | | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", |
| | | "requires": { |
| | | "rc": "^1.0.1" |
| | | } |
| | | }, |
| | | "regjsparser": { |
| | | "version": "0.9.1", |
| | | "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", |
| | |
| | | "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", |
| | | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", |
| | | "dev": true |
| | | }, |
| | | "require-from-string": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", |
| | | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" |
| | | }, |
| | | "require-main-filename": { |
| | | "version": "2.0.0", |
| | |
| | | "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", |
| | | "dev": true |
| | | }, |
| | | "serve": { |
| | | "version": "14.2.3", |
| | | "resolved": "https://registry.npmmirror.com/serve/-/serve-14.2.3.tgz", |
| | | "integrity": "sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==", |
| | | "requires": { |
| | | "@zeit/schemas": "2.36.0", |
| | | "ajv": "8.12.0", |
| | | "arg": "5.0.2", |
| | | "boxen": "7.0.0", |
| | | "chalk": "5.0.1", |
| | | "chalk-template": "0.4.0", |
| | | "clipboardy": "3.0.0", |
| | | "compression": "1.7.4", |
| | | "is-port-reachable": "4.0.0", |
| | | "serve-handler": "6.1.5", |
| | | "update-check": "1.5.4" |
| | | }, |
| | | "dependencies": { |
| | | "ajv": { |
| | | "version": "8.12.0", |
| | | "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", |
| | | "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", |
| | | "requires": { |
| | | "fast-deep-equal": "^3.1.1", |
| | | "json-schema-traverse": "^1.0.0", |
| | | "require-from-string": "^2.0.2", |
| | | "uri-js": "^4.2.2" |
| | | } |
| | | }, |
| | | "chalk": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.0.1.tgz", |
| | | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==" |
| | | }, |
| | | "clipboardy": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-3.0.0.tgz", |
| | | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", |
| | | "requires": { |
| | | "arch": "^2.2.0", |
| | | "execa": "^5.1.1", |
| | | "is-wsl": "^2.2.0" |
| | | } |
| | | }, |
| | | "cross-spawn": { |
| | | "version": "7.0.3", |
| | | "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", |
| | | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", |
| | | "requires": { |
| | | "path-key": "^3.1.0", |
| | | "shebang-command": "^2.0.0", |
| | | "which": "^2.0.1" |
| | | } |
| | | }, |
| | | "execa": { |
| | | "version": "5.1.1", |
| | | "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", |
| | | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", |
| | | "requires": { |
| | | "cross-spawn": "^7.0.3", |
| | | "get-stream": "^6.0.0", |
| | | "human-signals": "^2.1.0", |
| | | "is-stream": "^2.0.0", |
| | | "merge-stream": "^2.0.0", |
| | | "npm-run-path": "^4.0.1", |
| | | "onetime": "^5.1.2", |
| | | "signal-exit": "^3.0.3", |
| | | "strip-final-newline": "^2.0.0" |
| | | } |
| | | }, |
| | | "fast-deep-equal": { |
| | | "version": "3.1.3", |
| | | "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", |
| | | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" |
| | | }, |
| | | "get-stream": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", |
| | | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" |
| | | }, |
| | | "human-signals": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", |
| | | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" |
| | | }, |
| | | "is-stream": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", |
| | | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" |
| | | }, |
| | | "json-schema-traverse": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", |
| | | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" |
| | | }, |
| | | "mimic-fn": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", |
| | | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" |
| | | }, |
| | | "npm-run-path": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", |
| | | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", |
| | | "requires": { |
| | | "path-key": "^3.0.0" |
| | | } |
| | | }, |
| | | "onetime": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", |
| | | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", |
| | | "requires": { |
| | | "mimic-fn": "^2.1.0" |
| | | } |
| | | }, |
| | | "path-key": { |
| | | "version": "3.1.1", |
| | | "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", |
| | | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" |
| | | }, |
| | | "shebang-command": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", |
| | | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", |
| | | "requires": { |
| | | "shebang-regex": "^3.0.0" |
| | | } |
| | | }, |
| | | "shebang-regex": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", |
| | | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" |
| | | }, |
| | | "which": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", |
| | | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
| | | "requires": { |
| | | "isexe": "^2.0.0" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "serve-handler": { |
| | | "version": "6.1.5", |
| | | "resolved": "https://registry.npmmirror.com/serve-handler/-/serve-handler-6.1.5.tgz", |
| | | "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", |
| | | "requires": { |
| | | "bytes": "3.0.0", |
| | | "content-disposition": "0.5.2", |
| | | "fast-url-parser": "1.1.3", |
| | | "mime-types": "2.1.18", |
| | | "minimatch": "3.1.2", |
| | | "path-is-inside": "1.0.2", |
| | | "path-to-regexp": "2.2.1", |
| | | "range-parser": "1.2.0" |
| | | }, |
| | | "dependencies": { |
| | | "bytes": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", |
| | | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" |
| | | }, |
| | | "content-disposition": { |
| | | "version": "0.5.2", |
| | | "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.2.tgz", |
| | | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" |
| | | }, |
| | | "mime-db": { |
| | | "version": "1.33.0", |
| | | "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.33.0.tgz", |
| | | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" |
| | | }, |
| | | "mime-types": { |
| | | "version": "2.1.18", |
| | | "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.18.tgz", |
| | | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", |
| | | "requires": { |
| | | "mime-db": "~1.33.0" |
| | | } |
| | | }, |
| | | "path-to-regexp": { |
| | | "version": "2.2.1", |
| | | "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz", |
| | | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" |
| | | }, |
| | | "range-parser": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.0.tgz", |
| | | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==" |
| | | } |
| | | } |
| | | }, |
| | | "serve-index": { |
| | | "version": "1.9.1", |
| | | "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", |
| | |
| | | "source-map": { |
| | | "version": "0.6.1", |
| | | "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", |
| | | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" |
| | | }, |
| | | "source-map-js": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", |
| | | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" |
| | | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
| | | "dev": true |
| | | }, |
| | | "source-map-resolve": { |
| | | "version": "0.5.3", |
| | |
| | | "strip-final-newline": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", |
| | | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", |
| | | "dev": true |
| | | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" |
| | | }, |
| | | "strip-indent": { |
| | | "version": "3.0.0", |
| | |
| | | "strip-json-comments": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
| | | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", |
| | | "dev": true |
| | | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" |
| | | }, |
| | | "stylehacks": { |
| | | "version": "4.0.3", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "update-check": { |
| | | "version": "1.5.4", |
| | | "resolved": "https://registry.npmmirror.com/update-check/-/update-check-1.5.4.tgz", |
| | | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", |
| | | "requires": { |
| | | "registry-auth-token": "3.3.2", |
| | | "registry-url": "3.1.0" |
| | | } |
| | | }, |
| | | "upper-case": { |
| | | "version": "1.1.3", |
| | | "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz", |
| | |
| | | "vary": { |
| | | "version": "1.1.2", |
| | | "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", |
| | | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", |
| | | "dev": true |
| | | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" |
| | | }, |
| | | "vendors": { |
| | | "version": "1.0.4", |
| | |
| | | "dev": true |
| | | }, |
| | | "vue": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.15.tgz", |
| | | "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", |
| | | "requires": { |
| | | "@vue/compiler-sfc": "2.7.15", |
| | | "csstype": "^3.1.0" |
| | | } |
| | | "version": "2.6.14", |
| | | "resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.14.tgz", |
| | | "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" |
| | | }, |
| | | "vue-axios": { |
| | | "version": "2.1.5", |
| | |
| | | "element-ui": "^2.0.7", |
| | | "vue": "^2.5.9" |
| | | } |
| | | }, |
| | | "vue-demi": { |
| | | "version": "0.14.10", |
| | | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", |
| | | "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", |
| | | "requires": {} |
| | | }, |
| | | "vue-eslint-parser": { |
| | | "version": "2.0.3", |
| | |
| | | "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz", |
| | | "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" |
| | | }, |
| | | "vue-loader": { |
| | | "version": "15.11.1", |
| | | "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", |
| | | "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", |
| | | "dev": true, |
| | | "requires": { |
| | | "@vue/component-compiler-utils": "^3.1.0", |
| | | "hash-sum": "^1.0.2", |
| | | "loader-utils": "^1.1.0", |
| | | "vue-hot-reload-api": "^2.3.0", |
| | | "vue-style-loader": "^4.1.0" |
| | | }, |
| | | "dependencies": { |
| | | "json5": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", |
| | | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", |
| | | "dev": true, |
| | | "requires": { |
| | | "minimist": "^1.2.0" |
| | | } |
| | | }, |
| | | "loader-utils": { |
| | | "version": "1.4.2", |
| | | "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", |
| | | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", |
| | | "dev": true, |
| | | "requires": { |
| | | "big.js": "^5.2.2", |
| | | "emojis-list": "^3.0.0", |
| | | "json5": "^1.0.1" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "vue-router": { |
| | | "version": "3.6.5", |
| | | "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz", |
| | |
| | | } |
| | | }, |
| | | "vue-template-compiler": { |
| | | "version": "2.7.15", |
| | | "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", |
| | | "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", |
| | | "version": "2.6.14", |
| | | "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", |
| | | "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", |
| | | "dev": true, |
| | | "requires": { |
| | | "de-indent": "^1.0.2", |
| | | "he": "^1.2.0" |
| | | "he": "^1.1.0" |
| | | } |
| | | }, |
| | | "vue-template-es2015-compiler": { |
| | |
| | | "string-width": "^1.0.2 || 2 || 3 || 4" |
| | | } |
| | | }, |
| | | "widest-line": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmmirror.com/widest-line/-/widest-line-4.0.1.tgz", |
| | | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", |
| | | "requires": { |
| | | "string-width": "^5.0.1" |
| | | }, |
| | | "dependencies": { |
| | | "ansi-regex": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", |
| | | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" |
| | | }, |
| | | "emoji-regex": { |
| | | "version": "9.2.2", |
| | | "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", |
| | | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" |
| | | }, |
| | | "string-width": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", |
| | | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", |
| | | "requires": { |
| | | "eastasianwidth": "^0.2.0", |
| | | "emoji-regex": "^9.2.2", |
| | | "strip-ansi": "^7.0.1" |
| | | } |
| | | }, |
| | | "strip-ansi": { |
| | | "version": "7.1.0", |
| | | "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", |
| | | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", |
| | | "requires": { |
| | | "ansi-regex": "^6.0.1" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "wmf": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", |
| | |
| | | "test:e2e": "vue-cli-service test:e2e" |
| | | }, |
| | | "dependencies": { |
| | | "@vue-office/docx": "^1.6.2", |
| | | "@vue/composition-api": "^1.7.2", |
| | | "avue-plugin-map": "^1.0.1", |
| | | "avue-plugin-ueditor": "^0.1.4", |
| | | "axios": "^0.18.0", |
| | |
| | | "nprogress": "^0.2.0", |
| | | "portfinder": "^1.0.23", |
| | | "script-loader": "^0.7.2", |
| | | "serve": "^14.2.3", |
| | | "vue": "^2.6.10", |
| | | "vue-axios": "^2.1.2", |
| | | "vue-cron": "^1.0.9", |
| | | "vue-demi": "^0.14.10", |
| | | "vue-i18n": "^8.7.0", |
| | | "vue-router": "^3.0.1", |
| | | "vuex": "^3.1.1", |
| | |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const getPublicDiscussTotal = (params) => { |
| | | return request({ |
| | | url: '/api/public_discuss/publicDiscuss/publicDiscussTotal', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | } |
| | | }) |
| | | } |
| New file |
| | |
| | | import request from '@/router/axios'; |
| | | |
| | | export const getList = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-policeAlarmRecords/policeAlarmRecords/page', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getDetail = (id) => { |
| | | return request({ |
| | | url: '/api/blade-taskSchoolEven/taskSchoolEven/detail', |
| | | method: 'get', |
| | | params: { |
| | | id |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const remove = (ids) => { |
| | | return request({ |
| | | url: '/api/blade-taskSchoolEven/taskSchoolEven/remove', |
| | | method: 'post', |
| | | params: { |
| | | ids, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const add = (row) => { |
| | | return request({ |
| | | url: '/api/blade-taskSchoolEven/taskSchoolEven/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const update = (row) => { |
| | | return request({ |
| | | url: '/api/blade-taskSchoolEven/taskSchoolEven/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | export const updateAuditing = (row) => { |
| | | return request({ |
| | | url: '/api/blade-taskSchoolEven/taskSchoolEven/auditing', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| New file |
| | |
| | | import request from '@/router/axios'; |
| | | |
| | | export const getList = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-report/report/page', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getDetail = (id) => { |
| | | return request({ |
| | | url: '/api/blade-report/report/detail', |
| | | method: 'get', |
| | | params: { |
| | | id |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const remove = (ids) => { |
| | | return request({ |
| | | url: '/api/blade-report/report/remove', |
| | | method: 'post', |
| | | params: { |
| | | ids, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const add = (row) => { |
| | | return request({ |
| | | url: '/api/blade-report/report/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const update = (row) => { |
| | | return request({ |
| | | url: '/api/blade-report/report/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| New file |
| | |
| | | import request from '@/router/axios'; |
| | | |
| | | export const getList = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-reportDb/reportDb/page', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getDetail = (id) => { |
| | | return request({ |
| | | url: '/api/blade-reportDb/reportDb/detail', |
| | | method: 'get', |
| | | params: { |
| | | id |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const remove = (ids) => { |
| | | return request({ |
| | | url: '/api/blade-reportDb/reportDb/remove', |
| | | method: 'post', |
| | | params: { |
| | | ids, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const add = (row) => { |
| | | return request({ |
| | | url: '/api/blade-reportDb/reportDb/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const update = (row) => { |
| | | return request({ |
| | | url: '/api/blade-reportDb/reportDb/submit', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const getCount = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-eCallEventTwo/eCallEventTwo/getCount', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const synchronizeData = () => { |
| | | return request({ |
| | | url: '/api/blade-eCallEventTwo/eCallEventTwo/synchronizeData', |
| | | method: 'get', |
| | | }) |
| | | } |
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getOrgStatisticalLabels = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-householdLabel/householdLabel/getOrgStatisticalLabels', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | export const getUnitedFrontStatisticalLabels = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-householdLabel/householdLabel/getUnitedFrontStatisticalLabels', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | export const getFollowStatisticalLabels = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-householdLabel/householdLabel/getFollowStatisticalLabels', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getCommunityStatisticalLabels = (current, size, params) => { |
| | | return request({ |
| | | url: '/api/blade-householdLabel/householdLabel/getCommunityStatisticalLabels', |
| New file |
| | |
| | | <template> |
| | | <vue-office-docx :src="docx" style="height: 100vh;" @rendered="renderedHandler" @error="errorHandler" /> |
| | | </template> |
| | | |
| | | <script> |
| | | //引入VueOfficeDocx组件 |
| | | import VueOfficeDocx from '@vue-office/docx' |
| | | //引入相关样式 |
| | | import '@vue-office/docx/lib/index.css' |
| | | |
| | | export default { |
| | | components: { |
| | | VueOfficeDocx |
| | | }, |
| | | data() { |
| | | return { |
| | | docx: 'http://static.shanhuxueyuan.com/test6.docx' //设置文档网络地址,可以是相对地址 |
| | | } |
| | | }, |
| | | methods: { |
| | | initWord(url) { |
| | | this.docx = url |
| | | }, |
| | | renderedHandler() { |
| | | console.log("渲染完成") |
| | | }, |
| | | errorHandler() { |
| | | console.log("渲染失败") |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | // 第三方系统授权地址 |
| | | authUrl: "http://localhost/blade-auth/oauth/render", |
| | | // 报表设计器地址(cloud端口为8108,boot端口为80) |
| | | reportUrl: "https://srgdjczzxtpt.com:2080/jczz-ureport/ureport", |
| | | // reportUrl: 'http://localhost:9528/ureport', |
| | | reportUrl: "https://srgdjczzxtpt.com:2080/jmreport", |
| | | // reportUrl: 'http://localhost:9528/jmreport', |
| | | // 单点登录系统认证(blade-auth服务的地) |
| | | ssoUrl: |
| | | "http://localhost:8100/oauth/authorize?client_id=saber&response_type=code&redirect_uri=", |
| | | ssoUrl: "http://localhost:8100/oauth/authorize?client_id=saber&response_type=code&redirect_uri=", |
| | | // 单点登录回调地址(Saber服务的地址) |
| | | redirectUri: "http://localhost:1888", |
| | | // redirectUri:'http://192.168.0.102:9528', |
| | |
| | | <template> |
| | | <el-dialog |
| | | :title="title" |
| | | append-to-body |
| | | :visible.sync="box" |
| | | width="60%" |
| | | > |
| | | <el-dialog :title="title" append-to-body :visible.sync="box" width="60%"> |
| | | <avue-form :option="option" v-model="form"> </avue-form> |
| | | <!-- <sapn>{{ form.content }}</sapn> --> |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | import {updateIsRead} from "@/api/messageRecord/messageUser"; |
| | | import { |
| | | updateIsRead |
| | | } from "@/api/messageRecord/messageUser"; |
| | | |
| | | export default { |
| | | name: "messsageContent", |
| | | data() { |
| | | return { |
| | | title:"", |
| | | box: false, |
| | | form: {}, |
| | | option: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [ |
| | | // { |
| | | // label: "主題", |
| | | // prop: "theme", |
| | | // disabled:true, |
| | | // span:24 |
| | | // }, |
| | | { |
| | | label: "", |
| | | labelWidth:1, |
| | | prop: "content", |
| | | type: "textarea", |
| | | // disabled:true, |
| | | span:24 |
| | | }, |
| | | ], |
| | | } |
| | | }; |
| | | }, |
| | | created(){ |
| | | export default { |
| | | name: "messsageContent", |
| | | data() { |
| | | return { |
| | | title: "", |
| | | box: false, |
| | | form: {}, |
| | | option: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [ |
| | | // { |
| | | // label: "主題", |
| | | // prop: "theme", |
| | | // disabled:true, |
| | | // span:24 |
| | | // }, |
| | | { |
| | | label: "", |
| | | labelWidth: 1, |
| | | prop: "content", |
| | | type: "textarea", |
| | | // disabled:true, |
| | | span: 24 |
| | | }, |
| | | ], |
| | | } |
| | | }; |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | methods:{ |
| | | // 初始化 |
| | | init(data){ |
| | | }, |
| | | methods: { |
| | | // 初始化 |
| | | init(data) { |
| | | this.title = data.title |
| | | this.box = true |
| | | this.form = data; |
| | | if(data.isRead ==2){ |
| | | this.updateMessage(data) |
| | | if (data.isRead == 2) { |
| | | this.updateMessage(data) |
| | | } |
| | | }, |
| | | updateMessage(data){ |
| | | }, |
| | | updateMessage(data) { |
| | | // 设置为已读 |
| | | updateIsRead(data.id,'1'); |
| | | updateIsRead(data.id, '1'); |
| | | // 刷新列表 |
| | | this.$emit('reflushList','') |
| | | this.$emit('reflushList', '') |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | }; |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | ::v-deep(.avue-form__menu--center){ |
| | | display: none !important; |
| | | } |
| | | </style> |
| | | ::v-deep .avue-form__menu--center { |
| | | display: none !important; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]" v-if="showCollapse"> |
| | | <i class="icon-navicon" @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" v-if="showMenu"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__right"> |
| | | <!-- <el-tooltip v-if="showColor" |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]" v-if="showCollapse"> |
| | | <i class="icon-navicon" @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" v-if="showMenu"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__right"> |
| | | <!-- <el-tooltip v-if="showColor" |
| | | effect="dark" |
| | | :content="$t('navbar.color')" |
| | | placement="bottom"> |
| | |
| | | <top-color></top-color> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <!-- <el-tooltip v-if="showDebug" |
| | | <!-- <el-tooltip v-if="showDebug" |
| | | effect="dark" |
| | | :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')" |
| | | placement="bottom"> |
| | |
| | | <top-logs></top-logs> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <!-- <el-tooltip v-if="showLock" |
| | | <!-- <el-tooltip v-if="showLock" |
| | | effect="dark" |
| | | :content="$t('navbar.lock')" |
| | | placement="bottom"> |
| | |
| | | <top-lock></top-lock> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <div style="position: relative;"> |
| | | <top-search v-show="searchShow"></top-search> |
| | | </div> |
| | | <el-tooltip v-if="showTheme" effect="dark" content="搜索" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <i style="font-size: 18px;" class="el-icon-search" @click="searchShow = !searchShow"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <!-- <el-tooltip v-if="showTheme" effect="dark" :content="$t('navbar.theme')" placement="bottom"> |
| | | <div style="position: relative;"> |
| | | <top-search v-show="searchShow"></top-search> |
| | | </div> |
| | | <el-tooltip v-if="showTheme" effect="dark" content="搜索" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <i style="font-size: 18px;" class="el-icon-search" @click="searchShow = !searchShow"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <!-- <el-tooltip v-if="showTheme" effect="dark" :content="$t('navbar.theme')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-theme></top-theme> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip effect="dark" :content="$t('navbar.notice')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | <el-tooltip effect="dark" :content="$t('navbar.notice')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | :content="$t('navbar.language')" |
| | | placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-lang></top-lang> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip v-if="showFullScren" effect="dark" |
| | | :content="isFullScren ? $t('navbar.screenfullF') : $t('navbar.screenfull')" placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren ? 'icon-tuichuquanping' : 'icon-quanping'" @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" :src="topBarImg"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept">{{ $t('navbar.switchDept') |
| | | }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch" /> |
| | | </el-dialog> |
| | | <el-tooltip v-if="showFullScren" effect="dark" |
| | | :content="isFullScren ? $t('navbar.screenfullF') : $t('navbar.screenfull')" placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren ? 'icon-tuichuquanping' : 'icon-quanping'" @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" :src="topBarImg"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept">{{ $t('navbar.switchDept') |
| | | }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch" /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { getStore } from "@/util/store" |
| | | import { setTheme } from "@/util/util" |
| | | import { resetRouter } from '@/router/router' |
| | | import { mapGetters, mapState } from "vuex" |
| | | import { fullscreenToggel, listenfullscreen } from "@/util/util" |
| | | import topLock from "./top-lock" |
| | | import topMenu from "./top-menu" |
| | | import topSearch from "./top-search" |
| | | import topTheme from "./top-theme" |
| | | import topLogs from "./top-logs" |
| | | import topColor from "./top-color" |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang" |
| | | import { |
| | | getStore |
| | | } from "@/util/store" |
| | | import { |
| | | setTheme |
| | | } from "@/util/util" |
| | | import { |
| | | resetRouter |
| | | } from '@/router/router' |
| | | import { |
| | | mapGetters, |
| | | mapState |
| | | } from "vuex" |
| | | import { |
| | | fullscreenToggel, |
| | | listenfullscreen |
| | | } from "@/util/util" |
| | | import topLock from "./top-lock" |
| | | import topMenu from "./top-menu" |
| | | import topSearch from "./top-search" |
| | | import topTheme from "./top-theme" |
| | | import topLogs from "./top-logs" |
| | | import topColor from "./top-color" |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang" |
| | | |
| | | export default { |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data () { |
| | | return { |
| | | webType: getStore({ name: "webType" }), |
| | | searchShow: false, |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | data() { |
| | | return { |
| | | webType: getStore({ |
| | | name: "webType" |
| | | }), |
| | | searchShow: false, |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [{ |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | showMenu: getStore({ name: "showMenu" }), |
| | | globalUserInfo: getStore({ name: "userInfo" }), |
| | | } |
| | | ] |
| | | }, |
| | | showMenu: getStore({ |
| | | name: "showMenu" |
| | | }), |
| | | globalUserInfo: getStore({ |
| | | name: "userInfo" |
| | | }), |
| | | } |
| | | }, |
| | | filters: {}, |
| | | created () { |
| | | setTheme('theme-white') |
| | | created() { |
| | | setTheme('theme-white') |
| | | }, |
| | | mounted () { |
| | | listenfullscreen(this.setScreen) |
| | | mounted() { |
| | | listenfullscreen(this.setScreen) |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]), |
| | | topBarImg () { |
| | | if (this.userInfo.avatar.indexOf('upload') != -1) { |
| | | return this.website.minioUrl + this.userInfo.avatar |
| | | } else { |
| | | return this.userInfo.avatar |
| | | } |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]), |
| | | topBarImg() { |
| | | // console.log("*******this.userInfo*********" + JSON.stringify(this.userInfo)) |
| | | if (this.userInfo.avatar.indexOf('upload') != -1) { |
| | | return this.website.minioUrl + this.userInfo.avatar |
| | | } else { |
| | | return this.userInfo.avatar |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | handleScreen () { |
| | | fullscreenToggel() |
| | | }, |
| | | setCollapse () { |
| | | this.$store.commit("SET_COLLAPSE") |
| | | }, |
| | | setScreen () { |
| | | this.$store.commit("SET_FULLSCREN") |
| | | }, |
| | | switchDept () { |
| | | const userId = this.userInfo.user_id |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId") |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}` |
| | | deptColumn.display = true |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId") |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}` |
| | | roleColumn.display = true |
| | | this.userBox = true |
| | | }, |
| | | submitSwitch (form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false |
| | | this.$router.push({ path: "/" }) |
| | | }) |
| | | done() |
| | | }, |
| | | logout () { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter() |
| | | handleScreen() { |
| | | fullscreenToggel() |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE") |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN") |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId") |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}` |
| | | deptColumn.display = true |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId") |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}` |
| | | roleColumn.display = true |
| | | this.userBox = true |
| | | }, |
| | | submitSwitch(form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false |
| | | this.$router.push({ |
| | | path: "/" |
| | | }) |
| | | }) |
| | | done() |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter() |
| | | |
| | | if (this.webType == 'default') { |
| | | this.$router.push({ path: "/login" }) |
| | | } else if (this.webType == 'govern') { |
| | | this.$router.push({ path: "/governLogin" }) |
| | | } else if (this.webType == 'ecall'){ |
| | | this.$router.push({ path: "/ecallLogin" }) |
| | | } else { |
| | | this.$router.push({ path: "/tenementLogin" }) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | if (this.webType == 'default') { |
| | | this.$router.push({ |
| | | path: "/login" |
| | | }) |
| | | } else if (this.webType == 'govern') { |
| | | this.$router.push({ |
| | | path: "/governLogin" |
| | | }) |
| | | } else if (this.webType == 'ecall') { |
| | | this.$router.push({ |
| | | path: "/ecallLogin" |
| | | }) |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/tenementLogin" |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .noticeBtn { |
| | | .noticeBtn { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .top-bar-item-search { |
| | | .top-bar-item-search { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | width: 40px; |
| | | |
| | | i { |
| | | cursor: pointer; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | </style> |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <el-form class="login-form" status-icon :rules="loginRules" ref="loginForm" :model="loginForm" label-width="0"> |
| | | <!-- <el-form-item v-if="tenantMode" prop="tenantId"> |
| | | <el-form class="login-form" status-icon :rules="loginRules" ref="loginForm" :model="loginForm" label-width="0"> |
| | | <!-- <el-form-item v-if="tenantMode" prop="tenantId"> |
| | | <el-input size="small" |
| | | @keyup.enter.native="handleLogin" |
| | | v-model="loginForm.tenantId" |
| | |
| | | <i slot="prefix" class="icon-quanxian"/> |
| | | </el-input> |
| | | </el-form-item> --> |
| | | <el-form-item prop="username"> |
| | | <el-input size="small" @keyup.enter.native="handleLogin" v-model="loginForm.username" auto-complete="off" |
| | | :placeholder="$t('login.username')"> |
| | | <i slot="prefix" class="icon-yonghu" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <el-input size="small" @keyup.enter.native="handleLogin" :type="passwordType" v-model="loginForm.password" |
| | | auto-complete="off" :placeholder="$t('login.password')"> |
| | | <i class="el-icon-view el-input__icon" slot="suffix" @click="showPassword" /> |
| | | <i slot="prefix" class="icon-mima" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item v-if="this.website.captchaMode" prop="code"> |
| | | <el-form-item prop="username"> |
| | | <el-input size="small" @keyup.enter.native="handleLogin" v-model="loginForm.username" auto-complete="off" |
| | | :placeholder="$t('login.username')"> |
| | | <i slot="prefix" class="icon-yonghu" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="password"> |
| | | <el-input size="small" @keyup.enter.native="handleLogin" :type="passwordType" v-model="loginForm.password" |
| | | auto-complete="off" :placeholder="$t('login.password')"> |
| | | <i class="el-icon-view el-input__icon" slot="suffix" @click="showPassword" /> |
| | | <i slot="prefix" class="icon-mima" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item v-if="this.website.captchaMode" prop="code"> |
| | | <el-row :span="24"> |
| | | <el-col :span="16"> |
| | | <el-input size="small" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form-item> --> |
| | | <el-form-item> |
| | | <el-button type="primary" size="small" @click.native.prevent="handleLogin" class="login-submit">{{ |
| | | <el-form-item> |
| | | <el-button type="primary" size="small" @click.native.prevent="handleLogin" class="login-submit">{{ |
| | | $t('login.submit') }} |
| | | </el-button> |
| | | </el-form-item> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form :option="userOption" v-model="userForm" @submit="submitLogin" /> |
| | | </el-dialog> |
| | | </el-form> |
| | | </el-button> |
| | | </el-form-item> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form :option="userOption" v-model="userForm" @submit="submitLogin" /> |
| | | </el-dialog> |
| | | </el-form> |
| | | </template> |
| | | |
| | | <script> |
| | | import Layout from "@/page/index/" |
| | | import { mapGetters } from "vuex" |
| | | import { info } from "@/api/system/tenant" |
| | | // import {getCaptcha} from "@/api/user"; |
| | | import { getTopUrl } from "@/util/util" |
| | | import Layout from "@/page/index/" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import { |
| | | info |
| | | } from "@/api/system/tenant" |
| | | // import {getCaptcha} from "@/api/user"; |
| | | import { |
| | | getTopUrl |
| | | } from "@/util/util" |
| | | |
| | | export default { |
| | | export default { |
| | | name: "userlogin", |
| | | data () { |
| | | return { |
| | | tenantMode: this.website.tenantMode, |
| | | loginForm: { |
| | | //租户ID |
| | | tenantId: "000000", |
| | | //部门ID |
| | | deptId: "", |
| | | //角色ID |
| | | roleId: "", |
| | | //用户名 |
| | | username: "", |
| | | //密码 |
| | | password: "", |
| | | //账号类型 |
| | | type: "account", |
| | | //验证码的值 |
| | | code: "", |
| | | //验证码的索引 |
| | | key: "", |
| | | //预加载白色背景 |
| | | image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", |
| | | }, |
| | | loginRules: { |
| | | // tenantId: [ |
| | | // {required: false, message: "请输入租户ID", trigger: "blur"} |
| | | // ], |
| | | username: [ |
| | | { required: true, message: "请输入用户名", trigger: "blur" } |
| | | ], |
| | | password: [ |
| | | { required: true, message: "请输入密码", trigger: "blur" }, |
| | | { min: 1, message: "密码长度最少为6位", trigger: "blur" } |
| | | ] |
| | | }, |
| | | passwordType: "password", |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '登录', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.getTenant() |
| | | // this.refreshCode(); |
| | | }, |
| | | mounted () { |
| | | }, |
| | | watch: { |
| | | 'loginForm.deptId' () { |
| | | const column = this.findObject(this.userOption.column, "deptId") |
| | | if (this.loginForm.deptId.includes(",")) { |
| | | column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}` |
| | | column.display = true |
| | | } else { |
| | | column.dicUrl = '' |
| | | } |
| | | data() { |
| | | return { |
| | | tenantMode: this.website.tenantMode, |
| | | loginForm: { |
| | | //租户ID |
| | | tenantId: "000000", |
| | | //部门ID |
| | | deptId: "", |
| | | //角色ID |
| | | roleId: "", |
| | | //用户名 |
| | | username: "", |
| | | //密码 |
| | | password: "", |
| | | //账号类型 |
| | | type: "account", |
| | | //验证码的值 |
| | | code: "", |
| | | //验证码的索引 |
| | | key: "", |
| | | //预加载白色背景 |
| | | image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", |
| | | }, |
| | | 'loginForm.roleId' () { |
| | | const column = this.findObject(this.userOption.column, "roleId") |
| | | if (this.loginForm.roleId.includes(",")) { |
| | | column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}` |
| | | column.display = true |
| | | } else { |
| | | column.dicUrl = '' |
| | | loginRules: { |
| | | // tenantId: [ |
| | | // {required: false, message: "请输入租户ID", trigger: "blur"} |
| | | // ], |
| | | username: [{ |
| | | required: true, |
| | | message: "请输入用户名", |
| | | trigger: "blur" |
| | | }], |
| | | password: [{ |
| | | required: true, |
| | | message: "请输入密码", |
| | | trigger: "blur" |
| | | }, |
| | | { |
| | | min: 1, |
| | | message: "密码长度最少为6位", |
| | | trigger: "blur" |
| | | } |
| | | ] |
| | | }, |
| | | passwordType: "password", |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '登录', |
| | | column: [{ |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.getTenant() |
| | | // this.refreshCode(); |
| | | }, |
| | | mounted() {}, |
| | | watch: { |
| | | 'loginForm.deptId'() { |
| | | const column = this.findObject(this.userOption.column, "deptId") |
| | | if (this.loginForm.deptId.includes(",")) { |
| | | column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}` |
| | | column.display = true |
| | | } else { |
| | | column.dicUrl = '' |
| | | } |
| | | }, |
| | | 'loginForm.roleId'() { |
| | | const column = this.findObject(this.userOption.column, "roleId") |
| | | if (this.loginForm.roleId.includes(",")) { |
| | | column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}` |
| | | column.display = true |
| | | } else { |
| | | column.dicUrl = '' |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["tagWel", "userInfo"]) |
| | | ...mapGetters(["tagWel", "userInfo"]) |
| | | }, |
| | | props: [], |
| | | methods: { |
| | | // refreshCode () { |
| | | // if (this.website.captchaMode) { |
| | | // getCaptcha().then(res => { |
| | | // const data = res.data |
| | | // this.loginForm.key = data.key |
| | | // this.loginForm.image = data.image |
| | | // }) |
| | | // } |
| | | // }, |
| | | showPassword () { |
| | | this.passwordType === "" |
| | | ? (this.passwordType = "password") |
| | | : (this.passwordType = "") |
| | | }, |
| | | submitLogin (form, done) { |
| | | if (form.deptId !== '') { |
| | | this.loginForm.deptId = form.deptId |
| | | } |
| | | if (form.roleId !== '') { |
| | | this.loginForm.roleId = form.roleId |
| | | } |
| | | this.handleLogin() |
| | | done() |
| | | }, |
| | | handleLogin () { |
| | | this.$refs.loginForm.validate(valid => { |
| | | if (valid) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '登录中,请稍后。。。', |
| | | spinner: "el-icon-loading" |
| | | }) |
| | | this.$store.dispatch("LoginByUsername", this.loginForm).then((res) => { |
| | | if (res.error) { |
| | | loading.close() |
| | | return |
| | | } |
| | | |
| | | if (this.website.switchMode) { |
| | | const deptId = this.userInfo.dept_id |
| | | const roleId = this.userInfo.role_id |
| | | if (deptId.includes(",") || roleId.includes(",")) { |
| | | this.loginForm.deptId = deptId |
| | | this.loginForm.roleId = roleId |
| | | this.userBox = true |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | loading.close() |
| | | }) |
| | | return false |
| | | } |
| | | } |
| | | |
| | | this.$router.$avueRouter.formatRoutes(res.menuData, true) |
| | | this.$router.push({ path: res.fistMenu.path }) |
| | | |
| | | loading.close() |
| | | }).catch(() => { |
| | | loading.close() |
| | | // this.refreshCode() |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | getTenant () { |
| | | let domain = getTopUrl() |
| | | // 临时指定域名,方便测试 |
| | | //domain = "https://bladex.cn"; |
| | | info(domain).then(res => { |
| | | const data = res.data |
| | | if (data.success && data.data.tenantId) { |
| | | this.tenantMode = false |
| | | this.loginForm.tenantId = data.data.tenantId |
| | | this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})` |
| | | } |
| | | }) |
| | | // refreshCode () { |
| | | // if (this.website.captchaMode) { |
| | | // getCaptcha().then(res => { |
| | | // const data = res.data |
| | | // this.loginForm.key = data.key |
| | | // this.loginForm.image = data.image |
| | | // }) |
| | | // } |
| | | // }, |
| | | showPassword() { |
| | | this.passwordType === "" ? |
| | | (this.passwordType = "password") : |
| | | (this.passwordType = "") |
| | | }, |
| | | submitLogin(form, done) { |
| | | if (form.deptId !== '') { |
| | | this.loginForm.deptId = form.deptId |
| | | } |
| | | if (form.roleId !== '') { |
| | | this.loginForm.roleId = form.roleId |
| | | } |
| | | this.handleLogin() |
| | | done() |
| | | }, |
| | | handleLogin() { |
| | | this.$refs.loginForm.validate(valid => { |
| | | if (valid) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '登录中,请稍后。。。', |
| | | spinner: "el-icon-loading" |
| | | }) |
| | | this.$store.dispatch("LoginByUsername", this.loginForm).then((res) => { |
| | | if (res.error) { |
| | | loading.close() |
| | | return |
| | | } |
| | | |
| | | if (this.website.switchMode) { |
| | | const deptId = this.userInfo.dept_id |
| | | const roleId = this.userInfo.role_id |
| | | if (deptId.includes(",") || roleId.includes(",")) { |
| | | this.loginForm.deptId = deptId |
| | | this.loginForm.roleId = roleId |
| | | this.userBox = true |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | loading.close() |
| | | }) |
| | | return false |
| | | } |
| | | } |
| | | |
| | | this.$router.$avueRouter.formatRoutes(res.menuData, true) |
| | | this.$router.push({ |
| | | path: res.fistMenu.path |
| | | }) |
| | | |
| | | loading.close() |
| | | }).catch(() => { |
| | | loading.close() |
| | | // this.refreshCode() |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | getTenant() { |
| | | let domain = getTopUrl() |
| | | // 临时指定域名,方便测试 |
| | | //domain = "https://bladex.cn"; |
| | | info(domain).then(res => { |
| | | const data = res.data |
| | | if (data.success && data.data.tenantId) { |
| | | this.tenantMode = false |
| | | this.loginForm.tenantId = data.data.tenantId |
| | | this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})` |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style></style> |
| | | <style></style> |
| | |
| | | removeToken, |
| | | removeRefreshToken, |
| | | } from "@/util/auth"; |
| | | import { Alert, Message } from "element-ui"; |
| | | import { setStore, getStore } from "@/util/store"; |
| | | import { isURL, validatenull } from "@/util/validate"; |
| | | import { deepClone } from "@/util/util"; |
| | | import { |
| | | Alert, |
| | | Message |
| | | } from "element-ui"; |
| | | import { |
| | | setStore, |
| | | getStore |
| | | } from "@/util/store"; |
| | | import { |
| | | isURL, |
| | | validatenull |
| | | } from "@/util/validate"; |
| | | import { |
| | | deepClone |
| | | } from "@/util/util"; |
| | | import website from "@/config/website"; |
| | | import { |
| | | loginByUsername, |
| | |
| | | refreshToken, |
| | | getButtons, |
| | | } from "@/api/user"; |
| | | import { getTopMenu, getRoutes } from "@/api/system/menu"; |
| | | import { |
| | | getTopMenu, |
| | | getRoutes |
| | | } from "@/api/system/menu"; |
| | | import md5 from "js-md5"; |
| | | |
| | | function findChildrenUrl(data) { |
| | |
| | | |
| | | const user = { |
| | | state: { |
| | | tenantId: getStore({ name: "tenantId" }) || "", |
| | | userInfo: getStore({ name: "userInfo" }) || [], |
| | | permission: getStore({ name: "permission" }) || {}, |
| | | tenantId: getStore({ |
| | | name: "tenantId" |
| | | }) || "", |
| | | userInfo: getStore({ |
| | | name: "userInfo" |
| | | }) || [], |
| | | permission: getStore({ |
| | | name: "permission" |
| | | }) || {}, |
| | | roles: [], |
| | | menuId: {}, |
| | | menu: getStore({ name: "menu" }) || [], |
| | | menuAll: getStore({ name: "menuAll" }) || [], |
| | | token: getStore({ name: "token" }) || "", |
| | | refreshToken: getStore({ name: "refreshToken" }) || "", |
| | | homeFirstPage: getStore({ name: "firstPage" }) || "", |
| | | homeFirstTagPage: getStore({ name: "firstTagPage" }) || {}, |
| | | menu: getStore({ |
| | | name: "menu" |
| | | }) || [], |
| | | menuAll: getStore({ |
| | | name: "menuAll" |
| | | }) || [], |
| | | token: getStore({ |
| | | name: "token" |
| | | }) || "", |
| | | refreshToken: getStore({ |
| | | name: "refreshToken" |
| | | }) || "", |
| | | homeFirstPage: getStore({ |
| | | name: "firstPage" |
| | | }) || "", |
| | | homeFirstTagPage: getStore({ |
| | | name: "firstTagPage" |
| | | }) || {}, |
| | | }, |
| | | actions: { |
| | | //根据用户名登录 |
| | | LoginByUsername({ dispatch, commit }, userInfo) { |
| | | LoginByUsername({ |
| | | dispatch, |
| | | commit |
| | | }, userInfo) { |
| | | return new Promise((resolve, reject) => { |
| | | loginByUsername( |
| | | userInfo.tenantId, |
| | | userInfo.deptId, |
| | | userInfo.roleId, |
| | | userInfo.username, |
| | | md5(userInfo.password), |
| | | userInfo.type, |
| | | userInfo.key, |
| | | userInfo.code |
| | | ) |
| | | userInfo.tenantId, |
| | | userInfo.deptId, |
| | | userInfo.roleId, |
| | | userInfo.username, |
| | | md5(userInfo.password), |
| | | userInfo.type, |
| | | userInfo.key, |
| | | userInfo.code |
| | | ) |
| | | .then((res) => { |
| | | const data = res.data; |
| | | if (data.error_description) { |
| | |
| | | message: data.error_description, |
| | | type: "error", |
| | | }); |
| | | resolve({ error: "error" }); |
| | | resolve({ |
| | | error: "error" |
| | | }); |
| | | } else { |
| | | commit("SET_TOKEN", data.access_token); |
| | | commit("SET_REFRESH_TOKEN", data.refresh_token); |
| | |
| | | findChildrenRole(data.role_name, "administrator") || |
| | | findChildrenRole(data.role_name, "gagly") || |
| | | findChildrenRole(data.role_name, "jdgly") || |
| | | findChildrenRole(data.role_name, "sqgly") |
| | | findChildrenRole(data.role_name, "sqgly") || |
| | | findChildrenRole(data.role_name, "mj") |
| | | ) { |
| | | setStore({ name: "showMenu", content: true }); |
| | | setStore({ |
| | | name: "showMenu", |
| | | content: true |
| | | }); |
| | | |
| | | commit("SET_HOMEFIRSTTAGPAGE", { |
| | | label: "首页", |
| | |
| | | menuData, |
| | | }); |
| | | } else { |
| | | setStore({ name: "showMenu", content: false }); |
| | | setStore({ |
| | | name: "showMenu", |
| | | content: false |
| | | }); |
| | | |
| | | commit("SET_HOMEFIRSTTAGPAGE", { |
| | | label: fistMenu.name, |
| | |
| | | |
| | | commit("SET_HOMEFIRSTPAGE", fistMenu.path); |
| | | |
| | | resolve({ fistMenu, menuData }); |
| | | resolve({ |
| | | fistMenu, |
| | | menuData |
| | | }); |
| | | } |
| | | |
| | | commit("DEL_ALL_TAG"); |
| | |
| | | }); |
| | | }, |
| | | //根据手机号登录 |
| | | LoginByPhone({ commit }, userInfo) { |
| | | LoginByPhone({ |
| | | commit |
| | | }, userInfo) { |
| | | return new Promise((resolve) => { |
| | | loginByUsername(userInfo.phone, userInfo.code).then((res) => { |
| | | const data = res.data.data; |
| | |
| | | }); |
| | | }, |
| | | //根据第三方信息登录 |
| | | LoginBySocial({ commit }, userInfo) { |
| | | LoginBySocial({ |
| | | commit |
| | | }, userInfo) { |
| | | return new Promise((resolve) => { |
| | | loginBySocial( |
| | | userInfo.tenantId, |
| | |
| | | }); |
| | | }, |
| | | //根据单点信息登录 |
| | | LoginBySso({ commit }, userInfo) { |
| | | LoginBySso({ |
| | | commit |
| | | }, userInfo) { |
| | | return new Promise((resolve) => { |
| | | loginBySso(userInfo.state, userInfo.code).then((res) => { |
| | | const data = res.data; |
| | |
| | | }); |
| | | }, |
| | | //获取用户信息 |
| | | GetUserInfo({ commit }) { |
| | | GetUserInfo({ |
| | | commit |
| | | }) { |
| | | return new Promise((resolve, reject) => { |
| | | getUserInfo() |
| | | .then((res) => { |
| | |
| | | }); |
| | | }, |
| | | //刷新token |
| | | refreshToken({ state, commit }, userInfo) { |
| | | refreshToken({ |
| | | state, |
| | | commit |
| | | }, userInfo) { |
| | | return new Promise((resolve, reject) => { |
| | | refreshToken( |
| | | state.refreshToken, |
| | | state.tenantId, |
| | | !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id, |
| | | !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id |
| | | ) |
| | | state.refreshToken, |
| | | state.tenantId, |
| | | !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id, |
| | | !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id |
| | | ) |
| | | .then((res) => { |
| | | const data = res.data; |
| | | commit("SET_TOKEN", data.access_token); |
| | |
| | | }); |
| | | }, |
| | | // 登出 |
| | | LogOut({ commit }) { |
| | | LogOut({ |
| | | commit |
| | | }) { |
| | | return new Promise((resolve, reject) => { |
| | | logout() |
| | | .then(() => { |
| | |
| | | }); |
| | | }, |
| | | //注销session |
| | | FedLogOut({ commit }) { |
| | | FedLogOut({ |
| | | commit |
| | | }) { |
| | | return new Promise((resolve) => { |
| | | commit("SET_TOKEN", ""); |
| | | commit("SET_MENU_ALL_NULL", []); |
| | |
| | | }); |
| | | }, |
| | | //获取系统菜单 |
| | | GetMenu({ commit, dispatch }, topMenuId) { |
| | | GetMenu({ |
| | | commit, |
| | | dispatch |
| | | }, topMenuId) { |
| | | return new Promise((resolve) => { |
| | | getRoutes(topMenuId).then((res) => { |
| | | const data = res.data.data; |
| | |
| | | }); |
| | | }, |
| | | //获取系统按钮 |
| | | GetButtons({ commit }) { |
| | | GetButtons({ |
| | | commit |
| | | }) { |
| | | return new Promise((resolve) => { |
| | | getButtons().then((res) => { |
| | | const data = res.data.data; |
| | |
| | | }, |
| | | mutations: { |
| | | SET_HOMEFIRSTPAGE: (state, homeFirstPage) => { |
| | | setStore({ name: "firstPage", content: homeFirstPage }); |
| | | setStore({ |
| | | name: "firstPage", |
| | | content: homeFirstPage |
| | | }); |
| | | state.homeFirstPage = homeFirstPage; |
| | | }, |
| | | SET_HOMEFIRSTTAGPAGE: (state, homeFirstTagPage) => { |
| | |
| | | SET_TOKEN: (state, token) => { |
| | | setToken(token); |
| | | state.token = token; |
| | | setStore({ name: "token", content: state.token }); |
| | | setStore({ |
| | | name: "token", |
| | | content: state.token |
| | | }); |
| | | }, |
| | | SET_MENU_ID(state, menuId) { |
| | | state.menuId = menuId; |
| | |
| | | } |
| | | }); |
| | | state.menuAll = menu; |
| | | setStore({ name: "menuAll", content: state.menuAll }); |
| | | setStore({ |
| | | name: "menuAll", |
| | | content: state.menuAll |
| | | }); |
| | | }, |
| | | SET_MENU_ALL_NULL: (state) => { |
| | | state.menuAll = []; |
| | | setStore({ name: "menuAll", content: state.menuAll }); |
| | | setStore({ |
| | | name: "menuAll", |
| | | content: state.menuAll |
| | | }); |
| | | }, |
| | | SET_MENU: (state, menu) => { |
| | | state.menu = menu; |
| | | setStore({ name: "menu", content: state.menu }); |
| | | setStore({ |
| | | name: "menu", |
| | | content: state.menu |
| | | }); |
| | | }, |
| | | SET_REFRESH_TOKEN: (state, refreshToken) => { |
| | | setRefreshToken(refreshToken); |
| | | state.refreshToken = refreshToken; |
| | | setStore({ name: "refreshToken", content: state.refreshToken }); |
| | | setStore({ |
| | | name: "refreshToken", |
| | | content: state.refreshToken |
| | | }); |
| | | }, |
| | | SET_TENANT_ID: (state, tenantId) => { |
| | | state.tenantId = tenantId; |
| | | setStore({ name: "tenantId", content: state.tenantId }); |
| | | setStore({ |
| | | name: "tenantId", |
| | | content: state.tenantId |
| | | }); |
| | | }, |
| | | SET_USER_INFO: (state, userInfo) => { |
| | | if (validatenull(userInfo.avatar)) { |
| | | userInfo.avatar = "/img/bg/img-logo.png"; |
| | | } |
| | | state.userInfo = userInfo; |
| | | setStore({ name: "userInfo", content: state.userInfo }); |
| | | setStore({ |
| | | name: "userInfo", |
| | | content: state.userInfo |
| | | }); |
| | | }, |
| | | SET_ROLES: (state, roles) => { |
| | | state.roles = roles; |
| | |
| | | result.forEach((ele) => { |
| | | state.permission[ele] = true; |
| | | }); |
| | | setStore({ name: "permission", content: state.permission }); |
| | | setStore({ |
| | | name: "permission", |
| | | content: state.permission |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | export default user; |
| | | export default user; |
| | |
| | | * 加密处理 |
| | | */ |
| | | export const encryption = (params) => { |
| | | let { data, type, param, key } = params; |
| | | let { |
| | | data, |
| | | type, |
| | | param, |
| | | key |
| | | } = params; |
| | | let result = JSON.parse(JSON.stringify(data)); |
| | | if (type == "Base64") { |
| | | param.forEach((ele) => { |
| | |
| | | callback(); |
| | | } |
| | | |
| | | document.addEventListener("fullscreenchange", function () { |
| | | document.addEventListener("fullscreenchange", function() { |
| | | listen(); |
| | | }); |
| | | document.addEventListener("mozfullscreenchange", function () { |
| | | document.addEventListener("mozfullscreenchange", function() { |
| | | listen(); |
| | | }); |
| | | document.addEventListener("webkitfullscreenchange", function () { |
| | | document.addEventListener("webkitfullscreenchange", function() { |
| | | listen(); |
| | | }); |
| | | document.addEventListener("msfullscreenchange", function () { |
| | | document.addEventListener("msfullscreenchange", function() { |
| | | listen(); |
| | | }); |
| | | }; |
| | |
| | | const dualScreenTop = |
| | | window.screenTop !== undefined ? window.screenTop : screen.top; |
| | | |
| | | const width = window.innerWidth |
| | | ? window.innerWidth |
| | | : document.documentElement.clientWidth |
| | | ? document.documentElement.clientWidth |
| | | : screen.width; |
| | | const height = window.innerHeight |
| | | ? window.innerHeight |
| | | : document.documentElement.clientHeight |
| | | ? document.documentElement.clientHeight |
| | | : screen.height; |
| | | const width = window.innerWidth ? |
| | | window.innerWidth : |
| | | document.documentElement.clientWidth ? |
| | | document.documentElement.clientWidth : |
| | | screen.width; |
| | | const height = window.innerHeight ? |
| | | window.innerHeight : |
| | | document.documentElement.clientHeight ? |
| | | document.documentElement.clientHeight : |
| | | screen.height; |
| | | |
| | | const left = width / 2 - w / 2 + dualScreenLeft; |
| | | const top = height / 2 - h / 2 + dualScreenTop; |
| | |
| | | url, |
| | | title, |
| | | "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=" + |
| | | w + |
| | | ", height=" + |
| | | h + |
| | | ", top=" + |
| | | top + |
| | | ", left=" + |
| | | left |
| | | w + |
| | | ", height=" + |
| | | h + |
| | | ", top=" + |
| | | top + |
| | | ", left=" + |
| | | left |
| | | ); |
| | | |
| | | // Puts focus on the newWindow |
| | |
| | | xhr.open("get", path); |
| | | xhr.responseType = "blob"; |
| | | xhr.send(); |
| | | xhr.onload = function () { |
| | | xhr.onload = function() { |
| | | if (this.status === 200 || this.status === 304) { |
| | | // 如果是IE10及以上,不支持download属性,采用msSaveOrOpenBlob方法,但是IE10以下也不支持msSaveOrOpenBlob |
| | | if ("msSaveOrOpenBlob" in navigator) { |
| | |
| | | xhr.open("get", path); |
| | | xhr.responseType = "blob"; |
| | | xhr.send(); |
| | | xhr.onload = function () { |
| | | xhr.onload = function() { |
| | | if (this.status === 200 || this.status === 304) { |
| | | const fileReader = new FileReader(); |
| | | fileReader.readAsDataURL(this.response); |
| | | fileReader.onload = function () { |
| | | fileReader.onload = function() { |
| | | const a = document.createElement("a"); |
| | | a.style.display = "none"; |
| | | a.href = this.result; |
| | |
| | | link.click(); |
| | | } else if (typeof window.navigator.msSaveBlob !== "undefined") { |
| | | // IE |
| | | var blob = new Blob([data], { type: "application/force-download" }); |
| | | var blob = new Blob([data], { |
| | | type: "application/force-download" |
| | | }); |
| | | window.navigator.msSaveBlob(blob, filename); |
| | | } else { |
| | | // Firefox |
| New file |
| | |
| | | <template> |
| | | <el-dialog class="dept-user-table-dialog" width="70%" title="投票结果" modal-append-to-body="false" append-to-body="true" |
| | | :close-on-click-model="true" :visible.sync="showDialog" @close="showDialog = false"> |
| | | <div class="right"> |
| | | <avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud" v-model="form" |
| | | :page.sync="page" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"></avue-crud> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="showDialog = false">取 消</el-button> |
| | | <el-button type="primary" @click="submit">确 定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | mapGetters |
| | | } from "vuex"; |
| | | import { |
| | | getPublicDiscussTotal |
| | | } from "@/api/discuss/publicDiscuss" |
| | | |
| | | export default { |
| | | name: "DeptUserTable", |
| | | data() { |
| | | return { |
| | | showDialog: false, |
| | | form: {}, |
| | | search: {}, |
| | | selectionList: [], |
| | | query: {}, |
| | | loading: true, |
| | | platformLoading: false, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | treeDeptId: '', |
| | | treeData: [], |
| | | treeOption: { |
| | | nodeKey: 'id', |
| | | lazy: true, |
| | | treeLoad: function(node, resolve) { |
| | | const parentId = (node.level === 0) ? 0 : node.data.id |
| | | getDeptLazyTree(parentId).then(res => { |
| | | resolve(res.data.data.map(item => { |
| | | return { |
| | | ...item, |
| | | leaf: !item.hasChildren |
| | | } |
| | | })) |
| | | }) |
| | | }, |
| | | addBtn: false, |
| | | menu: false, |
| | | size: 'small', |
| | | props: { |
| | | labelText: '标题', |
| | | label: 'title', |
| | | value: 'value', |
| | | children: 'children' |
| | | } |
| | | }, |
| | | option: { |
| | | height: 'auto', |
| | | calcHeight: 120, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | | border: true, |
| | | index: true, |
| | | selection: true, |
| | | viewBtn: true, |
| | | dialogType: 'drawer', |
| | | dialogClickModal: false, |
| | | menu: false, |
| | | addBtn: false, |
| | | rowKey: "id", |
| | | reserveSelection: true, |
| | | column: [{ |
| | | label: "用户姓名", |
| | | prop: "name", |
| | | search: true, |
| | | searchSpan: 4, |
| | | display: false |
| | | }, |
| | | { |
| | | label: "电话", |
| | | prop: "phoneNumber", |
| | | slot: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | display: false |
| | | }, |
| | | { |
| | | label: "地址", |
| | | width: 560, |
| | | prop: "address", |
| | | slot: true, |
| | | display: false |
| | | }, |
| | | { |
| | | label: "楼栋", |
| | | prop: "building", |
| | | slot: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | display: false |
| | | }, |
| | | { |
| | | label: "单元", |
| | | prop: "unit", |
| | | searchSpan: 4, |
| | | slot: true, |
| | | search: true, |
| | | display: false |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | articleRange: '', |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "permission"]), |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach(ele => { |
| | | console.log(ele, "---------") |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | idsList() { |
| | | let ids = [] |
| | | this.selectionList.forEach(ele => { |
| | | ids.push({ |
| | | id: ele.id, |
| | | name: ele.name |
| | | }) |
| | | }) |
| | | return ids |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | getPublicDiscussTotal(Object.assign(params, this.query), this.treeDeptId) |
| | | .then(res => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .dept-user-table-dialog { |
| | | margin: 0 !important; |
| | | |
| | | .el-dialog { |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin: auto !important; |
| | | position: absolute; |
| | | top: 0 !important; |
| | | left: 0 !important; |
| | | right: 0 !important; |
| | | bottom: 0 !important; |
| | | //width: 1000px !important; |
| | | height: 800px !important; |
| | | |
| | | .el-dialog__body { |
| | | height: 0 !important; |
| | | flex: 1; |
| | | display: flex; |
| | | |
| | | .left { |
| | | width: 0; |
| | | flex: 2; |
| | | } |
| | | |
| | | .right { |
| | | margin-left: 10px; |
| | | flex: 9; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | |
| | | <el-button icon="el-icon-user" v-if="row.articleType == 4" :size="size" :type="type" |
| | | @click.stop="handleExport(row)"> |
| | | 导出投票结果 |
| | | 导出投票 |
| | | </el-button> |
| | | |
| | | <el-button icon="el-icon-user" v-if="row.articleType == 4 && row.publish == '1'" :size="size" :type="type" |
| | | @click.stop="lookVotingStatistics(row,'业主大会统计')"> |
| | | 查看投票 |
| | | </el-button> |
| | | |
| | | <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)"> |
| | |
| | | </deitDiscussion> |
| | | |
| | | <discussionManageChild ref="discussionManageChild" /> |
| | | |
| | | <votingStatistics ref="votingStatistics" /> |
| | | |
| | | </basic-container> |
| | | </template> |
| | |
| | | } from "vuex" |
| | | import deitDiscussion from "./components/deitDiscussion" |
| | | import discussionManageChild from "./components/discussionManageChild" |
| | | import votingStatistics from "./components/votingStatistics" |
| | | import NProgress from 'nprogress' |
| | | import 'nprogress/nprogress.css' |
| | | import Qs from "qs" |
| | |
| | | components: { |
| | | deitDiscussion, |
| | | discussionManageChild, |
| | | votingStatistics |
| | | }, |
| | | |
| | | data() { |
| | |
| | | width: 110, |
| | | label: "封面", |
| | | prop: "url", |
| | | // align:'center', |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | // hide: true, |
| | | span: 24, |
| | | }, |
| | | { |
| | |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | // { |
| | | // label: "发布时间", |
| | | // prop: "dateTime", |
| | | // type: "daterange", |
| | | // format: "yyyy-MM-dd", |
| | | // valueFormat: "yyyy-MM-dd", |
| | | // searchSpan: 6, |
| | | // searchRange: true, |
| | | // hide: true, |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: false, |
| | | // search: true, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择发布时间", |
| | | // trigger: "blur", |
| | | // }, ], |
| | | // }, |
| | | { |
| | | width: 100, |
| | | label: "发布时间", |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | lookVotingStatistics(row, name) { |
| | | this.$router.push({ |
| | | path: `/myiframe/urlPath?name=preview-${name}&src=${this.website.reportUrl}/view/965861526961414144?articleId=${row.id}` |
| | | }) |
| | | }, |
| | | |
| | | handleExport(row) { |
| | | this.$confirm("是否导出投票结果数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | |
| | | |
| | | <template slot-scope="{type,size,row }" slot="menu"> |
| | | |
| | | <el-button icon="el-icon-user" :size="size" :type="type" @click.stop="openUserPopup(row, 1)" v-if="permission.article_backblast_user"> |
| | | <el-button icon="el-icon-user" :size="size" :type="type" @click.stop="openUserPopup(row, 1)" |
| | | v-if="permission.article_backblast_user"> |
| | | 浏览人员 |
| | | </el-button> |
| | | |
| | | <el-button v-if="row.publish == '1' && permission.article_backblast_addOrDel" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)"> |
| | | <el-button v-if="row.publish == '1' && permission.article_backblast_addOrDel" icon="el-icon-close" :size="size" |
| | | :type="type" @click.stop="updateFb(row)"> |
| | | 撤销 |
| | | </el-button> |
| | | |
| | | <el-button v-if="row.publish == '0' && permission.article_backblast_addOrDel" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)"> |
| | | <el-button v-if="row.publish == '0' && permission.article_backblast_addOrDel" icon="el-icon-check" :size="size" |
| | | :type="type" @click.stop="updateFb(row)"> |
| | | 发布 |
| | | </el-button> |
| | | </template> |
| | |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "发布时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, { |
| | | overHidden: true, |
| | | label: "宣传标题", |
| | | prop: "title", |
| | |
| | | tags: true, |
| | | type: "tree", |
| | | multiple: true, |
| | | dicUrl:"/api/blade-district/district/getDistrictTree?filterFlag=1", |
| | | dataType:"string", |
| | | dicUrl: "/api/blade-district/district/getDistrictTree?filterFlag=1", |
| | | dataType: "string", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择范围", |
| | |
| | | label: "观看得分", |
| | | prop: "score", |
| | | type: "number", |
| | | align:"center", |
| | | value:2, |
| | | align: "center", |
| | | value: 2, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入观看得分", |
| | |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | search: true, |
| | | // search: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] + " 00:00:00" |
| | | params.endTime = dateRange[1] + " 23:59:59" |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot="menuLeft"> |
| | | <el-button type="warning" size="small" plain v-if="permission.household_export" icon="el-icon-download" |
| | | @click="handleExport">导出 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size,index}" slot="peopleForm"> |
| | | <el-table :data="form.backblastPubPersonEntityList" v-if="form.backblastPubPersonEntityList"> |
| | | <el-table-column width="100" property="name" label="姓名" label-class-name="workOrderStyle"></el-table-column> |
| | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | menuWidth: 100, |
| | | menuWidth: 200, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | |
| | | index: true, |
| | | viewBtn: true, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | delBtn: true, |
| | | addBtn: false, |
| | | refreshBtn: false, |
| | | searchShowBtn: false, |
| | | columnBtn: false, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | searchLabelWidth: 60, |
| | | label: "地址", |
| | | prop: "address", |
| | | // align: 'center', |
| | | minWidth: 100, |
| | | labelWidth: 120, |
| | | search: true, |
| | |
| | | row: true, |
| | | span: 24, |
| | | }, { |
| | | label: "所属社区", |
| | | prop: "communityName", |
| | | align: 'center', |
| | | labelWidth: 120, |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 96, |
| | | width: 160, |
| | | }, { |
| | | label: "小区名称", |
| | | prop: "aoiName", |
| | | labelWidth: 120, |
| | | overHidden: true, |
| | | }, { |
| | | label: "户室信息", |
| | | prop: "houseName", |
| | | labelWidth: 120, |
| | | overHidden: true, |
| | | }, { |
| | | label: "宣防内容", |
| | | prop: "pubContent", |
| | | labelWidth: 120, |
| | | // align: 'center', |
| | | type: "textarea", |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | }, |
| | | |
| | | { |
| | | label: "是否下载国家反诈app", |
| | | prop: "isFzApp", |
| | | labelWidth: 120, |
| | | // align: 'center', |
| | | type: "select", |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | hide: true, |
| | | dicData: [{ |
| | |
| | | label: "是否打开预警共能", |
| | | prop: "isOpenAlarm", |
| | | labelWidth: 120, |
| | | // align: 'center', |
| | | type: "select", |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | hide: true, |
| | | dicData: [{ |
| | |
| | | { |
| | | label: "宣防佐证照片", |
| | | prop: "pubUrls", |
| | | // align: 'center', |
| | | fileType: 'img', |
| | | labelWidth: 120, |
| | | type: "upload", |
| | |
| | | row: true, |
| | | span: 24, |
| | | }, { |
| | | label: "时间", |
| | | label: "宣防时间", |
| | | prop: "createTime", |
| | | align: 'center', |
| | | labelWidth: 120, |
| | | width: 156, |
| | | row: true, |
| | | }, { |
| | | label: "民警姓名", |
| | | prop: "policeman", |
| | | align: 'center', |
| | | // labelWidth: 120, |
| | | search: true, |
| | | searchSpan: 4, |
| | | // searchLabelWidth: 96, |
| | | width: 110, |
| | | searchPlaceholder: '请输入民警姓名' |
| | | }, |
| | | { |
| | | label: "民警联系方式", |
| | | label: "宣防人姓名", |
| | | prop: "policeman", |
| | | align: 'center', |
| | | labelWidth: 120, |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 96, |
| | | width: 110, |
| | | searchPlaceholder: '请输入宣防人姓名' |
| | | }, |
| | | { |
| | | label: "宣防人电话", |
| | | prop: "policemanPhone", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 120, |
| | | search: true, |
| | | searchLabelWidth: 110, |
| | | searchLabelWidth: 120, |
| | | searchSpan: 4, |
| | | width: 120 |
| | | }, |
| | | { |
| | | label: "所属街道", |
| | | prop: "townName", |
| | | align: 'center', |
| | | parent: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 96, |
| | | labelWidth: 120, |
| | | width: 156, |
| | | searchPlaceholder: '请输入街道' |
| | | }, { |
| | | prop: "townName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | searchLabelWidth: 40, |
| | | label: "宣防单位", |
| | | prop: "deptName", |
| | | align: 'center', |
| | |
| | | searchSpan: 4, |
| | | searchLabelWidth: 96, |
| | | searchPlaceholder: '请输入宣防单位', |
| | | // hide: true |
| | | }, |
| | | { |
| | | label: "宣防对象", |
| | |
| | | searchSpan: 4, |
| | | searchLabelWidth: 96, |
| | | searchPlaceholder: '请输入辖区派出所', |
| | | // hide: true, |
| | | hide: true, |
| | | span: 24, |
| | | slot: true, |
| | | formslot: true |
| | | }, { |
| | | label: "宣防时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 6, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择事发时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | handleExport() { |
| | | this.$confirm("是否导出档案管理数据?", "提示", { |
| | | this.$confirm("是否导出入户宣传数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | |
| | | data.isNine = 1 |
| | | data = Qs.stringify(data) |
| | | exportBlob( |
| | | `/api/blade-place/place/exportNineType?${this.website.tokenHeader}=${getToken()}&` + data |
| | | `/api/blade-backblastPubRecord/backblastPubRecord/export?${this.website.tokenHeader}=${getToken()}&` + |
| | | data |
| | | ).then(res => { |
| | | console.log('exportBlob', res) |
| | | downloadXls(res.data, `档案管理${dateNow()}.xlsx`) |
| | | downloadXls(res.data, `入户宣传${dateNow()}.xlsx`) |
| | | NProgress.done() |
| | | }) |
| | | }) |
| | |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | row.isDeleted = 1 |
| | | return removeTask(row) |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | |
| | | }, |
| | | |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | if (dateTime) { |
| | | params['startTime'] = dateTime[0] |
| | | params['endTime'] = dateTime[1] |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data |
| | |
| | | .workOrderStyle { |
| | | font-weight: normal; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | menuWidth: 100, |
| | | menuWidth: 220, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | // menu: false, |
| | | border: true, |
| | | index: true, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | editBtn: true, |
| | | delBtn: true, |
| | | addBtn: false, |
| | | viewBtn: true, |
| | | refreshBtn: false, |
| | |
| | | columnBtn: false, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "创建时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, { |
| | | label: "地址", |
| | | prop: "address", |
| | | // align: 'center', |
| | |
| | | dataType: "string", |
| | | width: 110, |
| | | }, { |
| | | label: "时间", |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | labelWidth: 120, |
| | | align: 'center', |
| | |
| | | labelWidth: 120, |
| | | width: 156, |
| | | searchPlaceholder: '请输入地区' |
| | | }, { |
| | | }, |
| | | // { |
| | | // label: "辖区派出所", |
| | | // prop: "pcsName", |
| | | // align: 'center', |
| | | // search: true, |
| | | // searchSpan: 4, |
| | | // labelWidth: 120, |
| | | // searchLabelWidth: 96, |
| | | // searchPlaceholder: '请输入辖区派出所' |
| | | // }, |
| | | { |
| | | searchLabelWidth: 90, |
| | | label: "辖区派出所", |
| | | prop: "pcsName", |
| | | align: 'center', |
| | | search: true, |
| | | searchSpan: 4, |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchPlaceholder: '请输入辖区派出所' |
| | | }, { |
| | | // parent: false, |
| | | prop: "pcsName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/dept/treeByDept?deptId=1727974759086493697", |
| | | props: { |
| | | label: "title", |
| | | value: "title" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择辖区派出所", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "宣防单位", |
| | | prop: "deptName", |
| | | align: 'center', |
| | |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | // let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | // if (row.smallLabel != '') { |
| | | // label = label + ',' + row.smallLabel |
| | | // } |
| | | |
| | | delete row.smallLabel |
| | | // delete row.smallLabel |
| | | |
| | | add({ |
| | | ...row, |
| | |
| | | }, |
| | | |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | if (row.sceUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | var split = row.sceUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | row.sceUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | // let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | // if (row.smallLabel != '') { |
| | | // label = label + ',' + row.smallLabel |
| | | // } |
| | | |
| | | delete row.smallLabel |
| | | // delete row.smallLabel |
| | | |
| | | update({ |
| | | ...row, |
| | | label |
| | | }).then( |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | |
| | | }) |
| | | .then(() => { |
| | | row.isDeleted = 1 |
| | | return removeTask(row) |
| | | return update(row) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] |
| | | params.endTime = dateRange[1] |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <!-- 巡查记录 --> |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 |
| | | 除 |
| | | </el-button> |
| | | </template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 |
| | | 除 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{row}" slot="location"> |
| | | <span v-text="showLocation(row.location)"></span> |
| | | </template> |
| | | <template slot="menuLeft"> |
| | | <el-button type="warning" size="small" plain v-if="permission.household_export" icon="el-icon-download" |
| | | @click="handleExport">导出 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{row}" slot="longitude"> |
| | | <span v-text="decimalProcessing(row.longitude)"></span> |
| | | </template> |
| | | <template slot-scope="{row}" slot="location"> |
| | | <span v-text="showLocation(row.location)"></span> |
| | | </template> |
| | | |
| | | <template slot-scope="{row}" slot="latitude"> |
| | | <span v-text="decimalProcessing(row.latitude)"></span> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | <template slot-scope="{row}" slot="longitude"> |
| | | <span v-text="decimalProcessing(row.longitude)"></span> |
| | | </template> |
| | | |
| | | <template slot-scope="{row}" slot="latitude"> |
| | | <span v-text="decimalProcessing(row.latitude)"></span> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList, remove, update, add, getGridPatrolRecord } from "@/api/grid/gridPatrolRecord" |
| | | import { mapGetters } from "vuex" |
| | | import website from '@/config/website' |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getGridPatrolRecord |
| | | } from "@/api/grid/gridPatrolRecord" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | import { |
| | | exportBlob |
| | | } from "@/api/common" |
| | | import NProgress from 'nprogress' |
| | | import 'nprogress/nprogress.css' |
| | | import Qs from "qs" |
| | | import { |
| | | getToken |
| | | } from '@/util/auth' |
| | | import { |
| | | downloadXls |
| | | } from "@/util/util" |
| | | import { |
| | | dateNow |
| | | } from "@/util/date" |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | export default { |
| | | data () { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | width: 96, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "所属街道", |
| | | prop: "townStreetName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | { |
| | | label: "巡查标题", |
| | | prop: "name", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入巡查标题", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "巡查内容", |
| | | prop: "context", |
| | | type: "textarea", |
| | | span: 24, |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | slot: true, |
| | | label: "巡查地址", |
| | | prop: "location", |
| | | type: 'map', |
| | | dataType: "string", |
| | | span: 24, |
| | | value: [117.966460, 28.431002, ""], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择巡查地址", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | { |
| | | width: 96, |
| | | slot: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "经度", |
| | | prop: "longitude", |
| | | }, |
| | | |
| | | { |
| | | width: 96, |
| | | slot: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "纬度", |
| | | prop: "latitude", |
| | | }, |
| | | |
| | | { |
| | | width: 110, |
| | | label: "巡查图片", |
| | | prop: "url", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "巡查时间", |
| | | prop: "patrolTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入巡查时间", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | } |
| | | ], |
| | | { |
| | | width: 160, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | data: [], |
| | | } |
| | | { |
| | | width: 96, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 100, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "巡查人名称", |
| | | prop: "userName", |
| | | search: true, |
| | | }, |
| | | { |
| | | label: "巡查标题", |
| | | prop: "name", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入巡查标题", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "巡查内容", |
| | | prop: "context", |
| | | type: "textarea", |
| | | span: 24, |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | slot: true, |
| | | label: "巡查地址", |
| | | prop: "location", |
| | | type: 'map', |
| | | dataType: "string", |
| | | span: 24, |
| | | value: [117.966460, 28.431002, ""], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择巡查地址", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | width: 96, |
| | | slot: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "经度", |
| | | prop: "longitude", |
| | | }, |
| | | |
| | | { |
| | | width: 96, |
| | | slot: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "纬度", |
| | | prop: "latitude", |
| | | }, |
| | | |
| | | { |
| | | width: 110, |
| | | label: "巡查图片", |
| | | prop: "url", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "巡查时间", |
| | | prop: "patrolTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入巡查时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | } |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: { |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridPatrolRecord_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridPatrolRecord_view, true), |
| | | delBtn: this.vaildData(this.permission.gridPatrolRecord_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridPatrolRecord_edit, true), |
| | | } |
| | | }, |
| | | |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showLocation () { |
| | | return (data) => { |
| | | if (data != null && data.indexOf(',') != -1) { |
| | | data = data.split(',') |
| | | |
| | | return data[2] |
| | | } else { |
| | | return data || '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | decimalProcessing () { |
| | | return (data) => { |
| | | if (data != null) { |
| | | return Number(data).toFixed(6) |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridPatrolRecord_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridPatrolRecord_view, true), |
| | | delBtn: this.vaildData(this.permission.gridPatrolRecord_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridPatrolRecord_edit, true), |
| | | } |
| | | }, |
| | | methods: { |
| | | locationDispose (data) { |
| | | }, |
| | | |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showLocation() { |
| | | return (data) => { |
| | | if (data != null && data.indexOf(',') != -1) { |
| | | data = data.split(',') |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2] |
| | | } |
| | | }, |
| | | |
| | | rowSave (row, done, loading) { |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | add({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowUpdate (row, index, done, loading) { |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | update({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen (done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getGridPatrolRecord(this.form.id).then((res) => { |
| | | this.form = res.data.data |
| | | |
| | | this.form.location = [this.form.longitude, this.form.latitude, this.form.location].join(',') |
| | | |
| | | if (this.form.url.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.url = urls.join(",") |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange (currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | const { dateTime } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | } |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.url.length > 0) { |
| | | var urls = [] |
| | | var names = item.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.url = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }).catch(err => { |
| | | setTimeout(() => { |
| | | this.loading = false |
| | | }, 1000) |
| | | }) |
| | | return data[2] |
| | | } else { |
| | | return data || '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | decimalProcessing() { |
| | | return (data) => { |
| | | if (data != null) { |
| | | return Number(data).toFixed(6) |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | methods: { |
| | | |
| | | handleExport() { |
| | | this.$confirm("是否导出网格巡查记录数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | NProgress.start() |
| | | var data = { |
| | | ...this.query |
| | | } |
| | | data.isNine = 1 |
| | | data = Qs.stringify(data) |
| | | exportBlob( |
| | | `/api/blade-gridPatrolRecord/gridPatrolRecord/export?${this.website.tokenHeader}=${getToken()}&` + |
| | | data |
| | | ).then(res => { |
| | | console.log('exportBlob', res) |
| | | downloadXls(res.data, `网格巡查记录${dateNow()}.xlsx`) |
| | | NProgress.done() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2] |
| | | } |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | add({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | update({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getGridPatrolRecord(this.form.id).then((res) => { |
| | | this.form = res.data.data |
| | | |
| | | this.form.location = [this.form.longitude, this.form.latitude, this.form.location].join(',') |
| | | |
| | | if (this.form.url.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.url = urls.join(",") |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | } |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.url.length > 0) { |
| | | var urls = [] |
| | | var names = item.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.url = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }).catch(err => { |
| | | setTimeout(() => { |
| | | this.loading = false |
| | | }, 1000) |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | } |
| | | </style> |
| | |
| | | <!-- 走访日志 --> |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
| | | :permission="permissionList" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | </avue-crud> |
| | | </basic-container> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
| | | :permission="permissionList" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList } from "@/api/punch_card" |
| | | import { mapGetters } from "vuex" |
| | | import website from '@/config/website' |
| | | import { |
| | | getList |
| | | } from "@/api/punch_card" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | |
| | | export default { |
| | | data () { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | |
| | | menu: false, |
| | | addBtn: false, |
| | | border: true, |
| | | index: true, |
| | | selection: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | //stripe:true, |
| | | viewBtn: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | header: false, |
| | | column: [{ |
| | | width: 96, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "所属街道", |
| | | prop: "townStreetName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | |
| | | menu: false, |
| | | addBtn: false, |
| | | border: true, |
| | | index: true, |
| | | selection: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | //stripe:true, |
| | | viewBtn: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | header:false, |
| | | column: [ |
| | | { |
| | | width: 110, |
| | | label: "打卡人员", |
| | | prop: "name", |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 76, |
| | | }, |
| | | { |
| | | label: "打卡时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 5, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择打卡时间", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "打卡时间", |
| | | prop: "createTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入走访时间", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "工作内容", |
| | | prop: "workContent", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "经度", |
| | | prop: "lng", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "纬度", |
| | | prop: "lat", |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "打卡地址", |
| | | prop: "address", |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "打卡图片", |
| | | prop: "img", |
| | | type: "upload", |
| | | labelWidth: 120, |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | ], |
| | | { |
| | | width: 160, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | data: [], |
| | | } |
| | | { |
| | | width: 110, |
| | | label: "打卡人员", |
| | | prop: "name", |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 76, |
| | | }, |
| | | { |
| | | label: "打卡时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 5, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择打卡时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "打卡时间", |
| | | prop: "createTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入走访时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "工作内容", |
| | | prop: "workContent", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "经度", |
| | | prop: "lng", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "纬度", |
| | | prop: "lat", |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "打卡地址", |
| | | prop: "address", |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "打卡图片", |
| | | prop: "img", |
| | | type: "upload", |
| | | labelWidth: 120, |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: { |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridWorkLog_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridWorkLog_view, true), |
| | | delBtn: this.vaildData(this.permission.gridWorkLog_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridWorkLog_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridWorkLog_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridWorkLog_view, true), |
| | | delBtn: this.vaildData(this.permission.gridWorkLog_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridWorkLog_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | }, |
| | | methods: { |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | |
| | | currentChange (currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | this.loading = true |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | const { dateTime } = this.query |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | |
| | | if (dateTime) { |
| | | this.query = { |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | } |
| | | if (dateTime) { |
| | | this.query = { |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | } |
| | | } |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records.map(item => { |
| | | if (item.img && item.img.length > 0) { |
| | | var urls = [] |
| | | var names = item.img.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.img = urls.join(",") |
| | | } |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records.map(item => { |
| | | if (item.img && item.img.length > 0) { |
| | | var urls = [] |
| | | var names = item.img.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.img = urls.join(",") |
| | | } |
| | | item.lat = Number(item.lat).toFixed(6) |
| | | item.lng = Number(item.lng).toFixed(6) |
| | | |
| | | item.lat = Number(item.lat).toFixed(6) |
| | | item.lng = Number(item.lng).toFixed(6) |
| | | return item |
| | | }) |
| | | |
| | | return item |
| | | }) |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | } |
| | | </style> |
| New file |
| | |
| | | <!-- 走访日志 --> |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
| | | :permission="permissionList" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getList |
| | | } from "@/api/punch_card" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | |
| | | menu: false, |
| | | addBtn: false, |
| | | border: true, |
| | | index: true, |
| | | selection: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | //stripe:true, |
| | | viewBtn: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | header: false, |
| | | column: [{ |
| | | width: 96, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: "所属街道", |
| | | prop: "townStreetName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 160, |
| | | searchLabelWidth: 80, |
| | | searchSpan: 4, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiName", |
| | | search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "打卡人员", |
| | | prop: "name", |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 76, |
| | | }, |
| | | { |
| | | label: "打卡时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 5, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择打卡时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "打卡时间", |
| | | prop: "createTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入走访时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "工作内容", |
| | | prop: "workContent", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "经度", |
| | | prop: "lng", |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "纬度", |
| | | prop: "lat", |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "打卡地址", |
| | | prop: "address", |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "打卡图片", |
| | | prop: "img", |
| | | type: "upload", |
| | | labelWidth: 120, |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridWorkLog_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridWorkLog_view, true), |
| | | delBtn: this.vaildData(this.permission.gridWorkLog_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridWorkLog_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | }, |
| | | methods: { |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | |
| | | if (dateTime) { |
| | | this.query = { |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | } |
| | | } |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records.map(item => { |
| | | if (item.img && item.img.length > 0) { |
| | | var urls = [] |
| | | var names = item.img.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.img = urls.join(",") |
| | | } |
| | | |
| | | item.lat = Number(item.lat).toFixed(6) |
| | | item.lng = Number(item.lng).toFixed(6) |
| | | |
| | | return item |
| | | }) |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | |
| | | <template slot="menuLeft"> |
| | | <!-- <el-button type="warning" size="small" plain icon="el-icon-download" @click="handleOrg('Y')">主办单位 |
| | | </el-button> |
| | | <el-button type="success" size="small" plain icon="el-icon-upload2" @click="handleOrg('N')">调度单位 |
| | | </el-button> --> |
| | | |
| | | <el-radio-group size="mini" @change="handleOrg" v-model="radio1"> |
| | | <el-radio-button label="主办单位"></el-radio-button> |
| | | <el-radio-button label="调度单位"></el-radio-button> |
| | | </el-radio-group> |
| | | |
| | | </template> |
| | | |
| | | </avue-crud> |
| | | |
| | | </basic-container> |
| | |
| | | remove, |
| | | update, |
| | | add, |
| | | getDetail |
| | | getDetail, |
| | | getCount, |
| | | synchronizeData |
| | | } from "@/api/task/eCallEventTwo" |
| | | import { |
| | | add as circleAdd, |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | radio1: '主办单位', |
| | | editPopup: false, |
| | | form: {}, |
| | | editForm: {}, |
| | | query: {}, |
| | | query: { |
| | | tagMain: 'Y', |
| | | mainFlag: 1 |
| | | }, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | |
| | | shareCircleRow: {}, |
| | | option: { |
| | | labelWidth: 130, |
| | | menu: false, |
| | | // searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 310, |
| | | delBtn: false, |
| | | editBtn: false, |
| | | addBtn: false, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | // index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | // selection: true, |
| | | // excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "工单号", |
| | | prop: "orderCode", |
| | | label: "单位名称", |
| | | prop: "orgName", |
| | | search: true, |
| | | overHidden: true, |
| | | |
| | | }, |
| | | { |
| | | label: "时间区间", |
| | | prop: "dateTime", |
| | | type: "datetimerange", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | searchSpan: 6, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择时间区间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "工单数", |
| | | prop: "orderNumber", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | width: 160, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | { |
| | | hide: true, |
| | | label: "派发单数", |
| | | prop: "dispatchNumber", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | // overHidden: true, |
| | | // display: false, |
| | | searchLabelWidth: 76, |
| | | // addDisplay: false, |
| | | }, |
| | | |
| | | { |
| | | label: "办理单数(率)", |
| | | prop: "handRate", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | |
| | | { |
| | | label: "办结单数(率)", |
| | | prop: "checkRate", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | |
| | | { |
| | | label: "答复单数(率)", |
| | | prop: "doneRate", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | |
| | | { |
| | | label: "回访单数(率)", |
| | | prop: "respRate", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | { |
| | | label: "核实单数(率)", |
| | | prop: "reviewRate", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | { |
| | | label: "督办单数", |
| | | prop: "superviseNumber", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | overHidden: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | ], |
| | | }, |
| | | data: [], |
| | | tagMain: 'Y' |
| | | } |
| | | }, |
| | | |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | handleOrg(tagMain) { |
| | | console.log("***************" + tagMain) |
| | | this.page.currentPage = 1 |
| | | this.data = [] |
| | | if (tagMain === '主办单位') { |
| | | this.query.tagMain = "Y" |
| | | this.query.mainFlag = 1 |
| | | let dispatchNumberColumn = this.findObject(this.option.column, 'dispatchNumber') |
| | | dispatchNumberColumn.hide = true |
| | | } else { |
| | | let dispatchNumberColumn = this.findObject(this.option.column, 'dispatchNumber') |
| | | dispatchNumberColumn.hide = false |
| | | this.query.tagMain = "N" |
| | | this.query.mainFlag = 2 |
| | | } |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | openMap() { |
| | | this.$refs.avueInputMap.box = true |
| | | console.log(this.$refs.avueInputMap) |
| | |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | console.log("777777777777777777777" + JSON.stringify(row)) |
| | | |
| | | // let local = this.locationDispose(row.sceneAddr) |
| | | // row.sceneAddr = local.sceneAddr |
| | | // row.sceneGeoLat = local.latitude |
| | | // row.sceneGeoLng = local.longitude |
| | | console.log("88888888888888888888888888" + JSON.stringify(row)) |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | Object.assign(this.query, params) |
| | | this.page.currentPage = 1 |
| | | console.log("*******params**********" + JSON.stringify(params)) |
| | | if (this.query.mainFlag == 1) { |
| | | params.sinkOrgName = params.orgName |
| | | } else { |
| | | params.subjectOrgName = params.orgName |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | ...this.query, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | getCount(this.page.currentPage, this.page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | // this.$set(item, 'phoneflag', false) |
| | | // if (item.imageUrls) { |
| | | // if (item.imageUrls.length > 0) { |
| | | // var urls = [] |
| | | // var names = item.imageUrls.split(",") |
| | | // names.forEach(name => { |
| | | // urls.push(website.minioUrl + name) |
| | | // }) |
| | | // item.imageUrls = urls.join(",") |
| | | // } |
| | | // } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | // this.selectionClear() |
| | | }) |
| | | } |
| | | }, |
| | | getsynchronizeData() { |
| | | synchronizeData().then((res) => { |
| | | |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | </el-button> |
| | | </template> |
| | | |
| | | <!-- <template slot="menu" slot-scope="{row, size, index}"> |
| | | <template slot="menu" slot-scope="{row, size, index}"> |
| | | <el-button size="small" type="text" icon="el-icon-share" plain @click="share(row)">分享 |
| | | </el-button> |
| | | </template> --> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="phone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')" |
| | |
| | | remove, |
| | | update, |
| | | add, |
| | | getDetail |
| | | getDetail, |
| | | synchronizeData |
| | | } from "@/api/task/eCallEventTwo" |
| | | import { |
| | | add as circleAdd, |
| | |
| | | getList as getHouseList, |
| | | getDetatil as getHouseDetail |
| | | } from "@/api/doorplateAddress/doorplateAddress.js" |
| | | import { |
| | | getDept |
| | | } from "@/api/system/dept" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | |
| | | // searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 310, |
| | | menuWidth: 160, |
| | | delBtn: false, |
| | | editBtn: false, |
| | | |
| | |
| | | column: [{ |
| | | label: "工单号", |
| | | prop: "orderCode", |
| | | viewDisplay: false, |
| | | span: 12, |
| | | searchSpan: 4, |
| | | width: 160, |
| | |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | addDisplay: false, |
| | | }, |
| | | { |
| | | width: 156, |
| | | label: "诉求主题", |
| | | prop: "issueTitle", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 160, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求主题", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "诉求来源", |
| | | prop: "issueOrigin", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "热线", |
| | | value: 0 |
| | | }, { |
| | | label: "公安110", |
| | | value: 1 |
| | | }, { |
| | | label: "微信", |
| | | value: 2 |
| | | }, { |
| | | label: "微博", |
| | | value: 3 |
| | | }], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求来源", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "诉求内容", |
| | | parent: false, |
| | | prop: "issueContent", |
| | | search: false, |
| | | width: 160, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求内容", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | label: "诉求用户类别", |
| | | prop: "applicantType", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "个人", |
| | | value: "0" |
| | | }, { |
| | | label: "企业", |
| | | value: "1" |
| | | }], |
| | | }, |
| | | { |
| | | width: 110, |
| | |
| | | slot: true |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "现场联系电话", |
| | | width: 120, |
| | | label: "诉求人联系电话", |
| | | prop: "applicantPhone", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入现场联系电话", |
| | | message: "请输入诉求人联系电话", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "诉求来源", |
| | | prop: "issueOrigin", |
| | | disabled: true, |
| | | span: 12, |
| | | searchSpan: 4, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=ehjb_org", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求来源", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 156, |
| | | label: "诉求标题", |
| | | prop: "issueTitle", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 160, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求标题", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | label: "诉求用户类别", |
| | | prop: "applicantType", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "个人", |
| | | value: "0" |
| | | }, { |
| | | label: "企业", |
| | | value: "1" |
| | | }], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入诉求用户类别", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | label: "办结内容", |
| | | parent: false, |
| | | prop: "issueContent", |
| | | search: false, |
| | | type: 'textarea', |
| | | width: 160, |
| | | span: 24, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择办结内容", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "事发地址", |
| | |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | prop: "sceneGeo", |
| | | dataType: "string", |
| | |
| | | // value: [117.966460, 28.431002, ""] |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "事发地点-经度", |
| | | prop: "sceneGeoLng", |
| | | disabled: true, |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入事发地点-经度", |
| | |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "事发地点-纬度", |
| | | prop: "sceneGeoLat", |
| | | disabled: true, |
| | |
| | | value: "code" |
| | | }, |
| | | }, |
| | | // { |
| | | // label: "事发场所", |
| | | // width: 100, |
| | | // prop: "scenePlace", |
| | | // }, |
| | | { |
| | | label: "事发场所", |
| | | width: 100, |
| | | prop: "scenePlace", |
| | | label: "受理时间", |
| | | prop: "createTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | // labelWidth: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入受理时间", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | label: "归口类型", |
| | | prop: "issueClazz", |
| | | type: "tree", |
| | | // type: "tree", |
| | | type: "cascader", |
| | | dicUrl: "/api/blade-issueClazz/issueClazz/tree", |
| | | // showAllLevels: false, |
| | | props: { |
| | | label: "title", |
| | | value: "id" |
| | |
| | | trigger: "blur", |
| | | }, ], |
| | | span: 12, |
| | | filterable: true, |
| | | }, |
| | | { |
| | | label: "承办单位", |
| | | prop: "acptOrgName", |
| | | // type: "tree", |
| | | // type: "cascader", |
| | | // dicUrl: "/api/blade-issueClazz/issueClazz/tree", |
| | | // props: { |
| | | // label: "title", |
| | | // value: "id" |
| | | // }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择归口类型", |
| | | trigger: "blur", |
| | | }, ], |
| | | span: 12, |
| | | }, |
| | | |
| | | { |
| | | label: "紧急程度", |
| | | prop: "issueLevel", |
| | | type: "select", |
| | | value: "1", |
| | | dicData: [{ |
| | | label: "一般", |
| | | value: "0" |
| | | }, { |
| | | label: "即办", |
| | | value: "1" |
| | | }, { |
| | | label: "重大", |
| | | value: "2" |
| | | }, { |
| | | label: "紧急重大", |
| | | value: "3" |
| | | }], |
| | | }, |
| | | { |
| | | label: "是否保密", |
| | | prop: "is_secret", |
| | | type: "select", |
| | | value: "1", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "0" |
| | | }, { |
| | | label: "是", |
| | | value: "1" |
| | | }], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择是否保密", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "诉求类型", |
| | | prop: "issue_type", |
| | | // disabled: true, |
| | | // addDisplay: false, |
| | | type: "select", |
| | | value: "2", |
| | | dicData: [{ |
| | | label: "咨询", |
| | | value: "0" |
| | | }, { |
| | | label: "投诉", |
| | | value: "1" |
| | | }, { |
| | | label: "求助", |
| | | value: "2" |
| | | }, { |
| | | label: "举报", |
| | | value: "3" |
| | | }, { |
| | | label: "建议", |
| | | value: "4" |
| | | }, { |
| | | label: "表扬", |
| | | value: "5" |
| | | }, { |
| | | label: "无效投诉", |
| | | value: "6" |
| | | }], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择诉求类型", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "工单附件", |
| | |
| | | label: "工单状态", |
| | | prop: "status", |
| | | disabled: true, |
| | | addDisplay: false, |
| | | type: "select", |
| | | value: "0", |
| | | value: "2", |
| | | dicData: [{ |
| | | label: "受理", |
| | | value: "0" |
| | | }, { |
| | | label: "处理中", |
| | | value: "1" |
| | | }, { |
| | | label: "已归档", |
| | | label: "处理中", |
| | | value: "2" |
| | | }], |
| | | }, |
| | | { |
| | | label: "已反馈", |
| | | prop: "tagDoing", |
| | | type: "select", |
| | | value: "Y", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "N" |
| | | }, { |
| | | label: "是", |
| | | value: "Y" |
| | | label: "已归档", |
| | | value: "3" |
| | | }], |
| | | }, |
| | | { |
| | | label: "已答复", |
| | | prop: "tagResp", |
| | | value: "Y", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "N" |
| | | }, { |
| | | label: "是", |
| | | value: "Y" |
| | | }], |
| | | }, |
| | | { |
| | | label: "已办结", |
| | | prop: "tagDone", |
| | | value: "Y", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "N" |
| | | }, { |
| | | label: "是", |
| | | value: "Y" |
| | | }], |
| | | }, |
| | | { |
| | | label: "已回访", |
| | | prop: "tagCheck", |
| | | value: "Y", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "N" |
| | | }, { |
| | | label: "是", |
| | | value: "Y" |
| | | }], |
| | | }, |
| | | { |
| | | label: "核实/督办", |
| | | prop: "tagRedo", |
| | | value: "N1", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "否", |
| | | value: "N1" |
| | | }, { |
| | | label: "是", |
| | | value: "N2" |
| | | }], |
| | | }, |
| | | |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | dept: {}, |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | getDeptInfo() { |
| | | getDept(this.userInfo.dept_id).then(res => { |
| | | this.dept = res.data.data |
| | | this.form.issueOrigin = res.data.data.sort |
| | | // console.log("*********res.data.data*************" + JSON.stringify(res.data.data)) |
| | | }) |
| | | }, |
| | | openMap() { |
| | | this.$refs.avueInputMap.box = true |
| | | console.log(this.$refs.avueInputMap) |
| | |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.orderId) |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | |
| | | param.houseCode = this.shareCircleRow.addressCode |
| | | param.circleImages = this.shareCircleRow.imageUrls |
| | | param.communityCode = this.shareCircleRow.communityCode |
| | | param.circleText = this.shareCircleRow.remark |
| | | param.evenType = 2 |
| | | param.circleText = "标题:" + this.shareCircleRow.issueTitle + " 内容: " + this.shareCircleRow.issueContent |
| | | param.evenType = 3 |
| | | param.eventId = this.shareCircleRow.id |
| | | circleAdd(param).then( |
| | | () => { |
| | |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | // this.getDeptInfo(); |
| | | |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | // this.$set(item, 'phoneflag', false) |
| | | // if (item.imageUrls) { |
| | | // if (item.imageUrls.length > 0) { |
| | | // var urls = [] |
| | | // var names = item.imageUrls.split(",") |
| | | // names.forEach(name => { |
| | | // urls.push(website.minioUrl + name) |
| | | // }) |
| | | // item.imageUrls = urls.join(",") |
| | | // } |
| | | // } |
| | | }) |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | |
| | | // synchronizeData().then((res) => { |
| | | |
| | | // }) |
| | | } |
| | | }, |
| | | } |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.community_delete" |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.community_delete" @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getCommunity |
| | | } from "@/api/community/index" |
| | | import { |
| | | } from "@/api/community/index" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | export default { |
| | | data () { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | // width: 156, |
| | | overHidden: true, |
| | | label: "社区名称", |
| | | prop: "name", |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入社区名称", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | // width: 156, |
| | | overHidden: true, |
| | | label: "社区名称", |
| | | prop: "name", |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入社区名称", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | // width: 110, |
| | | overHidden: true, |
| | | label: "社区编号", |
| | | prop: "code", |
| | | searchSpan: 4, |
| | | search: true, |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入社区编号", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | |
| | | { |
| | | // width: 110, |
| | | label: "所属街道", |
| | | parent: false, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "townName", |
| | | search: true, |
| | | searchSpan: 4 |
| | | }, |
| | | |
| | | { |
| | | label: "所属街道", |
| | | hide: true, |
| | | parent: false, |
| | | prop: "streetCode", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | |
| | | // { |
| | | // width: 110, |
| | | // label: "社区民警", |
| | | // prop: "resPoliceUserId", |
| | | // type: "tree", |
| | | // multiple: true, |
| | | // dicUrl: "/api/blade-system/user/getUserListByParam?roleName=民警", |
| | | // props: { |
| | | // label: "name", |
| | | // value: "id" |
| | | // }, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择社区民警", |
| | | // trigger: "blur", |
| | | // },], |
| | | // }, |
| | | { |
| | | // width: 110, |
| | | label: "社区图片", |
| | | prop: "picUrl", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "地址", |
| | | prop: "address", |
| | | span: 24, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输入地址", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "社区简介", |
| | | prop: "remark", |
| | | component: "AvueUeditor", |
| | | options: { |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | props: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | }, |
| | | hide: true, |
| | | minRows: 6, |
| | | span: 24, |
| | | }, |
| | | |
| | | ], |
| | | { |
| | | // width: 110, |
| | | overHidden: true, |
| | | label: "社区编号", |
| | | prop: "code", |
| | | searchSpan: 4, |
| | | search: true, |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入社区编号", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | data: [], |
| | | } |
| | | |
| | | { |
| | | // width: 110, |
| | | label: "所属街道", |
| | | parent: false, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "townName", |
| | | search: true, |
| | | searchSpan: 4 |
| | | }, |
| | | |
| | | { |
| | | label: "所属街道", |
| | | hide: true, |
| | | parent: false, |
| | | prop: "streetCode", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | // { |
| | | // width: 110, |
| | | // label: "社区民警", |
| | | // prop: "resPoliceUserId", |
| | | // type: "tree", |
| | | // multiple: true, |
| | | // dicUrl: "/api/blade-system/user/getUserListByParam?roleName=民警", |
| | | // props: { |
| | | // label: "name", |
| | | // value: "id" |
| | | // }, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择社区民警", |
| | | // trigger: "blur", |
| | | // },], |
| | | // }, |
| | | { |
| | | // width: 110, |
| | | label: "社区图片", |
| | | prop: "picUrl", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "地址", |
| | | prop: "address", |
| | | span: 24, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输入地址", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "社区简介", |
| | | prop: "remark", |
| | | component: "AvueUeditor", |
| | | options: { |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | props: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | }, |
| | | hide: true, |
| | | minRows: 6, |
| | | span: 24, |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.community_add, true), |
| | | viewBtn: this.vaildData(this.permission.community_view, true), |
| | | delBtn: this.vaildData(this.permission.community_delete, true), |
| | | editBtn: this.vaildData(this.permission.community_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.community_add, true), |
| | | viewBtn: this.vaildData(this.permission.community_view, true), |
| | | delBtn: this.vaildData(this.permission.community_delete, true), |
| | | editBtn: this.vaildData(this.permission.community_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | }, |
| | | methods: { |
| | | rowSave (row, done, loading) { |
| | | if (row.picUrl.length > 0) { |
| | | var urls = [] |
| | | var split = row.picUrl.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.picUrl = urls.join(",") |
| | | } |
| | | row.userid = this.userInfo.user_id |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate (row, index, done, loading) { |
| | | if (row.picUrl.length > 0) { |
| | | var urls = [] |
| | | var split = row.picUrl.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.picUrl = urls.join(",") |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen (done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getCommunity(this.form.id).then((res) => { |
| | | this.form = res.data.data |
| | | if (this.form.picUrl.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.picUrl.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.picUrl = urls.join(",") |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange (currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.picUrl) { |
| | | if (item.picUrl.length > 0) { |
| | | var urls = [] |
| | | var names = item.picUrl.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.picUrl = urls.join(",") |
| | | } |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | rowSave(row, done, loading) { |
| | | if (row.picUrl.length > 0) { |
| | | var urls = [] |
| | | var split = row.picUrl.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.picUrl = urls.join(",") |
| | | } |
| | | row.userid = this.userInfo.user_id |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.picUrl.length > 0) { |
| | | var urls = [] |
| | | var split = row.picUrl.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.picUrl = urls.join(",") |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getCommunity(this.form.id).then((res) => { |
| | | this.form = res.data.data |
| | | if (this.form.picUrl.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.picUrl.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.picUrl = urls.join(",") |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.picUrl) { |
| | | if (item.picUrl.length > 0) { |
| | | var urls = [] |
| | | var names = item.picUrl.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.picUrl = urls.join(",") |
| | | } |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-row> |
| | | <!-- 列表模块 --> |
| | | <el-table ref="table" v-loading="loading" :size="option.size" @selection-change="selectionChange" :data="data" |
| | | style="width: 100%" |
| | | :border="option.border"> |
| | | style="width: 100%" :border="option.border"> |
| | | <el-table-column type="selection" v-if="option.selection" width="55" align="center"></el-table-column> |
| | | <el-table-column type="expand" v-if="option.expand" align="center"></el-table-column> |
| | | <el-table-column v-if="option.index" label="#" type="index" width="50" align="center"> |
| | | </el-table-column> |
| | | <template v-for="(item,index) in option.column"> |
| | | <!-- table字段 --> |
| | | <el-table-column v-if="item.hide!==true" |
| | | :prop="item.prop" |
| | | :label="item.label" |
| | | :width="item.width" |
| | | :key="index"> |
| | | <el-table-column v-if="item.hide!==true" :prop="item.prop" :label="item.label" :width="item.width" |
| | | :key="index"> |
| | | </el-table-column> |
| | | </template> |
| | | <!-- 操作栏模块 --> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <!-- 分页模块 --> |
| | | <el-pagination |
| | | align="right" background |
| | | @size-change="sizeChange" |
| | | @current-change="currentChange" |
| | | :current-page="page.currentPage" |
| | | :page-sizes="[10, 20, 30, 40, 50, 100]" |
| | | :page-size="page.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="page.total"> |
| | | <el-pagination align="right" background @size-change="sizeChange" @current-change="currentChange" |
| | | :current-page="page.currentPage" :page-sizes="[10, 20, 30, 40, 50, 100]" :page-size="page.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" :total="page.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | <!-- 表单模块 --> |
| | |
| | | </el-form> |
| | | <!-- 表单按钮 --> |
| | | <span v-if="!view" slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" icon="el-icon-circle-check" :size="option.size" @click="handleSubmit">提 交</el-button> |
| | | <el-button type="primary" icon="el-icon-circle-check" :size="option.size" @click="handleSubmit">提 |
| | | 交</el-button> |
| | | <el-button icon="el-icon-circle-close" :size="option.size" @click="box = false">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {getList, getDetail, add, update, remove} from "@/api/discuss/publicDiscuss"; |
| | | import { |
| | | getList, |
| | | getDetail, |
| | | add, |
| | | // update, |
| | | // remove |
| | | } from "@/api/discuss/publicDiscuss"; |
| | | import option from "@/option/discuss/publicDiscuss"; |
| | | import {mapGetters} from "vuex"; |
| | | import {getDictionary} from '@/api/system/dict' |
| | | import { |
| | | mapGetters |
| | | } from "vuex"; |
| | | import { |
| | | getDictionary |
| | | } from '@/api/system/dict' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | // 弹框标题 |
| | | title: '', |
| | | // 是否展示弹框 |
| | | box: false, |
| | | // 是否显示查询 |
| | | search: true, |
| | | // 加载中 |
| | | loading: true, |
| | | // 是否为查看模式 |
| | | view: false, |
| | | // 查询信息 |
| | | query: {}, |
| | | // 分页信息 |
| | | page: { |
| | | currentPage: 1, |
| | | pageSize: 10, |
| | | total: 40 |
| | | export default { |
| | | data() { |
| | | return { |
| | | // 弹框标题 |
| | | title: '', |
| | | // 是否展示弹框 |
| | | box: false, |
| | | // 是否显示查询 |
| | | search: true, |
| | | // 加载中 |
| | | loading: true, |
| | | // 是否为查看模式 |
| | | view: false, |
| | | // 查询信息 |
| | | query: {}, |
| | | // 分页信息 |
| | | page: { |
| | | currentPage: 1, |
| | | pageSize: 10, |
| | | total: 40 |
| | | }, |
| | | // 表单数据 |
| | | form: {}, |
| | | // 选择行 |
| | | selectionList: [], |
| | | // 表单配置 |
| | | option: option, |
| | | // 表单列表 |
| | | data: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | this.onLoad(this.page); |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission"]), |
| | | ids() { |
| | | let ids = []; |
| | | this.selectionList.forEach(ele => { |
| | | ids.push(ele.id); |
| | | }); |
| | | return ids.join(","); |
| | | } |
| | | }, |
| | | methods: { |
| | | init() {}, |
| | | searchHide() { |
| | | this.search = !this.search; |
| | | }, |
| | | // 表单数据 |
| | | form: {}, |
| | | // 选择行 |
| | | selectionList: [], |
| | | // 表单配置 |
| | | option: option, |
| | | // 表单列表 |
| | | data: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | this.onLoad(this.page); |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission"]), |
| | | ids() { |
| | | let ids = []; |
| | | this.selectionList.forEach(ele => { |
| | | ids.push(ele.id); |
| | | }); |
| | | return ids.join(","); |
| | | } |
| | | }, |
| | | methods: { |
| | | init() { |
| | | }, |
| | | searchHide() { |
| | | this.search = !this.search; |
| | | }, |
| | | searchChange() { |
| | | this.onLoad(this.page); |
| | | }, |
| | | searchReset() { |
| | | this.query = {}; |
| | | this.page.currentPage = 1; |
| | | this.onLoad(this.page); |
| | | }, |
| | | handleSubmit() { |
| | | if (!this.form.id) { |
| | | add(this.form).then(() => { |
| | | this.box = false; |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | searchChange() { |
| | | this.onLoad(this.page); |
| | | }, |
| | | searchReset() { |
| | | this.query = {}; |
| | | this.page.currentPage = 1; |
| | | this.onLoad(this.page); |
| | | }, |
| | | handleSubmit() { |
| | | if (!this.form.id) { |
| | | add(this.form).then(() => { |
| | | this.box = false; |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }); |
| | | }); |
| | | } else { |
| | | // update(this.form).then(() => { |
| | | // this.box = false; |
| | | // this.onLoad(this.page); |
| | | // this.$message({ |
| | | // type: "success", |
| | | // message: "操作成功!" |
| | | // }); |
| | | // }) |
| | | } |
| | | }, |
| | | handleAdd() { |
| | | this.title = '新增' |
| | | this.form = {} |
| | | this.box = true |
| | | }, |
| | | handleEdit(row) { |
| | | this.title = '编辑' |
| | | this.box = true |
| | | getDetail(row.id).then(res => { |
| | | this.form = res.data.data; |
| | | }); |
| | | } else { |
| | | update(this.form).then(() => { |
| | | this.box = false; |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }, |
| | | handleView(row) { |
| | | this.title = '查看' |
| | | this.view = true; |
| | | this.box = true; |
| | | getDetail(row.id).then(res => { |
| | | this.form = res.data.data; |
| | | }); |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据"); |
| | | return; |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | // return remove(this.ids); |
| | | }) |
| | | .then(() => { |
| | | this.selectionClear(); |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }); |
| | | }); |
| | | }) |
| | | } |
| | | }, |
| | | handleAdd() { |
| | | this.title = '新增' |
| | | this.form = {} |
| | | this.box = true |
| | | }, |
| | | handleEdit(row) { |
| | | this.title = '编辑' |
| | | this.box = true |
| | | getDetail(row.id).then(res => { |
| | | this.form = res.data.data; |
| | | }); |
| | | }, |
| | | handleView(row) { |
| | | this.title = '查看' |
| | | this.view = true; |
| | | this.box = true; |
| | | getDetail(row.id).then(res => { |
| | | this.form = res.data.data; |
| | | }); |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据"); |
| | | return; |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids); |
| | | }) |
| | | .then(() => { |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | // return remove(row.id); |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }); |
| | | }); |
| | | }, |
| | | beforeClose(done) { |
| | | done() |
| | | this.form = {}; |
| | | this.view = false; |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = []; |
| | | this.$refs.table.clearSelection(); |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage; |
| | | this.onLoad(this.page); |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize; |
| | | this.onLoad(this.page); |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true; |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.data = data.records; |
| | | this.loading = false; |
| | | this.selectionClear(); |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }); |
| | | }); |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id); |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }); |
| | | }); |
| | | }, |
| | | beforeClose(done) { |
| | | done() |
| | | this.form = {}; |
| | | this.view = false; |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = []; |
| | | this.$refs.table.clearSelection(); |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage; |
| | | this.onLoad(this.page); |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize; |
| | | this.onLoad(this.page); |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true; |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.data = data.records; |
| | | this.loading = false; |
| | | this.selectionClear(); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-pagination { |
| | | margin-top: 20px; |
| | | } |
| | | </style> |
| | | .el-pagination { |
| | | margin-top: 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" |
| | | :table-loading="loading" |
| | | :data="data" |
| | | :page.sync="page" |
| | | :permission="permissionList" |
| | | :before-open="beforeOpen" |
| | | v-model="form" |
| | | ref="crud" |
| | | @row-update="rowUpdate" |
| | | @row-save="rowSave" |
| | | @row-del="rowDel" |
| | | @search-change="searchChange" |
| | | @search-reset="searchReset" |
| | | @selection-change="selectionChange" |
| | | @current-change="currentChange" |
| | | @size-change="sizeChange" |
| | | @refresh-change="refreshChange" |
| | | @on-load="onLoad"> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList" |
| | | :before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button type="danger" |
| | | size="small" |
| | | icon="el-icon-delete" |
| | | plain |
| | | v-if="permission.userTopics_delete" |
| | | @click="handleDelete">删 除 |
| | | <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.userTopics_delete" |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {getList, getDetail, add, update, remove} from "@/api/discuss/userTopics"; |
| | | import { |
| | | getList, |
| | | getDetail, |
| | | add, |
| | | update, |
| | | remove |
| | | } from "@/api/discuss/userTopics"; |
| | | import option from "@/option/discuss/userTopics"; |
| | | import {mapGetters} from "vuex"; |
| | | import { |
| | | mapGetters |
| | | } from "vuex"; |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id); |
| | | }) |
| | |
| | | return; |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids); |
| | | }) |
| | |
| | | this.selectionList = []; |
| | | this.$refs.crud.toggleSelection(); |
| | | }, |
| | | currentChange(currentPage){ |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage; |
| | | }, |
| | | sizeChange(pageSize){ |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize; |
| | | }, |
| | | refreshChange() { |
| | |
| | | </script> |
| | | |
| | | <style> |
| | | </style> |
| | | </style> |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size}" slot="phoneOne"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneOneflag')" |
| | | v-text="textDispose(row, 'phoneOneflag', 'phoneOne')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="idCardOne"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardOneflag')" |
| | | v-text="textDispose(row, 'idCardOneflag', 'idCardOne')"> |
| | | </el-button> |
| | | </template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size}" slot="phoneOne"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneOneflag')" |
| | | v-text="textDispose(row, 'phoneOneflag', 'phoneOne')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="idCardOne"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardOneflag')" |
| | | v-text="textDispose(row, 'idCardOneflag', 'idCardOne')"> |
| | | </el-button> |
| | | </template> |
| | | |
| | | |
| | | <template slot="menuLeft"> |
| | | <el-button type="success" size="small" plain v-if="permission.dispute_record_import" |
| | | icon="el-icon-upload2" @click="handleImport">导入 |
| | | </el-button> |
| | | <el-button type="warning" size="small" plain v-if="permission.dispute_record_export" |
| | | icon="el-icon-download" @click="handleExport">导出 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <el-dialog title="矛盾纠纷事件数据导入" append-to-body :visible.sync="excelBox" width="555px"> |
| | | <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"> |
| | | <template slot="excelTemplate"> |
| | | <el-button size="small" type="primary" @click="handleTemplate"> |
| | | 点击下载<i class="el-icon-download el-icon--right"></i> |
| | | </el-button> |
| | | </template> |
| | | </avue-form> |
| | | </el-dialog> |
| | | </basic-container> |
| | | <template slot="menuLeft"> |
| | | <el-button type="success" size="small" plain v-if="permission.dispute_record_import" icon="el-icon-upload2" |
| | | @click="handleImport">导入 |
| | | </el-button> |
| | | <el-button type="warning" size="small" plain v-if="permission.dispute_record_export" icon="el-icon-download" |
| | | @click="handleExport">导出 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <el-dialog title="矛盾纠纷事件数据导入" append-to-body :visible.sync="excelBox" width="555px"> |
| | | <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"> |
| | | <template slot="excelTemplate"> |
| | | <el-button size="small" type="primary" @click="handleTemplate"> |
| | | 点击下载<i class="el-icon-download el-icon--right"></i> |
| | | </el-button> |
| | | </template> |
| | | </avue-form> |
| | | </el-dialog> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import { |
| | | } from "vuex" |
| | | import { |
| | | getList, |
| | | add, |
| | | update, |
| | | remove, |
| | | getDetail |
| | | } from "@/api/disputeRecord/disputeRecord" |
| | | import NProgress from 'nprogress' |
| | | import 'nprogress/nprogress.css' |
| | | import Qs from "qs" |
| | | import { |
| | | } from "@/api/disputeRecord/disputeRecord" |
| | | import NProgress from 'nprogress' |
| | | import 'nprogress/nprogress.css' |
| | | import Qs from "qs" |
| | | import { |
| | | exportBlob |
| | | } from "@/api/common" |
| | | import { |
| | | } from "@/api/common" |
| | | import { |
| | | getToken |
| | | } from '@/util/auth' |
| | | import { |
| | | } from '@/util/auth' |
| | | import { |
| | | downloadXls |
| | | } from "@/util/util" |
| | | import { |
| | | } from "@/util/util" |
| | | import { |
| | | dateNow |
| | | } from "@/util/date" |
| | | import website from '@/config/website' |
| | | export default { |
| | | } from "@/util/date" |
| | | import website from '@/config/website' |
| | | export default { |
| | | data() { |
| | | let isCardId = function (rule, value, callback) { |
| | | // 15位和18位身份证号码的正则表达式 |
| | | var regIdCard = |
| | | /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/ |
| | | let isCardId = function(rule, value, callback) { |
| | | // 15位和18位身份证号码的正则表达式 |
| | | var regIdCard = |
| | | /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/ |
| | | |
| | | // 如果通过该验证,说明身份证格式正确,但准确性还需计算 |
| | | if (regIdCard.test(value) || value == '') { |
| | | if (value.length == 18) { |
| | | var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, |
| | | 5, 8, 4, 2) // 将前17位加权因子保存在数组里 |
| | | var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2) // 这是除以11后,可能产生的11位余数、验证码,也保存成数组 |
| | | var idCardWiSum = 0 // 用来保存前17位各自乖以加权因子后的总和 |
| | | for (var i = 0; i < 17; i++) { |
| | | idCardWiSum += value.substring(i, i + 1) * idCardWi[i] |
| | | } |
| | | // 如果通过该验证,说明身份证格式正确,但准确性还需计算 |
| | | if (regIdCard.test(value) || value == '') { |
| | | if (value.length == 18) { |
| | | var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, |
| | | 5, 8, 4, 2) // 将前17位加权因子保存在数组里 |
| | | var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2) // 这是除以11后,可能产生的11位余数、验证码,也保存成数组 |
| | | var idCardWiSum = 0 // 用来保存前17位各自乖以加权因子后的总和 |
| | | for (var i = 0; i < 17; i++) { |
| | | idCardWiSum += value.substring(i, i + 1) * idCardWi[i] |
| | | } |
| | | |
| | | var idCardMod = idCardWiSum % 11 // 计算出校验码所在数组的位置 |
| | | var idCardLast = value.substring(17) // 得到最后一位身份证号码 |
| | | var idCardMod = idCardWiSum % 11 // 计算出校验码所在数组的位置 |
| | | var idCardLast = value.substring(17) // 得到最后一位身份证号码 |
| | | |
| | | // 如果等于2,则说明校验码是10,身份证号码最后一位应该是X |
| | | if (idCardMod == 2) { |
| | | if (idCardLast == "X" || idCardLast == "x") { |
| | | callback() |
| | | } else { |
| | | callback(new Error("身份证号格式有误!")) |
| | | } |
| | | } else { |
| | | // 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码 |
| | | if (idCardLast == idCardY[idCardMod]) { |
| | | callback() |
| | | } else { |
| | | callback(new Error("身份证号格式有误!")) |
| | | } |
| | | } |
| | | } else { |
| | | callback() |
| | | } |
| | | } else { |
| | | //alert("身份证格式不正确!"); |
| | | // 如果等于2,则说明校验码是10,身份证号码最后一位应该是X |
| | | if (idCardMod == 2) { |
| | | if (idCardLast == "X" || idCardLast == "x") { |
| | | callback() |
| | | } else { |
| | | callback(new Error("身份证号格式有误!")) |
| | | } |
| | | } else { |
| | | // 用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码 |
| | | if (idCardLast == idCardY[idCardMod]) { |
| | | callback() |
| | | } else { |
| | | callback(new Error("身份证号格式有误!")) |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | callback() |
| | | } |
| | | } else { |
| | | //alert("身份证格式不正确!"); |
| | | callback(new Error("身份证号格式有误!")) |
| | | } |
| | | |
| | | //手机号格式校验 |
| | | let validatorPhone = function (rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | return { |
| | | excelForm: {}, |
| | | excelBox: false, |
| | | excelOption: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | label: '模板上传', |
| | | prop: 'excelFile', |
| | | type: 'upload', |
| | | drag: true, |
| | | loadText: '模板上传中,请稍等', |
| | | span: 24, |
| | | propsHttp: { |
| | | res: 'data' |
| | | }, |
| | | tip: '请上传 .xls,.xlsx 标准格式文件', |
| | | action: "/api/blade-disputeRecord/disputeRecord/import-disputeRecord" |
| | | callback() |
| | | } |
| | | return { |
| | | excelForm: {}, |
| | | excelBox: false, |
| | | excelOption: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | label: '模板上传', |
| | | prop: 'excelFile', |
| | | type: 'upload', |
| | | drag: true, |
| | | loadText: '模板上传中,请稍等', |
| | | span: 24, |
| | | propsHttp: { |
| | | res: 'data' |
| | | }, |
| | | tip: '请上传 .xls,.xlsx 标准格式文件', |
| | | action: "/api/blade-disputeRecord/disputeRecord/import-disputeRecord" |
| | | }, |
| | | { |
| | | label: "数据覆盖", |
| | | prop: "isCovered", |
| | | type: "switch", |
| | | align: "center", |
| | | width: 80, |
| | | dicData: [{ |
| | | label: "否", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "数据覆盖", |
| | | prop: "isCovered", |
| | | type: "switch", |
| | | align: "center", |
| | | width: 80, |
| | | dicData: [{ |
| | | label: "否", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "是", |
| | | value: 1 |
| | | } |
| | | ], |
| | | value: 0, |
| | | slot: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择是否覆盖", |
| | | trigger: "blur" |
| | | }] |
| | | label: "是", |
| | | value: 1 |
| | | } |
| | | ], |
| | | value: 0, |
| | | slot: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择是否覆盖", |
| | | trigger: "blur" |
| | | }] |
| | | }, |
| | | { |
| | | label: '模板下载', |
| | | prop: 'excelTemplate', |
| | | formslot: true, |
| | | span: 24, |
| | | } |
| | | ] |
| | | }, |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | menuWidth: 210, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | border: true, |
| | | index: true, |
| | | editBtn: true, |
| | | delBtn: true, |
| | | addBtn: true, |
| | | viewBtn: true, |
| | | refreshBtn: true, |
| | | searchShowBtn: true, |
| | | columnBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "事发地址", |
| | | prop: "address", |
| | | // align: 'center', |
| | | minWidth: 210, |
| | | search: true, |
| | | searchSpan: 5, |
| | | display: false, |
| | | overHidden: true, |
| | | }, |
| | | { |
| | | label: "事发地址", |
| | | prop: "location", |
| | | align: 'center', |
| | | minWidth: 210, |
| | | span: 12, |
| | | hide: true, |
| | | overHidden: true, |
| | | labelWidth: 150, |
| | | // row: true, |
| | | type: 'map', |
| | | dataType: "string", |
| | | value: [117.966460, 28.431002, ""], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择巡查地址", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | width: 150, |
| | | label: "事发时间", |
| | | prop: "eventTime", |
| | | type: "datetime", |
| | | labelWidth: 150, |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择事发时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "事发时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 6, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择事发时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "纠纷内容", |
| | | prop: "disputeContent", |
| | | // align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | type: "textarea", |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入纠纷内容", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "纠纷类型", |
| | | prop: "disputeType", |
| | | align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchSpan: 4, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=disputeType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择纠纷类型", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "是否受伤", |
| | | prop: "injuryFlag", |
| | | align: 'center', |
| | | width: 80, |
| | | search: true, |
| | | searchSpan: 3, |
| | | labelWidth: 150, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "是", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: '模板下载', |
| | | prop: 'excelTemplate', |
| | | formslot: true, |
| | | span: 24, |
| | | label: "否", |
| | | value: 0 |
| | | } |
| | | ] |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择是否受伤", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | { |
| | | label: "受伤情况描述", |
| | | prop: "injuryDesc", |
| | | align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | display: false, |
| | | hide: true, |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输入受伤情况描述", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | menuWidth: 210, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | border: true, |
| | | index: true, |
| | | editBtn: true, |
| | | delBtn: true, |
| | | addBtn: true, |
| | | viewBtn: true, |
| | | refreshBtn: true, |
| | | searchShowBtn: true, |
| | | columnBtn: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | { |
| | | label: "事发地址", |
| | | prop: "address", |
| | | // align: 'center', |
| | | minWidth: 210, |
| | | search: true, |
| | | searchSpan: 5, |
| | | display: false, |
| | | overHidden: true, |
| | | }, |
| | | { |
| | | label: "事发地址", |
| | | prop: "location", |
| | | align: 'center', |
| | | minWidth: 210, |
| | | span: 12, |
| | | hide: true, |
| | | overHidden: true, |
| | | labelWidth: 150, |
| | | // row: true, |
| | | type: 'map', |
| | | dataType: "string", |
| | | value: [117.966460, 28.431002, ""], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择巡查地址", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | width: 150, |
| | | label: "事发时间", |
| | | prop: "eventTime", |
| | | type: "datetime", |
| | | labelWidth: 150, |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择事发时间", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | label: "事发时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchSpan: 6, |
| | | searchRange: true, |
| | | hide: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择事发时间", |
| | | trigger: "blur", |
| | | },], |
| | | }, { |
| | | label: "纠纷内容", |
| | | prop: "disputeContent", |
| | | // align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | type: "textarea", |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入纠纷内容", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "纠纷类型", |
| | | prop: "disputeType", |
| | | align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchSpan: 4, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=disputeType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择纠纷类型", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "是否受伤", |
| | | prop: "injuryFlag", |
| | | align: 'center', |
| | | width: 80, |
| | | search: true, |
| | | searchSpan: 3, |
| | | labelWidth: 150, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "是", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: 0 |
| | | } |
| | | ], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择是否受伤", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "受伤情况描述", |
| | | prop: "injuryDesc", |
| | | align: 'center', |
| | | minWidth: 150, |
| | | labelWidth: 150, |
| | | display: false, |
| | | hide: true, |
| | | row: true, |
| | | span: 24, |
| | | overHidden: true, |
| | | rules: [ |
| | | { |
| | | required: false, |
| | | message: "请输入受伤情况描述", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: "报警次数", |
| | | prop: "alarmNum", |
| | | align: 'center', |
| | | type: "number", |
| | | labelWidth: 150, |
| | | }, |
| | | { |
| | | label: "信息来源", |
| | | prop: "source", |
| | | labelWidth: 150, |
| | | align: 'center', |
| | | width: 156, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=disputeSource", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择信息来源", |
| | | trigger: "blur", |
| | | },], |
| | | }, { |
| | | label: "当事人1姓名", |
| | | prop: "nameOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人1姓名", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | label: "当事人1性别", |
| | | prop: "genderOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "男", |
| | | value: 1 |
| | | }, { |
| | | label: "女", |
| | | value: 2 |
| | | } |
| | | ], |
| | | width: 100, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择当事人1性别", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | label: "当事人1电话", |
| | | prop: "phoneOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人1电话", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "当事人1身份证号", |
| | | prop: "idCardOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 150, |
| | | searchSpan: 5, |
| | | width: 150, |
| | | // row: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人1身份证号", |
| | | trigger: "blur", |
| | | }, { |
| | | validator: isCardId, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "当事人2姓名", |
| | | prop: "nameTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人2姓名", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | label: "当事人2性别", |
| | | prop: "genderOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "男", |
| | | value: 1 |
| | | }, { |
| | | label: "女", |
| | | value: 2 |
| | | } |
| | | ], |
| | | width: 100, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择当事人2性别", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, { |
| | | label: "当事人2电话", |
| | | prop: "phoneTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人2电话", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "当事人2身份证号", |
| | | prop: "idCardTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入当事人2身份证号", |
| | | trigger: "blur", |
| | | }, { |
| | | validator: isCardId, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "地区", |
| | | prop: "townName", |
| | | align: 'center', |
| | | search: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 60, |
| | | labelWidth: 150, |
| | | width: 120, |
| | | searchPlaceholder: '请输入地区' |
| | | }, { |
| | | label: "辖区派出所", |
| | | prop: "pcsName", |
| | | align: 'center', |
| | | search: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | searchSpan: 4, |
| | | labelWidth: 150, |
| | | width: 120, |
| | | searchLabelWidth: 96, |
| | | searchPlaceholder: '请输入辖区派出所' |
| | | }, { |
| | | label: "处理结果", |
| | | prop: "handleResult", |
| | | align: 'center', |
| | | search: true, |
| | | labelWidth: 150, |
| | | searchSpan: 4, |
| | | width: 110, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "已化解", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "未化解", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "移送e呼即办", |
| | | value: 3 |
| | | } |
| | | ], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择处理结果", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }], |
| | | { |
| | | label: "报警次数", |
| | | prop: "alarmNum", |
| | | align: 'center', |
| | | type: "number", |
| | | labelWidth: 150, |
| | | }, |
| | | data: [] |
| | | } |
| | | { |
| | | label: "信息来源", |
| | | prop: "source", |
| | | labelWidth: 150, |
| | | align: 'center', |
| | | width: 156, |
| | | dataType: "number", |
| | | type: "select", |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=disputeSource", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择信息来源", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "当事人1姓名", |
| | | prop: "nameOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人1姓名", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "当事人1性别", |
| | | prop: "genderOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, { |
| | | label: "女", |
| | | value: 2 |
| | | }], |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择当事人1性别", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "当事人1电话", |
| | | prop: "phoneOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人1电话", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "当事人1身份证号", |
| | | prop: "idCardOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 150, |
| | | searchSpan: 5, |
| | | width: 150, |
| | | // row: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人1身份证号", |
| | | trigger: "blur", |
| | | }, { |
| | | validator: isCardId, |
| | | trigger: 'blur' |
| | | }], |
| | | }, |
| | | { |
| | | label: "当事人2姓名", |
| | | prop: "nameTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人2姓名", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "当事人2性别", |
| | | prop: "genderOne", |
| | | align: 'center', |
| | | slot: true, |
| | | labelWidth: 150, |
| | | // search: true, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, { |
| | | label: "女", |
| | | value: 2 |
| | | }], |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择当事人2性别", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | label: "当事人2电话", |
| | | prop: "phoneTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人2电话", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "当事人2身份证号", |
| | | prop: "idCardTwo", |
| | | align: 'center', |
| | | slot: true, |
| | | hide: true, |
| | | labelWidth: 150, |
| | | searchLabelWidth: 110, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入当事人2身份证号", |
| | | trigger: "blur", |
| | | }, { |
| | | validator: isCardId, |
| | | trigger: 'blur' |
| | | }], |
| | | }, |
| | | { |
| | | label: "地区", |
| | | prop: "townName", |
| | | align: 'center', |
| | | search: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 60, |
| | | labelWidth: 150, |
| | | width: 120, |
| | | searchPlaceholder: '请输入地区' |
| | | }, |
| | | // { |
| | | // label: "辖区派出所", |
| | | // prop: "pcsName", |
| | | // align: 'center', |
| | | // search: true, |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // searchSpan: 4, |
| | | // labelWidth: 150, |
| | | // width: 120, |
| | | // searchLabelWidth: 96, |
| | | // searchPlaceholder: '请输入辖区派出所' |
| | | // }, |
| | | { |
| | | searchLabelWidth: 90, |
| | | label: "辖区派出所", |
| | | search: true, |
| | | searchSpan: 4, |
| | | // parent: false, |
| | | prop: "pcsName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/dept/treeByDept?deptId=1727974759086493697", |
| | | props: { |
| | | label: "title", |
| | | value: "title" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择辖区派出所", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "处理结果", |
| | | prop: "handleResult", |
| | | align: 'center', |
| | | search: true, |
| | | labelWidth: 150, |
| | | searchSpan: 4, |
| | | width: 110, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "已化解", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "未化解", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "移送e呼即办", |
| | | value: 3 |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择处理结果", |
| | | trigger: "blur", |
| | | }, ], |
| | | } |
| | | ], |
| | | }, |
| | | data: [] |
| | | } |
| | | }, |
| | | |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.dispute_record_add, true), |
| | | viewBtn: this.vaildData(this.permission.dispute_record_view, true), |
| | | delBtn: this.vaildData(this.permission.dispute_record_delete, true), |
| | | editBtn: this.vaildData(this.permission.dispute_record_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.dispute_record_add, true), |
| | | viewBtn: this.vaildData(this.permission.dispute_record_view, true), |
| | | delBtn: this.vaildData(this.permission.dispute_record_delete, true), |
| | | editBtn: this.vaildData(this.permission.dispute_record_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | "form.injuryFlag": { |
| | | // form是表单或者表格绑定的数据集,v-model='form' |
| | | handler(val) { |
| | | let injuryDescColumn = this.findObject( |
| | | this.option.column, |
| | | 'injuryDesc' |
| | | ) |
| | | if (val == 1) { |
| | | injuryDescColumn.rules[0].required = true |
| | | injuryDescColumn.display = true |
| | | } else { |
| | | injuryDescColumn.rules[0].required = false |
| | | injuryDescColumn.display = false |
| | | } |
| | | }, |
| | | immediate: true, |
| | | "form.injuryFlag": { |
| | | // form是表单或者表格绑定的数据集,v-model='form' |
| | | handler(val) { |
| | | let injuryDescColumn = this.findObject( |
| | | this.option.column, |
| | | 'injuryDesc' |
| | | ) |
| | | if (val == 1) { |
| | | injuryDescColumn.rules[0].required = true |
| | | injuryDescColumn.display = true |
| | | } else { |
| | | injuryDescColumn.rules[0].required = false |
| | | injuryDescColumn.display = false |
| | | } |
| | | }, |
| | | 'excelForm.isCovered'() { |
| | | if (this.excelForm.isCovered !== '') { |
| | | const column = this.findObject(this.excelOption.column, "excelFile") |
| | | column.action = `/api/blade-disputeRecord/disputeRecord/import-disputeRecord?isCovered=${this.excelForm.isCovered}` |
| | | } |
| | | immediate: true, |
| | | }, |
| | | 'excelForm.isCovered'() { |
| | | if (this.excelForm.isCovered !== '') { |
| | | const column = this.findObject(this.excelOption.column, "excelFile") |
| | | column.action = |
| | | `/api/blade-disputeRecord/disputeRecord/import-disputeRecord?isCovered=${this.excelForm.isCovered}` |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | |
| | | return { |
| | | lng: data[0], |
| | | lat: data[1], |
| | | address: data[2] |
| | | } |
| | | }, |
| | | handleTemplate() { |
| | | exportBlob(`/api/blade-disputeRecord/disputeRecord/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => { |
| | | downloadXls(res.data, "矛盾纠纷事件数据模板.xlsx") |
| | | }) |
| | | }, |
| | | handleImport() { |
| | | this.excelBox = true |
| | | }, |
| | | uploadAfter(res, done, loading, column) { |
| | | this.excelBox = false |
| | | return { |
| | | lng: data[0], |
| | | lat: data[1], |
| | | address: data[2] |
| | | } |
| | | }, |
| | | handleTemplate() { |
| | | exportBlob(`/api/blade-disputeRecord/disputeRecord/export-template?${this.website.tokenHeader}=${getToken()}`) |
| | | .then(res => { |
| | | downloadXls(res.data, "矛盾纠纷事件数据模板.xlsx") |
| | | }) |
| | | }, |
| | | handleImport() { |
| | | this.excelBox = true |
| | | }, |
| | | uploadAfter(res, done, loading, column) { |
| | | this.excelBox = false |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: res |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | done() |
| | | }, |
| | | handleExport() { |
| | | this.$confirm("是否导出矛盾纠纷事件数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | NProgress.start() |
| | | var data = { |
| | | ...this.query |
| | | } |
| | | data.isNine = 1 |
| | | data = Qs.stringify(data) |
| | | exportBlob( |
| | | `/api/blade-disputeRecord/disputeRecord/export-disputeRecord?${this.website.tokenHeader}=${getToken()}&` + |
| | | data |
| | | ).then(res => { |
| | | console.log('exportBlob', res) |
| | | downloadXls(res.data, `矛盾纠纷事件${dateNow()}.xlsx`) |
| | | NProgress.done() |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | add({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: res |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | done() |
| | | }, |
| | | handleExport() { |
| | | this.$confirm("是否导出矛盾纠纷事件数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | NProgress.start() |
| | | var data = { |
| | | ...this.query |
| | | } |
| | | data.isNine = 1 |
| | | data = Qs.stringify(data) |
| | | exportBlob( |
| | | `/api/blade-disputeRecord/disputeRecord/export-disputeRecord?${this.website.tokenHeader}=${getToken()}&` + data |
| | | ).then(res => { |
| | | console.log('exportBlob', res) |
| | | downloadXls(res.data, `矛盾纠纷事件${dateNow()}.xlsx`) |
| | | NProgress.done() |
| | | }) |
| | | }) |
| | | }, |
| | | }) |
| | | }, |
| | | |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | add({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update({ |
| | | ...row, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetail(this.form.id).then(res => { |
| | | this.form = res.data.data |
| | | this.form.location = [this.form.lng, this.form.lat, this.form.address].join(',') |
| | | }) |
| | | done() |
| | | } else { |
| | | done() |
| | | } |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | if (dateTime) { |
| | | params['startTime'] = dateTime[0] |
| | | params['endTime'] = dateTime[1] |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'phoneOneflag', false) |
| | | this.$set(item, 'idCardOneflag', false) |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetail(this.form.id).then(res => { |
| | | this.form = res.data.data |
| | | this.form.location = [this.form.lng, this.form.lat, this.form.address].join(',') |
| | | }) |
| | | done() |
| | | } else { |
| | | done() |
| | | } |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | if (dateTime) { |
| | | params['startTime'] = dateTime[0] |
| | | params['endTime'] = dateTime[1] |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'phoneOneflag', false) |
| | | this.$set(item, 'idCardOneflag', false) |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.gridman_delete" @click="handleDelete">删 |
| | | 除 |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="mobile"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'mobileflag')" |
| | | v-text="textDispose(row, 'mobileflag', 'mobile')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.gridman_delete" @click="handleDelete">删 |
| | | 除 |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="mobile"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'mobileflag')" |
| | | v-text="textDispose(row, 'mobileflag', 'mobile')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList, remove, update, add, getGridman } from "@/api/grid/gridman" |
| | | import { mapGetters } from "vuex" |
| | | import website from '@/config/website' |
| | | export default { |
| | | data () { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getGridman |
| | | } from "@/api/grid/gridman" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import website from '@/config/website' |
| | | export default { |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | // { |
| | | // hide: true, |
| | | // parent: false, |
| | | // label: "所属社区", |
| | | // prop: "communityCode", |
| | | // search: false, |
| | | // type: "tree", |
| | | // dataType: 'string', |
| | | // dicUrl: "/api/blade-system/region/tree", |
| | | // props: { |
| | | // label: "name", |
| | | // value: "id", |
| | | // }, |
| | | // cascader: ["gridCode"], |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择所属社区", |
| | | // trigger: "blur", |
| | | // }, ], |
| | | // }, |
| | | |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityCode", |
| | | search: false, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | cascader: ['gridCode'], |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityCode", |
| | | search: false, |
| | | type: "tree", |
| | | dataType: 'string', |
| | | dicUrl: "/api/blade-system/region/tree", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | { |
| | | label: "所属网格", |
| | | prop: "gridCode", |
| | | hide: true, |
| | | type: "tree", |
| | | cell: true, |
| | | props: { |
| | | label: "gridName", |
| | | value: "gridCode", |
| | | }, |
| | | dicUrl: |
| | | "/api/blade-grid/grid/getGridList?communityCode={{communityCode}}", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入网格名称", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | { |
| | | width: 110, |
| | | label: "网格员", |
| | | prop: "gridmanName", |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 60, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入网格员", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | { |
| | | width: 120, |
| | | label: "联系电话", |
| | | prop: "mobile", |
| | | searchSpan: 4, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输入联系电话", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | slot: true |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | display: false, |
| | | prop: "communityName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "所属网格", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "gridName", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属网格", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | width: 110, |
| | | label: "形象照", |
| | | prop: "picUrl", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | | type: "textarea", |
| | | hide: true, |
| | | minRows: 6, |
| | | span: 24, |
| | | }, |
| | | ], |
| | | { |
| | | label: "所属网格", |
| | | prop: "gridCode", |
| | | hide: true, |
| | | type: "tree", |
| | | cell: true, |
| | | props: { |
| | | label: "gridName", |
| | | value: "gridCode", |
| | | }, |
| | | dicUrl: "/api/blade-grid/grid/getGridList?communityCode={{communityCode}}", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入网格名称", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | data: [], |
| | | } |
| | | |
| | | { |
| | | width: 110, |
| | | label: "网格员", |
| | | prop: "gridmanName", |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 60, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入网格员", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | width: 120, |
| | | label: "联系电话", |
| | | prop: "mobile", |
| | | searchSpan: 4, |
| | | search: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入联系电话", |
| | | trigger: "blur", |
| | | }, ], |
| | | slot: true |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | display: false, |
| | | prop: "communityName", |
| | | search: true, |
| | | type: "tree", |
| | | searchSpan: 4, |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "所属网格", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "gridName", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属网格", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | |
| | | { |
| | | width: 110, |
| | | label: "形象照", |
| | | prop: "picUrl", |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | | type: "textarea", |
| | | hide: true, |
| | | minRows: 6, |
| | | span: 24, |
| | | }, |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: { |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridman_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridman_view, true), |
| | | delBtn: this.vaildData(this.permission.gridman_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridman_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | textDispose () { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.gridman_add, true), |
| | | viewBtn: this.vaildData(this.permission.gridman_view, true), |
| | | delBtn: this.vaildData(this.permission.gridman_delete, true), |
| | | editBtn: this.vaildData(this.permission.gridman_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | showStringDispose (row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | rowSave (row, done, loading) { |
| | | if (row.picUrl) { |
| | | var names = row.picUrl.split("jczz/") |
| | | row.picUrl = names[1] |
| | | } |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate (row, index, done, loading) { |
| | | if (row.picUrl) { |
| | | var names = row.picUrl.split("jczz/") |
| | | row.picUrl = names[1] |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen (done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | const param = { |
| | | id: this.form.id |
| | | } |
| | | getGridman(param).then((res) => { |
| | | this.form = res.data.data |
| | | if (this.form.picUrl) { |
| | | this.form.picUrl = website.minioUrl + this.form.picUrl |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange (currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | const { dateTime } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | } |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = { |
| | | ...res.data.data, |
| | | records: res.data.data.records.map(item => { |
| | | return { |
| | | ...item, |
| | | 'mobileflag': false |
| | | } |
| | | }) |
| | | } |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.picUrl) { |
| | | item.picUrl = website.minioUrl + item.picUrl |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | rowSave(row, done, loading) { |
| | | if (row.picUrl) { |
| | | var names = row.picUrl.split("jczz/") |
| | | row.picUrl = names[1] |
| | | } |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.picUrl) { |
| | | var names = row.picUrl.split("jczz/") |
| | | row.picUrl = names[1] |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | const param = { |
| | | id: this.form.id |
| | | } |
| | | getGridman(param).then((res) => { |
| | | this.form = res.data.data |
| | | if (this.form.picUrl) { |
| | | this.form.picUrl = website.minioUrl + this.form.picUrl |
| | | } |
| | | }) |
| | | } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | } |
| | | values.dateTime = null |
| | | } |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = { |
| | | ...res.data.data, |
| | | records: res.data.data.records.map(item => { |
| | | return { |
| | | ...item, |
| | | 'mobileflag': false |
| | | } |
| | | }) |
| | | } |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.picUrl) { |
| | | item.picUrl = website.minioUrl + item.picUrl |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | } |
| | | </style> |
| | |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | overHidden: true, |
| | | label: "网格名称", |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getDetail |
| | | } from "@/api/grid/jwGrid" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | // import website from '@/config/website' |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function (rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | labelWidth: 150, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | { |
| | | overHidden: true, |
| | | label: "所属派出所", |
| | | prop: "pcsCode", |
| | | searchSpan: 4, |
| | | type:"tree", |
| | | // search: true, |
| | | row: true, |
| | | hide:true, |
| | | dicUrl: "/api/blade-policeStation/policeStation/tree", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | defaultExpandAll: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属派出所", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "所属派出所", |
| | | prop: "pcsName", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | searchSpan: 4, |
| | | search: true, |
| | | row: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入网格名称", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "communityName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 76, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityCode", |
| | | search: false, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | row: true, |
| | | defaultExpandedKeys: ["361102"], |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "警务网格编号", |
| | | prop: "jwGridCode", |
| | | searchLabelWidth: 110, |
| | | searchSpan: 5, |
| | | search: true, |
| | | // width:120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入网格编号", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "责任民警", |
| | | prop: "policeUserId", |
| | | type: "tree", |
| | | multiple: true, |
| | | dicUrl: "/api/blade-system/user/getUserListByParam?roleName=民警", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择责任民警", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | // { |
| | | // label: "责任民警联系电话", |
| | | // prop: "principalPhone", |
| | | // span: 12, |
| | | // searchSpan: 4, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请输入联系电话", |
| | | // trigger: "blur", |
| | | // }, |
| | | // { |
| | | // validator: validatorPhone, |
| | | // trigger: 'blur' |
| | | // } |
| | | // ], |
| | | // slot: true |
| | | // }, |
| | | { |
| | | label: "区域", |
| | | prop: "geom", |
| | | type: "textarea", |
| | | hide: true, |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入区域", |
| | | trigger: "blur", |
| | | },], |
| | | } |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.grid_add, true), |
| | | viewBtn: this.vaildData(this.permission.grid_view, true), |
| | | delBtn: this.vaildData(this.permission.grid_delete, true), |
| | | editBtn: this.vaildData(this.permission.grid_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getDetail |
| | | } from "@/api/grid/jwGrid" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | // import website from '@/config/website' |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | labelWidth: 150, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | overHidden: true, |
| | | label: "所属派出所", |
| | | prop: "pcsCode", |
| | | searchSpan: 4, |
| | | type: "tree", |
| | | // search: true, |
| | | row: true, |
| | | hide: true, |
| | | dicUrl: "/api/blade-policeStation/policeStation/tree", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | defaultExpandAll: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属派出所", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | // { |
| | | // overHidden: true, |
| | | // label: "所属派出所", |
| | | // prop: "pcsName", |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: false, |
| | | // searchSpan: 4, |
| | | // search: true, |
| | | // row: true, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请输入网格名称", |
| | | // trigger: "blur", |
| | | // }, ], |
| | | // }, |
| | | { |
| | | searchLabelWidth: 90, |
| | | label: "所属派出所", |
| | | search: true, |
| | | searchSpan: 4, |
| | | // parent: false, |
| | | prop: "pcsName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/dept/treeByDept?deptId=1727974759086493697", |
| | | props: { |
| | | label: "title", |
| | | value: "title" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属派出所", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | // hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 150, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | // { |
| | | // overHidden: true, |
| | | // label: "所属社区", |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: false, |
| | | // prop: "communityName", |
| | | // search: true, |
| | | // searchSpan: 4, |
| | | // searchLabelWidth: 76, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择所属社区", |
| | | // trigger: "blur", |
| | | // }], |
| | | // }, |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityCode", |
| | | search: false, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | row: true, |
| | | defaultExpandedKeys: ["361102"], |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "警务网格编号", |
| | | prop: "jwGridCode", |
| | | searchLabelWidth: 110, |
| | | searchSpan: 5, |
| | | search: true, |
| | | // width:120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入网格编号", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "责任民警", |
| | | prop: "policeUserId", |
| | | type: "tree", |
| | | multiple: true, |
| | | dicUrl: "/api/blade-system/user/getUserListByParam?roleName=民警", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择责任民警", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | label: "区域", |
| | | prop: "geom", |
| | | type: "textarea", |
| | | hide: true, |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入区域", |
| | | trigger: "blur", |
| | | }, ], |
| | | } |
| | | ], |
| | | }, |
| | | data: [], |
| | | } |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.grid_add, true), |
| | | viewBtn: this.vaildData(this.permission.grid_view, true), |
| | | delBtn: this.vaildData(this.permission.grid_delete, true), |
| | | editBtn: this.vaildData(this.permission.grid_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | methods: { |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | rowSave(row, done, loading) { |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | // if (["edit", "view"].includes(type)) { |
| | | // getGrid(this.form.id).then((res) => { |
| | | // this.form = res.data.data |
| | | // }) |
| | | // } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = { |
| | | ...res.data.data, |
| | | records: res.data.data.records.map(item => { |
| | | return { |
| | | ...item, |
| | | 'principalPhoneflag': false |
| | | } |
| | | }) |
| | | } |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | // if (["edit", "view"].includes(type)) { |
| | | // getGrid(this.form.id).then((res) => { |
| | | // this.form = res.data.data |
| | | // }) |
| | | // } |
| | | // con |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = { |
| | | ...res.data.data, |
| | | records: res.data.data.records.map(item => { |
| | | return { |
| | | ...item, |
| | | 'principalPhoneflag': false |
| | | } |
| | | }) |
| | | } |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | |
| | | </avue-crud> |
| | | |
| | | |
| | | <el-drawer title="巡查详情" :visible.sync="isDetail" :append-to-body="true" size="60%" direction="rtl"> |
| | | |
| | | <!-- <el-drawer title="巡查详情" :visible.sync="isDetail" :append-to-body="true" size="60%" direction="rtl"> |
| | | <el-card class="trackClass" style="overflow-y: auto"> |
| | | |
| | | <el-collapse v-model="activeNames" @change="handleChange"> |
| | | <div v-for="(item, index) in 10" :key="index"> |
| | | <el-collapse-item title="一致性 Consistency" name="1"> |
| | | <div v-for="(item, index) in patrolTree" :key="index"> |
| | | <el-collapse-item :title="item.title" name="1"> |
| | | <div>{{ index }} |
| | | |
| | | <el-collapse v-model="activeNames" @change="handleChange"> |
| | | <div v-for="(item, index) in 3" :key="index"> |
| | | <el-collapse-item title="er致性 Consistency" name="1"> |
| | |
| | | </el-collapse-item> |
| | | </div> |
| | | </el-collapse> |
| | | |
| | | <!-- <el-form :model="form" label-position="right" size="mini" class="taskinfoForm" label-width="70px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="巡查内容"> |
| | | <el-input :disabled="true" v-model="form.content" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="巡检状态"> |
| | | <el-input :disabled="true" v-model="form.$status" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="巡查图片"> |
| | | <el-upload action="" :disabled="true" list-type="picture-card" :file-list="form.elUploadImageArr"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> --> |
| | | |
| | | </el-card> |
| | | </el-drawer> --> |
| | | |
| | | <!-- <DcMap v-if="isDetail" :is-detail="isDetail" :range="form.taskRoute" :patrolRoute="form.patrolRoute"> |
| | | </DcMap> --> |
| | | |
| | | <el-drawer title="消防自查详情" :visible.sync="isDetail" :append-to-body="true" size="40%" direction="rtl"> |
| | | <div class="question-list" v-for="(item, index) in patrolTree" :key='tIndex' v-loading="drawerLoading"> |
| | | <div class="question-type"> |
| | | <div class="type-name"> |
| | | {{ item.title }} |
| | | </div> |
| | | <!-- <div class="icon-box"><i class="el-icon-arrow-down" v-show="tItem.isShowQList"></i><i class="el-icon-arrow-up" |
| | | v-show="!tItem.isShowQList"></i></div> --> |
| | | </div> |
| | | <div class="question-item" v-for="(item2, index2) in item.children" :key='index2' v-show="item.hasChildren"> |
| | | <div class="question-name"> |
| | | <div class="key">{{ index2 + 1 }}、{{ item2.title }}</div> |
| | | <div class="value"> |
| | | <el-radio v-model="item2.radio" label="1">存在</el-radio> |
| | | <el-radio v-model="item2.radio" label="2">不存在</el-radio> |
| | | </div> |
| | | </div> |
| | | <div class="yh-pic-box"> |
| | | <div class="yh-pic-name"> |
| | | 隐患图片 |
| | | </div> |
| | | <div class="yh-pic-list"> |
| | | <div class="pic-item" v-for="pic in item2.imageUrlsList"> |
| | | <el-image style="width: 100px; height: 100px" :src="pic" :fit="fit"></el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="yh-remark"> |
| | | <div class="yh-remark-name"> |
| | | 隐患描述 |
| | | </div> |
| | | <div class="yh-remark-value"> |
| | | {{ item2.remark }} |
| | | </div> |
| | | </div> |
| | | <div class="yh-pic-box"> |
| | | <div class="yh-pic-name"> |
| | | 整改后图片 |
| | | </div> |
| | | <div class="yh-pic-list"> |
| | | <div class="pic-item" v-for="pic in item2.rectificationImageUrlsList"> |
| | | <el-image style="width: 100px; height: 100px" :src="pic" :fit="fit"></el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="yh-remark"> |
| | | <div class="yh-remark-name"> |
| | | 整改后描述 |
| | | </div> |
| | | <div class="yh-remark-value"> |
| | | {{ item2.rectificationRemark }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | | |
| | | </basic-container> |
| | |
| | | slot: true |
| | | }, |
| | | { |
| | | width: 140, |
| | | label: "场所地址", |
| | | prop: "location", |
| | | span: 24, |
| | | row: true, |
| | | overHidden: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 46, |
| | | }, |
| | |
| | | span: 24, |
| | | }, |
| | | { |
| | | width: 140, |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | searchLabelWidth: 46, |
| | | }, |
| | | { |
| | | width: 140, |
| | | label: "是否存在隐患", |
| | | prop: "hiddenDangerNumber", |
| | | type: 'select', |
| | | span: 24, |
| | | hide: true, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 110, |
| | | search: true, |
| | | dicData: [{ |
| | | label: '不存在', |
| | | value: 0 |
| | | }, { |
| | | label: '存在', |
| | | value: 1 |
| | | }] |
| | | |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | |
| | | getDetail(row) { |
| | | this.isDetail = true |
| | | getDetail(row.id).then(res => { |
| | | // console.log("****1245****", res.data) |
| | | let recordInfo = res.data |
| | | getPatrolGroupTree({ |
| | | type: 1, |
| | | childType: 1 |
| | | }).then((res) => { |
| | | const dataResult = res.data.data |
| | | dataResult.forEach(item => { |
| | | if (item.hasChildren) { |
| | | item.children.forEach(item2 => { |
| | | recordInfo.data.patrolRecordVOList.forEach(item3 => { |
| | | if (item2.id == item3.itemId) { |
| | | item2.rectificationRemark = item3.rectificationRemark |
| | | // item2.rectificationImageUrls = item3.rectificationImageUrls |
| | | // item2.rectificationTime = item3.rectificationTime |
| | | // item2.imageUrls = item3.imageUrls |
| | | |
| | | item2.imageUrlsList = [] |
| | | item2.rectificationImageUrlsList = [] |
| | | if (item3.imageUrls) { |
| | | item2.imageUrlsList = item3.imageUrls.split(',').map(ele => { |
| | | return website.minioUrl + ele |
| | | }) |
| | | } |
| | | if (item3.rectificationImageUrls) { |
| | | item2.rectificationImageUrlsList = item3.rectificationImageUrls.split(',') |
| | | .map(ele => { |
| | | return website.minioUrl + ele |
| | | }) |
| | | } |
| | | |
| | | item2.radio = "1" |
| | | } else { |
| | | item2.radio = '2' |
| | | } |
| | | }) |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | |
| | | this.patrolTree = dataResult |
| | | console.log("****1245****", dataResult) |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | getPatrolGroupTree({ |
| | | type: 1, |
| | | childType: 1 |
| | | }).then((res) => { |
| | | const data = res.data.data |
| | | this.patrolTree = data |
| | | // const column = this.findObject(this.option.column, "articleList") |
| | | // column.dicData = res.data.data |
| | | this.loading = false |
| | | }) |
| | | // getPatrolGroupTree({ |
| | | // type: 1, |
| | | // childType: 1 |
| | | // }).then((res) => { |
| | | // const data = res.data.data |
| | | // this.patrolTree = data |
| | | // this.loading = false |
| | | // }) |
| | | }, |
| | | updateFb(row) { |
| | | if (row.publish == "0") { |
| | |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |
| | | |
| | | .title { |
| | | margin: 10px; |
| | | height: 40px; |
| | | background-color: #eee; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .icon { |
| | | width: 4px; |
| | | height: 18px; |
| | | background-color: #409dfe; |
| | | margin: 0 10px; |
| | | color: transparent; |
| | | } |
| | | } |
| | | |
| | | .basic-info { |
| | | padding: 0 20px; |
| | | font-size: 14px; |
| | | |
| | | .info-item { |
| | | display: flex; |
| | | padding: 10px; |
| | | |
| | | .info-name { |
| | | width: 100px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .info-value { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .question-list { |
| | | padding: 0 20px; |
| | | font-size: 14px; |
| | | |
| | | .question-type { |
| | | height: 60px; |
| | | display: flex; |
| | | align-items: center; |
| | | cursor: pointer; |
| | | justify-content: space-between; |
| | | padding-right: 20px; |
| | | |
| | | .type-name {} |
| | | |
| | | .icon-box {} |
| | | } |
| | | |
| | | .question-item { |
| | | margin-bottom: 20px; |
| | | padding: 10px; |
| | | background: #f5f7fa; |
| | | border-radius: 8px; |
| | | |
| | | &>div { |
| | | margin: 14px 0; |
| | | } |
| | | |
| | | .question-name { |
| | | display: flex; |
| | | |
| | | .key { |
| | | width: 80%; |
| | | padding-right: 20px; |
| | | word-break: break-all; |
| | | } |
| | | |
| | | .value { |
| | | width: 20%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .yh-pic-box { |
| | | display: flex; |
| | | height: 100px; |
| | | |
| | | .yh-pic-name { |
| | | width: 100px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: left; |
| | | } |
| | | |
| | | .yh-pic-list { |
| | | width: 0; |
| | | flex: 1; |
| | | display: flex; |
| | | } |
| | | } |
| | | |
| | | .yh-remark { |
| | | display: flex; |
| | | |
| | | .yh-remark-name { |
| | | width: 100px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: left; |
| | | } |
| | | |
| | | .yh-remark-value { |
| | | word-break: break-all; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | labelWidth: 120, |
| | | |
| | | }, |
| | | |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | label: "学生人数", |
| | | prop: "studentNumber", |
| | | }, |
| | | { |
| | | label: "教职工人数", |
| | | prop: "workersNumber", |
| | | }, |
| | | { |
| | | label: "专职保安", |
| | | prop: "securityNumber", |
| | | }, |
| | | { |
| | | label: "专职门卫", |
| | | prop: "guardNumber", |
| | | }, |
| | | { |
| | | label: "专兼职保卫人员", |
| | | prop: "temporarySecurityNumber", |
| | | }, |
| | | { |
| | | label: "走读/寄宿", |
| | | prop: "dayStudentsNumber", |
| | | }, |
| | | { |
| | | label: "住校生人数", |
| | | prop: "residentialStudentsNumber", |
| | | }, |
| | | { |
| | | label: "宿舍管理人员", |
| | | prop: "housemasterNumber", |
| | | }, { |
| | | labelWidth: 100, |
| | | label: "法人信息", |
| | | prop: "legalPerson", |
| | | }, |
| | | |
| | | { |
| | | labelWidth: 100, |
| | | label: "法人电话", |
| | |
| | | that.placeElement.page, |
| | | that.placeElement.query |
| | | ) |
| | | |
| | | done() |
| | | }) |
| | | ) |
| | | } else { |
| | | console.log("error submit!!") |
| | | that.disabled = false; |
| | | return false |
| | | } |
| | | }) |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
| | | :permission="permissionList" @row-save="rowSave" @row-del="rowDel" :before-open="beforeOpen" @search-change="searchChange" |
| | | @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange" |
| | | @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | :permission="permissionList" @row-save="rowSave" @row-del="rowDel" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size}" slot="age"> |
| | | <el-tag :size="size">{{ |
| | | row.age |
| | |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="telephone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'telephoneflag')" |
| | | v-text="textDispose(row, 'telephoneflag', 'telephone')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="idCard"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')" |
| | | v-text="textDispose(row, 'idCardflag', 'idCard')"> |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot="menuLeft"> |
| | | <!-- <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete" @click="handleDelete">删 除 |
| | | </el-button> --> |
| | | <el-button type="primary" size="small" @click="handleQueryAlarm(1)">未成年人 ({{ countInfo.minors }}) 人 |
| | | </el-button> |
| | | <el-button type="primary" size="small" @click="handleQueryAlarm(2)">少数民族 ({{ countInfo.nationalMinority }}) 人 |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'telephoneflag')" |
| | | v-text="textDispose(row, 'telephoneflag', 'telephone')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="idCard"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')" |
| | | v-text="textDispose(row, 'idCardflag', 'idCard')"> |
| | | </el-button> |
| | | </template> |
| | | |
| | | <!-- --> |
| | | |
| | | <template slot-scope="{row, size}" slot="menu"> |
| | | <!-- <el-button :size="size" type="text" icon="el-icon-s-check" v-if="permission.place_audit_cur" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getPractitionerList as getList, |
| | | add, |
| | | getWarningPersonnelCount as getCount |
| | | } from "@/api/place/place" |
| | | import { |
| | | remove |
| | | } from "@/api/place/practitioner" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import { |
| | | getPractitionerList as getList, |
| | | add, |
| | | getWarningPersonnelCount as getCount |
| | | } from "@/api/place/place" |
| | | import { |
| | | remove |
| | | } from "@/api/place/practitioner" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | |
| | | import website from '@/config/website' |
| | | import website from '@/config/website' |
| | | |
| | | import auditBase from './components/auditBase' |
| | | import baseAllInfo from './components/baseAllInfo' |
| | | import auditBase from './components/auditBase' |
| | | import baseAllInfo from './components/baseAllInfo' |
| | | |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function (rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 160, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | addBtn: false, |
| | | index: true, |
| | | viewBtn: true, |
| | | editBtn: false, |
| | | delBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | overHidden: true, |
| | | label: "姓名", |
| | | span: 12, |
| | | prop: "name", |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | |
| | | }, |
| | | { |
| | | label: "性别", |
| | | prop: "gender", |
| | | width: 80, |
| | | align:"center", |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "男", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "女", |
| | | value: 0 |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "民族", |
| | | width: 80, |
| | | dicUrl: "/api/blade-system/dict-biz/tree?code=nationType", |
| | | props: { |
| | | label: "title", |
| | | value: "key", |
| | | }, |
| | | prop: "ethnicity", |
| | | type: "select", |
| | | dataType: "number" |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | // search: true, |
| | | width: 160, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | }, |
| | | { |
| | | label: "电话号码", |
| | | prop: "telephone", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 110, |
| | | search: true, |
| | | }, |
| | | { |
| | | width: 80, |
| | | label: "年龄", |
| | | prop: "age", |
| | | align:"center" |
| | | }, |
| | | { |
| | | minWidth: 160, |
| | | label: "现居住地", |
| | | prop: "tempAddress", |
| | | }, |
| | | { |
| | | label: "岗位", |
| | | prop: "jobNature", |
| | | }, { |
| | | width: 110, |
| | | label: '从业人员照片', |
| | | prop: 'employerImg', |
| | | fileType: 'img', |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | disabled: true, |
| | | row: true, |
| | | span: 12, |
| | | }, { |
| | | label: "工作单位", |
| | | prop: "employer", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: "标签", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "categoryName", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | label: "状态", |
| | | prop: "resignationFlag", |
| | | align: 'center', |
| | | searchSpan: 4, |
| | | search: true, |
| | | type: "select", |
| | | dicData: [ |
| | | { |
| | | label: "在职", |
| | | value: "1" |
| | | }, |
| | | { |
| | | label: "已离职", |
| | | value: "2" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "入职时间", |
| | | prop: "employmentTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "离职时间", |
| | | prop: "resignationTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "预警人员", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "type", |
| | | searchSpan: 4, |
| | | hide: true, |
| | | type: "select", |
| | | search: true, |
| | | dicData: [{ |
| | | label: "未成年人", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "少数民族", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "以上都有", |
| | | value: 3 |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 160, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | addBtn: false, |
| | | index: true, |
| | | viewBtn: true, |
| | | editBtn: false, |
| | | delBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "所属街道", |
| | | parent: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | prop: "townStreetName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiName", |
| | | width: 150, |
| | | search: true, |
| | | type: "tree", |
| | | searchSpan: 4, |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "姓名", |
| | | span: 12, |
| | | prop: "name", |
| | | searchSpan: 3, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | |
| | | }, |
| | | { |
| | | label: "性别", |
| | | prop: "gender", |
| | | width: 80, |
| | | align: "center", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "女", |
| | | value: 0 |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "民族", |
| | | width: 80, |
| | | dicUrl: "/api/blade-system/dict-biz/tree?code=nationType", |
| | | props: { |
| | | label: "title", |
| | | value: "key", |
| | | }, |
| | | prop: "ethnicity", |
| | | type: "select", |
| | | dataType: "number" |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | // search: true, |
| | | width: 160, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | }, |
| | | { |
| | | label: "电话号码", |
| | | prop: "telephone", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 110, |
| | | search: true, |
| | | }, |
| | | { |
| | | width: 80, |
| | | label: "年龄", |
| | | prop: "age", |
| | | align: "center" |
| | | }, |
| | | { |
| | | minWidth: 160, |
| | | label: "现居住地", |
| | | prop: "tempAddress", |
| | | }, |
| | | { |
| | | label: "岗位", |
| | | prop: "jobNature", |
| | | }, { |
| | | width: 110, |
| | | label: '从业人员照片', |
| | | prop: 'employerImg', |
| | | fileType: 'img', |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | disabled: true, |
| | | row: true, |
| | | span: 12, |
| | | }, { |
| | | label: "工作单位", |
| | | prop: "employer", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: "标签", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "categoryName", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | label: "状态", |
| | | searchLabelWidth: 60, |
| | | prop: "resignationFlag", |
| | | align: 'center', |
| | | searchSpan: 3, |
| | | search: true, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "在职", |
| | | value: "1" |
| | | }, |
| | | { |
| | | label: "已离职", |
| | | value: "2" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "入职时间", |
| | | prop: "employmentTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "离职时间", |
| | | prop: "resignationTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "预警人员", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "type", |
| | | searchSpan: 3, |
| | | hide: true, |
| | | type: "select", |
| | | search: true, |
| | | dicData: [{ |
| | | label: "未成年人", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "少数民族", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "以上都有", |
| | | value: 3 |
| | | } |
| | | ], |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | data: [], |
| | | |
| | | auditBasePopup: false, |
| | | |
| | | countInfo: {} |
| | | } |
| | | }, |
| | | |
| | | provide() { |
| | | return { |
| | | placeElement: this, |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | auditBase, |
| | | baseAllInfo |
| | | }, |
| | | |
| | | |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | // addBtn: this.vaildData(this.permission.place_add, true), |
| | | viewBtn: this.vaildData(this.permission.place_practitioner_view, true), |
| | | delBtn: this.vaildData(this.permission.place_practitioner_delete, true), |
| | | // editBtn: this.vaildData(this.permission.place_edit, true), |
| | | } |
| | | }, |
| | | data: [], |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | auditBasePopup: false, |
| | | showConfirmFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '待审核', |
| | | type: 'warning' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已审核', |
| | | type: 'success' |
| | | } |
| | | } else if (data == 3) { |
| | | tags = { |
| | | text: '未通过', |
| | | type: 'danger' |
| | | } |
| | | } else if (data == 4) { |
| | | tags = { |
| | | text: '待完善', |
| | | type: 'info' |
| | | } |
| | | } |
| | | |
| | | countInfo: {} |
| | | } |
| | | }, |
| | | |
| | | provide() { |
| | | return { |
| | | placeElement: this, |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | auditBase, |
| | | baseAllInfo |
| | | }, |
| | | |
| | | |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | // addBtn: this.vaildData(this.permission.place_add, true), |
| | | viewBtn: this.vaildData(this.permission.place_practitioner_view, true), |
| | | delBtn: this.vaildData(this.permission.place_practitioner_delete, true), |
| | | // editBtn: this.vaildData(this.permission.place_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showConfirmFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | return tags |
| | | } |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '待审核', |
| | | type: 'warning' |
| | | }, |
| | | |
| | | showResignationFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已审核', |
| | | type: 'success' |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '在职', |
| | | type: 'success' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已离职', |
| | | type: 'danger' |
| | | } |
| | | } |
| | | } else if (data == 3) { |
| | | tags = { |
| | | text: '未通过', |
| | | type: 'danger' |
| | | } |
| | | } else if (data == 4) { |
| | | tags = { |
| | | text: '待完善', |
| | | type: 'info' |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | showResignationFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '在职', |
| | | type: 'success' |
| | | showGender() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已离职', |
| | | type: 'danger' |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '男', |
| | | type: 'primary' |
| | | } |
| | | } else if (data == 0) { |
| | | tags = { |
| | | text: '女', |
| | | type: 'primary' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | showGender() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '男', |
| | | type: 'primary' |
| | | } |
| | | } else if (data == 0) { |
| | | tags = { |
| | | text: '女', |
| | | type: 'primary' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | decimalProcessing() { |
| | | return (data) => { |
| | | if (data != null) { |
| | | return Number(data).toFixed(6) |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | decimalProcessing() { |
| | | return (data) => { |
| | | if (data != null) { |
| | | return Number(data).toFixed(6) |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | return '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | handleQueryAlarm(type) { |
| | | this.query.type = type |
| | | this.onLoad(this.page) |
| | | }, |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | methods: { |
| | | handleQueryAlarm(type) { |
| | | this.query.type = type |
| | | this.onLoad(this.page) |
| | | }, |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2] |
| | | } |
| | | }, |
| | | rowDel(row) { |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2] |
| | | } |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | }) |
| | | }, |
| | | |
| | | auditCur(row) { |
| | | this.curAuditRow = row |
| | | this.auditBasePopup = true |
| | | }, |
| | | auditCur(row) { |
| | | this.curAuditRow = row |
| | | this.auditBasePopup = true |
| | | }, |
| | | |
| | | ManageTenants(item) { |
| | | this.$refs.BaseAllInfo.initOpen(item) |
| | | }, |
| | | ManageTenants(item) { |
| | | this.$refs.BaseAllInfo.initOpen(item) |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | |
| | | delete row.smallLabel |
| | | |
| | | add({ |
| | | ...row, |
| | | label, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | rowSave(row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | let label = row.label |
| | | |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | if (this.form.resignationFlag) { |
| | | if (this.form.resignationFlag == 1) { |
| | | this.form.resignationFlag = '在职' |
| | | } |
| | | if (this.form.resignationFlag == 2) { |
| | | this.form.resignationFlag = '已离职' |
| | | } |
| | | // this.form.employerImg = this.form.employerImg.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',') |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | done() |
| | | } |
| | | }, |
| | | |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | delete row.smallLabel |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = res.data.data |
| | | |
| | | this.page.total = data.total |
| | | |
| | | this.data = data.records |
| | | this.getPeopleCount(); |
| | | |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'telephoneflag', false) |
| | | this.$set(item, 'idCardflag', false) |
| | | if (item.employerImg && item.employerImg != '' && item.employerImg != null && item.employerImg |
| | | .length) { |
| | | var urls = [] |
| | | var names = item.employerImg.split(",").filter(item => item != '') |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | add({ |
| | | ...row, |
| | | label, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | item.employerImg = urls.join(",") |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | if (this.form.resignationFlag) { |
| | | if (this.form.resignationFlag == 1) { |
| | | this.form.resignationFlag = '在职' |
| | | } |
| | | if (this.form.resignationFlag == 2) { |
| | | this.form.resignationFlag = '已离职' |
| | | } |
| | | // this.form.employerImg = this.form.employerImg.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',') |
| | | } |
| | | done() |
| | | } |
| | | }, |
| | | |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = res.data.data |
| | | |
| | | this.page.total = data.total |
| | | |
| | | this.data = data.records |
| | | this.getPeopleCount(); |
| | | |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'telephoneflag', false) |
| | | this.$set(item, 'idCardflag', false) |
| | | if (item.employerImg && item.employerImg != '' && item.employerImg != null && item.employerImg |
| | | .length) { |
| | | var urls = [] |
| | | var names = item.employerImg.split(",").filter(item => item != '') |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.employerImg = urls.join(",") |
| | | } |
| | | }) |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | |
| | | |
| | | getPeopleCount(params = {}) { |
| | | // 在职的 |
| | | // params = { |
| | | // resignationFlag:1 |
| | | // } |
| | | getCount(params).then(res => { |
| | | this.countInfo = res.data.data; |
| | | }) |
| | | getPeopleCount(params = {}) { |
| | | // 在职的 |
| | | // params = { |
| | | // resignationFlag:1 |
| | | // } |
| | | getCount(params).then(res => { |
| | | this.countInfo = res.data.data; |
| | | }) |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | |
| | | .type-row { |
| | | display: flex; |
| | | padding: 0 0 20px; |
| | | } |
| | | .type-row { |
| | | display: flex; |
| | | padding: 0 0 20px; |
| | | } |
| | | |
| | | .type-item { |
| | | padding: 12px 12px; |
| | | background-color: #429FFF; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | margin-right: 30px; |
| | | border-radius: 6px; |
| | | text-align: center; |
| | | } |
| | | .type-item { |
| | | padding: 12px 12px; |
| | | background-color: #429FFF; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | margin-right: 30px; |
| | | border-radius: 6px; |
| | | text-align: center; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
| | | :permission="permissionList" @row-save="rowSave" @row-del="rowDel" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size}" slot="age"> |
| | | <el-tag :size="size">{{ |
| | | row.age |
| | | }}</el-tag> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="gender"> |
| | | <el-tag :size="size" :type="showGender(row.gender).type">{{ |
| | | showGender(row.gender).text |
| | | }}</el-tag> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="resignationFlag"> |
| | | <el-tag :size="size" :type="showResignationFlag(row.resignationFlag).type">{{ |
| | | showResignationFlag(row.resignationFlag).text |
| | | }}</el-tag> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="telephone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'telephoneflag')" |
| | | v-text="textDispose(row, 'telephoneflag', 'telephone')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="idCard"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')" |
| | | v-text="textDispose(row, 'idCardflag', 'idCard')"> |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot="menuLeft"> |
| | | <!-- <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete" @click="handleDelete">删 除 |
| | | </el-button> --> |
| | | <el-button type="primary" size="small" @click="handleQueryAlarm(1)">未成年人 ({{ countInfo.minors }}) 人 |
| | | </el-button> |
| | | <el-button type="primary" size="small" @click="handleQueryAlarm(2)">少数民族 ({{ countInfo.nationalMinority }}) 人 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="menu"> |
| | | <!-- <el-button :size="size" type="text" icon="el-icon-s-check" v-if="permission.place_audit_cur" |
| | | @click="auditCur({ ...row, confirmFlag: 1 })">审核 |
| | | </el-button> |
| | | |
| | | <el-button :size="size" type="text" icon="el-icon-edit" v-if="permission.place_manage_tenants" |
| | | @click="ManageTenants(row)">场所维护 |
| | | </el-button> --> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="principalPhone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'principalPhoneflag')" |
| | | v-text="textDispose(row, 'principalPhoneflag', 'principalPhone')"> |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="principalIdCard"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'principalIdCardflag')" |
| | | v-text="textDispose(row, 'principalIdCardflag', 'principalIdCard')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | |
| | | <baseAllInfo ref="BaseAllInfo"></baseAllInfo> |
| | | |
| | | <el-dialog class="place-info-box audit-info-box" title="审核" append-to-body :visible.sync="auditBasePopup" |
| | | width="30%"> |
| | | <auditBase></auditBase> |
| | | </el-dialog> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getPractitionerList as getList, |
| | | add, |
| | | getWarningPersonnelCount as getCount |
| | | } from "@/api/place/place" |
| | | import { |
| | | remove |
| | | } from "@/api/place/practitioner" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | |
| | | import website from '@/config/website' |
| | | |
| | | import auditBase from './components/auditBase' |
| | | import baseAllInfo from './components/baseAllInfo' |
| | | |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 160, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | addBtn: false, |
| | | index: true, |
| | | viewBtn: true, |
| | | editBtn: false, |
| | | delBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "所属街道", |
| | | parent: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | prop: "townStreetName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiName", |
| | | width: 150, |
| | | search: true, |
| | | type: "tree", |
| | | searchSpan: 4, |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "姓名", |
| | | span: 12, |
| | | prop: "name", |
| | | searchSpan: 3, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | |
| | | }, |
| | | { |
| | | label: "性别", |
| | | prop: "gender", |
| | | width: 80, |
| | | align: "center", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "女", |
| | | value: 0 |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "民族", |
| | | width: 80, |
| | | dicUrl: "/api/blade-system/dict-biz/tree?code=nationType", |
| | | props: { |
| | | label: "title", |
| | | value: "key", |
| | | }, |
| | | prop: "ethnicity", |
| | | type: "select", |
| | | dataType: "number" |
| | | }, |
| | | { |
| | | overHidden: true, |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | // search: true, |
| | | width: 160, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | }, |
| | | { |
| | | label: "电话号码", |
| | | prop: "telephone", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 110, |
| | | search: true, |
| | | }, |
| | | { |
| | | width: 80, |
| | | label: "年龄", |
| | | prop: "age", |
| | | align: "center" |
| | | }, |
| | | { |
| | | minWidth: 160, |
| | | label: "现居住地", |
| | | prop: "tempAddress", |
| | | }, |
| | | { |
| | | label: "岗位", |
| | | prop: "jobNature", |
| | | }, { |
| | | width: 110, |
| | | label: '从业人员照片', |
| | | prop: 'employerImg', |
| | | fileType: 'img', |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | disabled: true, |
| | | row: true, |
| | | span: 12, |
| | | }, { |
| | | label: "工作单位", |
| | | prop: "employer", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: "标签", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "categoryName", |
| | | searchSpan: 4 |
| | | }, |
| | | { |
| | | label: "状态", |
| | | searchLabelWidth: 60, |
| | | prop: "resignationFlag", |
| | | align: 'center', |
| | | searchSpan: 3, |
| | | search: true, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "在职", |
| | | value: "1" |
| | | }, |
| | | { |
| | | label: "已离职", |
| | | value: "2" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: "入职时间", |
| | | prop: "employmentTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "离职时间", |
| | | prop: "resignationTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "预警人员", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "type", |
| | | searchSpan: 3, |
| | | hide: true, |
| | | type: "select", |
| | | search: true, |
| | | dicData: [{ |
| | | label: "未成年人", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "少数民族", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "以上都有", |
| | | value: 3 |
| | | } |
| | | ], |
| | | }, |
| | | ], |
| | | }, |
| | | data: [], |
| | | |
| | | auditBasePopup: false, |
| | | |
| | | countInfo: {} |
| | | } |
| | | }, |
| | | |
| | | provide() { |
| | | return { |
| | | placeElement: this, |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | auditBase, |
| | | baseAllInfo |
| | | }, |
| | | |
| | | |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | // addBtn: this.vaildData(this.permission.place_add, true), |
| | | viewBtn: this.vaildData(this.permission.place_practitioner_view, true), |
| | | delBtn: this.vaildData(this.permission.place_practitioner_delete, true), |
| | | // editBtn: this.vaildData(this.permission.place_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showConfirmFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '待审核', |
| | | type: 'warning' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已审核', |
| | | type: 'success' |
| | | } |
| | | } else if (data == 3) { |
| | | tags = { |
| | | text: '未通过', |
| | | type: 'danger' |
| | | } |
| | | } else if (data == 4) { |
| | | tags = { |
| | | text: '待完善', |
| | | type: 'info' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | showResignationFlag() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '在职', |
| | | type: 'success' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | text: '已离职', |
| | | type: 'danger' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | showGender() { |
| | | return (data) => { |
| | | let tags = { |
| | | text: '', |
| | | type: '' |
| | | } |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | text: '男', |
| | | type: 'primary' |
| | | } |
| | | } else if (data == 0) { |
| | | tags = { |
| | | text: '女', |
| | | type: 'primary' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | decimalProcessing() { |
| | | return (data) => { |
| | | if (data != null) { |
| | | return Number(data).toFixed(6) |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | handleQueryAlarm(type) { |
| | | this.query.type = type |
| | | this.onLoad(this.page) |
| | | }, |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | locationDispose(data) { |
| | | data = data.split(',') |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2] |
| | | } |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | auditCur(row) { |
| | | this.curAuditRow = row |
| | | this.auditBasePopup = true |
| | | }, |
| | | |
| | | ManageTenants(item) { |
| | | this.$refs.BaseAllInfo.initOpen(item) |
| | | }, |
| | | |
| | | rowSave(row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | |
| | | delete row.smallLabel |
| | | |
| | | add({ |
| | | ...row, |
| | | label, |
| | | ...this.locationDispose(row.location) |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | if (this.form.resignationFlag) { |
| | | if (this.form.resignationFlag == 1) { |
| | | this.form.resignationFlag = '在职' |
| | | } |
| | | if (this.form.resignationFlag == 2) { |
| | | this.form.resignationFlag = '已离职' |
| | | } |
| | | // this.form.employerImg = this.form.employerImg.split(",").filter(item => item != '').map(item => website.minioUrl + item).join(',') |
| | | } |
| | | done() |
| | | } |
| | | }, |
| | | |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => { |
| | | const data = res.data.data |
| | | |
| | | this.page.total = data.total |
| | | |
| | | this.data = data.records |
| | | this.getPeopleCount(); |
| | | |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'telephoneflag', false) |
| | | this.$set(item, 'idCardflag', false) |
| | | if (item.employerImg && item.employerImg != '' && item.employerImg != null && item.employerImg |
| | | .length) { |
| | | var urls = [] |
| | | var names = item.employerImg.split(",").filter(item => item != '') |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.employerImg = urls.join(",") |
| | | } |
| | | }) |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | |
| | | |
| | | getPeopleCount(params = {}) { |
| | | // 在职的 |
| | | // params = { |
| | | // resignationFlag:1 |
| | | // } |
| | | getCount(params).then(res => { |
| | | this.countInfo = res.data.data; |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | |
| | | .type-row { |
| | | display: flex; |
| | | padding: 0 0 20px; |
| | | } |
| | | |
| | | .type-item { |
| | | padding: 12px 12px; |
| | | background-color: #429FFF; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | margin-right: 30px; |
| | | border-radius: 6px; |
| | | text-align: center; |
| | | } |
| | | </style> |
| | |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "申请时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, |
| | | { |
| | | width: 110, |
| | | span: 12, |
| | | label: "姓名", |
| | | prop: "name", |
| | | searchSpan: 4, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 60, |
| | | search: true, |
| | | align: 'center', |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] + " 00:00:00" |
| | | params.endTime = dateRange[1] + " 23:59:59" |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "房东名称", |
| | | prop: "houseName", |
| | | width: 110, |
| | | // editDisplay:false, |
| | | // hide: true, |
| | | }, |
| | | { |
| | | label: "房东电话", |
| | | prop: "housePhone", |
| | | width: 110, |
| | | // editDisplay:false, |
| | | // hide: true, |
| | | }, |
| | | { |
| | | label: "房东身份证", |
| | | prop: "houseIdCard", |
| | | width: 110, |
| | | // editDisplay:false, |
| | | // hide: true, |
| | | }, |
| | | { |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | hide: true, |
| | | }, |
| | | { |
| | | width: 80, |
| | | // labelWidth: 110, |
| | | searchSpan: 3, |
| | |
| | | }, |
| | | uploadAfter(res, done, loading, column) { |
| | | this.excelBox = false |
| | | this.$alert(res) |
| | | this.refreshChange() |
| | | done() |
| | | }, |
| | |
| | | handleTemplate() { |
| | | exportBlob( |
| | | `/api/blade-household/household/export-tenant-template?isTenant=1&${this.website.tokenHeader}=${getToken()}` |
| | | ).then( |
| | | ).then( |
| | | res => { |
| | | downloadXls(res.data, "租客数据模板.xlsx") |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetatils(this.form.id).then(res => { |
| | | this.form = res.data.data |
| | | done() |
| | | }) |
| | | // getDetatils(this.form.id).then(res => { |
| | | // this.form = res.data.data |
| | | done() |
| | | // }) |
| | | } |
| | | this.initFlag = true |
| | | }, |
| New file |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 |
| | | 除 |
| | | </el-button> |
| | | <!-- <el-button size="small" icon="el-icon-s-order" plain @click="kqcomment">开启评论 |
| | | </el-button> |
| | | <el-button size="small" icon="el-icon-s-release" plain @click="gbcomment">关闭评论 |
| | | </el-button> --> |
| | | </template> |
| | | |
| | | <template slot-scope="{type,size,row }" slot="menu"> |
| | | <!-- <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row, 0)"> |
| | | 公益报名 |
| | | </el-button> |
| | | <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row, 1)"> |
| | | 创建议题 |
| | | </el-button> --> |
| | | <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)"> |
| | | 撤销 |
| | | </el-button> |
| | | <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)"> |
| | | 发布 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{ row, size }" slot="publish"> |
| | | <el-tag :size="size" :type="showPublish(row.publish).type" v-text="showPublish(row.publish).text"> |
| | | </el-tag> |
| | | </template> |
| | | |
| | | <template slot-scope="{ row }" slot="iscomment"> |
| | | <el-switch @change="iscommentInput($event, row)" v-model="row.iscomment" :active-value="'1'" |
| | | :inactive-value="'0'" active-color="#13ce66" inactive-color="#ccc"> |
| | | </el-switch> |
| | | </template> |
| | | </avue-crud> |
| | | |
| | | <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="50%" :before-close="handleClose"> |
| | | <span slot="title" class="dialog-footer"> |
| | | {{ discussForm.ontitle }} |
| | | </span> |
| | | <div id="" v-if="discussForm.eventType == 1"> |
| | | <avue-form @submit="handleSubmit" :option="optionDiscuss" v-model="discussForm"></avue-form> |
| | | </div> |
| | | |
| | | <div id="" v-else> |
| | | <avue-form @submit="handleSubmit" :option="optionEnroll" v-model="discussForm"> |
| | | </avue-form> |
| | | </div> |
| | | </el-dialog> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getNotice, |
| | | upcomment |
| | | } from "@/api/article/article" |
| | | |
| | | import { |
| | | getListPd, |
| | | removePd, |
| | | updatePd, |
| | | addPd, |
| | | getNoticePd, |
| | | upcommentPd |
| | | } from "@/api/discuss/publicDiscuss" |
| | | |
| | | import website from '@/config/website' |
| | | |
| | | |
| | | import { |
| | | getDistrictTree |
| | | } from "@/api/district/index" |
| | | |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | discussForm: { |
| | | ontitle: '', |
| | | title: '', |
| | | openFlag: 0, |
| | | numberRestrictions: 0, |
| | | voteRestrictions: 0, |
| | | userRestrictions: 0, |
| | | endTime: '', |
| | | articleId: '', |
| | | createTime: '', |
| | | updateTime: '', |
| | | deleteFlag: '', |
| | | repeatVote: 0, |
| | | voteNumberPublic: 0, |
| | | appointUser: '', |
| | | userIds: '', |
| | | eventType: 1, |
| | | }, |
| | | dialogVisibles: false, |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | | excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | overHidden: true, |
| | | label: "文章标题", |
| | | prop: "title", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入文章标题", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "文章封面", |
| | | prop: "url", |
| | | // align:'center', |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | // hide: true, |
| | | span: 24, |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "文章来源", |
| | | prop: "sourceName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | span: 24, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入文章类型", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "文章范围", |
| | | prop: "articleList", |
| | | span: 12, |
| | | minRows: 2, |
| | | type: "tree", |
| | | dataType: "string", |
| | | multiple: true, |
| | | tags: true, |
| | | // search: true, |
| | | dicData: [], |
| | | props: { |
| | | label: "name", |
| | | value: 'id' |
| | | }, |
| | | hide: true, |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "文章类型", |
| | | prop: "articleType", |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | searchSpan: 4, |
| | | checkStrictly: true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=articleType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | search: true, |
| | | type: "tree", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择文章类型", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | // { |
| | | // label: "发布时间", |
| | | // prop: "dateTime", |
| | | // type: "daterange", |
| | | // format: "yyyy-MM-dd", |
| | | // valueFormat: "yyyy-MM-dd", |
| | | // searchSpan: 6, |
| | | // searchRange: true, |
| | | // hide: true, |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: false, |
| | | // search: true, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请选择发布时间", |
| | | // trigger: "blur", |
| | | // }, ], |
| | | // }, |
| | | { |
| | | width: 100, |
| | | label: "发布时间", |
| | | prop: "createTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | search: true, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "发布状态", |
| | | prop: "publish", |
| | | searchSpan: 4, |
| | | value: "0", |
| | | slot: true, |
| | | search: true, |
| | | type: "select", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择发布状态", |
| | | trigger: "blur", |
| | | }, ], |
| | | dicData: [{ |
| | | label: "未发布", |
| | | value: "0", |
| | | }, |
| | | { |
| | | label: "已发布", |
| | | value: "1", |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "评论区", |
| | | prop: "iscomment", |
| | | slot: true, |
| | | type: "switch", |
| | | activeColor: "#13ce66", |
| | | inactiveColor: "#ccc", |
| | | value: '1', |
| | | dicData: [{ |
| | | label: "关闭", |
| | | value: "0", |
| | | }, |
| | | { |
| | | label: "开启", |
| | | value: "1", |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | label: "视频", |
| | | prop: "videoUrl", |
| | | type: "upload", |
| | | accept: "video/mp4", |
| | | display: false, |
| | | hide: true, |
| | | span: 24, |
| | | listType: "picture-img", |
| | | action: "/api/depl/put-depl", |
| | | propsHttp: { |
| | | url: "data", |
| | | }, |
| | | }, |
| | | { |
| | | label: "文章内容", |
| | | prop: "content", |
| | | component: "AvueUeditor", |
| | | options: { |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | // customConfig: { |
| | | // lineHeights: ['1', '1.15', '1.6', '2', '2.5', '3'] |
| | | // },//wangEditor编辑的配置 |
| | | props: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | }, |
| | | hide: true, |
| | | minRows: 6, |
| | | span: 24, |
| | | }, |
| | | ], |
| | | }, |
| | | data: [], |
| | | optionEnroll: { |
| | | column: [{ |
| | | label: "", |
| | | type: 'title', |
| | | prop: "title", |
| | | span: 24, |
| | | row: true, |
| | | offset: 2, |
| | | styles: { |
| | | fontSize: '24px' |
| | | } |
| | | }, { |
| | | labelWidth: 100, |
| | | label: '开启', |
| | | prop: 'openFlag', |
| | | type: 'radio', |
| | | button: true, |
| | | row: true, |
| | | offset: 6, |
| | | dicData: [{ |
| | | label: '开启', |
| | | value: 0 |
| | | }, { |
| | | label: '不开启', |
| | | value: 1 |
| | | }] |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | label: '开启投票', |
| | | prop: 'openFlag', |
| | | type: 'radio', |
| | | button: true, |
| | | row: true, |
| | | offset: 6, |
| | | dicData: [{ |
| | | label: '开启', |
| | | value: 0 |
| | | }, { |
| | | label: '不开启', |
| | | value: 1 |
| | | }] |
| | | }, |
| | | { |
| | | label: "截止时间", |
| | | row: true, |
| | | offset: 6, |
| | | prop: "endTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd hh:mm:ss", |
| | | valueFormat: "timestamp", |
| | | }, |
| | | ] |
| | | }, |
| | | optionDiscuss: { |
| | | column: [{ |
| | | label: "", |
| | | type: 'title', |
| | | prop: "title", |
| | | span: 24, |
| | | row: true, |
| | | offset: 2, |
| | | styles: { |
| | | fontSize: '24px' |
| | | } |
| | | }, { |
| | | labelWidth: 100, |
| | | label: '开启投票', |
| | | prop: 'openFlag', |
| | | type: 'radio', |
| | | button: true, |
| | | row: true, |
| | | offset: 6, |
| | | dicData: [{ |
| | | label: '开启', |
| | | value: 0 |
| | | }, { |
| | | label: '不开启', |
| | | value: 1 |
| | | }] |
| | | }, { |
| | | labelWidth: 100, |
| | | label: '开启签名', |
| | | prop: 'signatureFlag', |
| | | type: 'radio', |
| | | button: true, |
| | | row: true, |
| | | offset: 6, |
| | | dicData: [{ |
| | | label: '开启', |
| | | value: 0 |
| | | }, { |
| | | label: '不开启', |
| | | value: 1 |
| | | }] |
| | | }, |
| | | { |
| | | label: "截止时间", |
| | | row: true, |
| | | offset: 6, |
| | | prop: "endTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd hh:mm:ss", |
| | | valueFormat: "timestamp", |
| | | }, |
| | | ] |
| | | }, |
| | | districtTree: [], |
| | | } |
| | | }, |
| | | watch: { |
| | | "form.articleType": { |
| | | handler(val) { |
| | | if (val) { |
| | | var videoUrl = this.findObject(this.option.column, "videoUrl") |
| | | var content = this.findObject(this.option.column, "content") |
| | | if (val.indexOf('ksp') != -1) { |
| | | videoUrl.display = true |
| | | content.display = false |
| | | videoUrl.rules = [{ |
| | | required: false, |
| | | message: "请选择视频", |
| | | trigger: "blur", |
| | | }, ] |
| | | } else { |
| | | videoUrl.display = false |
| | | content.display = true |
| | | videoUrl.rules = "" |
| | | } |
| | | } |
| | | }, |
| | | immediate: true, |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.article_add, true), |
| | | viewBtn: this.vaildData(this.permission.article_view, true), |
| | | delBtn: this.vaildData(this.permission.article_delete, true), |
| | | editBtn: this.vaildData(this.permission.article_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showPublish() { |
| | | return (data) => { |
| | | if (data == 0) { |
| | | return { |
| | | text: '未发布', |
| | | type: 'info' |
| | | } |
| | | } else if (data == 1) { |
| | | return { |
| | | text: '已发布', |
| | | type: 'success' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | iscommentInput(e, data) { |
| | | upcomment(data.id, e).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | openDilog(row, type) { |
| | | this.dialogVisibles = true |
| | | this.discussForm.eventType = type |
| | | this.discussForm.articleId = row.id |
| | | this.discussForm.title = row.title |
| | | if (type == 0) { |
| | | this.discussForm.ontitle = '公益报名' |
| | | } else { |
| | | this.discussForm.ontitle = '创建议题' |
| | | } |
| | | }, |
| | | |
| | | handleSubmit(form, done) { |
| | | done() |
| | | addPd(form).then( |
| | | () => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.dialogVisibles = false |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | // loading(); |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | handleClose(done) { |
| | | done() |
| | | // this.$confirm('确认关闭?') |
| | | // .then(_ => { |
| | | // done(); |
| | | // }) |
| | | // .catch(_ => {}); |
| | | }, |
| | | rowSave(row, done, loading) { |
| | | if (row.videoUrl.length == 0) { |
| | | row.videoUrl = "" |
| | | } |
| | | row.userid = this.userInfo.user_id |
| | | row.articleRange = JSON.stringify(row.articleList) |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | row.articleRange = JSON.stringify(row.articleList) |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getNotice(this.form.id).then((res) => { |
| | | let data = res.data.data |
| | | if (data.url.length > 0) { |
| | | var urls = [] |
| | | var names = data.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | data.url = urls.join(",") |
| | | } |
| | | data.articleList = JSON.parse(data.articleRange) |
| | | this.form = data |
| | | }) |
| | | } |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | } |
| | | values.dateTime = null |
| | | } |
| | | values.type = 0 |
| | | this.loading = true |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.url.length > 0) { |
| | | var urls = [] |
| | | var names = item.url.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.url = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | getDistrictTree(params = {}).then((res) => { |
| | | const data = res.data.data |
| | | this.districtTree = data |
| | | const column = this.findObject(this.option.column, "articleList") |
| | | column.dicData = res.data.data |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | updateFb(row) { |
| | | if (row.publish == "0") { |
| | | row.publish = "1" |
| | | } else { |
| | | row.publish = "0" |
| | | } |
| | | |
| | | if (row.url.length > 0) { |
| | | var urls = [] |
| | | var split = row.url.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.url = urls.join(",") |
| | | } |
| | | |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | kqcomment() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据开启评论?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(() => { |
| | | return upcomment(this.ids, "1") |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | gbcomment() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据开启评论?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(() => { |
| | | return upcomment(this.ids, "0") |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | |
| | | :deep(.avue-form__menu--center) { |
| | | text-align: left; |
| | | } |
| | | |
| | | :deep(.avue-form__menu--center .el-button) { |
| | | margin: 0 5px 0 0; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <basic-container> |
| | | <!-- <avue-crud :option="optionParent" :table-loading="loading" :data="dataParent" :page="pageParent" ref="crud" |
| | | v-model="formParent" :permission="permissionList" :before-open="beforeOpen" @row-del="rowDel" |
| | | @row-update="rowUpdate" @row-save="rowSave" @row-click="handleRowClick" @search-change="searchChange" |
| | | @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange" |
| | | @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoadParent"> |
| | | <template slot="menuLeft"> |
| | | <el-button type="danger" size="small" icon="el-icon-delete" v-if="permission.dictbiz_delete" plain |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="scope" slot="menu"> |
| | | <el-button type="text" icon="el-icon-setting" size="small" @click.stop="handleRowClick(scope.row)" |
| | | v-if="userInfo.role_name.includes('admin')">字典配置 |
| | | </el-button> |
| | | </template> |
| | | <template slot-scope="{row}" slot="code"> |
| | | <el-tag @click="handleRowClick(row)" style="cursor:pointer">{{ row.code }}</el-tag> |
| | | </template> |
| | | <template slot-scope="{row}" slot="isSealed"> |
| | | <el-tag>{{ row.isSealed === 0 ? '否' : '是' }}</el-tag> |
| | | </template> |
| | | </avue-crud> --> |
| | | |
| | | |
| | | <!-- <el-dialog :title="`[${dictValue}]字典配置`" append-to-body :visible.sync="box" width="1000px"> --> |
| | | <avue-crud :option="optionChild" :table-loading="loadingChild" :page="pageChild" :data="dataChild" ref="crudChild" |
| | | v-model="formChild" :permission="permissionList" :before-open="beforeOpenChild" :before-close="beforeCloseChild" |
| | | @row-del="rowDelChild" @row-update="rowUpdateChild" @row-save="rowSaveChild" @search-change="searchChangeChild" |
| | | @search-reset="searchResetChild" @selection-change="selectionChangeChild" @current-change="currentChangeChild" |
| | | @size-change="sizeChangeChild" @refresh-change="refreshChangeChild" @on-load="onLoadChild"> |
| | | <template slot="menuLeft"> |
| | | <el-button type="danger" size="small" icon="el-icon-delete" v-if="permission.dict_delete" plain |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | <!-- <template slot-scope="scope" slot="menu"> |
| | | <el-button type="text" icon="el-icon-circle-plus-outline" size="small" |
| | | @click.stop="handleAdd(scope.row,scope.index)" v-if="userInfo.role_name.includes('admin')">新增子项 |
| | | </el-button> |
| | | </template> --> |
| | | <template slot-scope="{row, size}" slot="isSealed"> |
| | | <el-tag :size="size">{{ row.isSealed === 0 ? '否' : '是' }}</el-tag> |
| | | </template> |
| | | </avue-crud> |
| | | <!-- </el-dialog> --> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getParentList, |
| | | getChildList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getDict, |
| | | getDictTree |
| | | } from "@/api/system/dictbiz" |
| | | import { |
| | | optionParent, |
| | | optionChild |
| | | } from "@/option/system/dictCategory" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | |
| | | export default { |
| | | data () { |
| | | return { |
| | | dictValue: '暂无', |
| | | parentId: '1722966265111248897', |
| | | formParent: {}, |
| | | formChild: {}, |
| | | selectionList: [], |
| | | query: {}, |
| | | box: false, |
| | | loading: true, |
| | | loadingChild: true, |
| | | pageParent: { |
| | | pageSize: 10, |
| | | pageSizes: [10, 30, 50, 100, 200], |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | pageChild: { |
| | | pageSize: 10, |
| | | pageSizes: [10, 30, 50, 100, 200], |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | dataParent: [], |
| | | dataChild: [], |
| | | optionParent: optionParent, |
| | | optionChild: { |
| | | ...optionChild, |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 160, |
| | | }, |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "permission"]), |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.dictbiz_add, false), |
| | | delBtn: this.vaildData(this.permission.dictbiz_delete, false), |
| | | editBtn: this.vaildData(this.permission.dictbiz_edit, false), |
| | | viewBtn: false, |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach(ele => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | } |
| | | }, |
| | | mounted () { |
| | | // this.initData(); |
| | | }, |
| | | methods: { |
| | | initData () { |
| | | getDictTree().then(res => { |
| | | const column = this.findObject(this.optionChild.column, "parentId") |
| | | column.dicData = res.data.data |
| | | }) |
| | | }, |
| | | handleAdd (row) { |
| | | this.formChild.dictValue = "" |
| | | this.formChild.dictKey = "" |
| | | this.formChild.sort = 0 |
| | | this.formChild.isSealed = 0 |
| | | this.formChild.remark = "" |
| | | this.formChild.parentId = row.id |
| | | this.$refs.crudChild.rowAdd() |
| | | }, |
| | | rowSave (row, done, loading) { |
| | | const form = { |
| | | ...row, |
| | | dictKey: -1, |
| | | } |
| | | add(form).then(() => { |
| | | this.onLoadParent(this.pageParent) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowUpdate (row, index, done, loading) { |
| | | update(row).then(() => { |
| | | this.onLoadParent(this.pageParent) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.onLoadChild(this.pageChild) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoadParent(this.pageParent) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | }) |
| | | }, |
| | | handleRowClick (row) { |
| | | this.query = {} |
| | | this.parentId = row.id |
| | | this.dictValue = row.dictValue |
| | | |
| | | const code = this.findObject(this.optionChild.column, "code") |
| | | code.value = row.code |
| | | const parentId = this.findObject(this.optionChild.column, "parentId") |
| | | parentId.value = row.id |
| | | |
| | | this.formChild.code = row.code |
| | | this.formChild.parentId = row.id |
| | | |
| | | this.box = true |
| | | this.onLoadChild(this.pageChild) |
| | | }, |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoadParent(this.pageParent) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.pageParent.currentPage = 1 |
| | | this.onLoadParent(this.pageParent, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoadParent(this.pageParent) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpen (done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDict(this.formParent.id).then(res => { |
| | | this.formParent = res.data.data |
| | | }) |
| | | } |
| | | done() |
| | | }, |
| | | currentChange (currentPage) { |
| | | this.pageParent.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.pageParent.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoadParent(this.pageParent, this.query) |
| | | }, |
| | | rowSaveChild (row, done, loading) { |
| | | row.code = "articleType" |
| | | row.parentId = "1722966265111248897" |
| | | add(row).then(() => { |
| | | this.onLoadChild(this.pageChild) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowUpdateChild (row, index, done, loading) { |
| | | update(row).then(() => { |
| | | this.onLoadChild(this.pageChild) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowDelChild (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoadChild(this.pageChild) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | }) |
| | | }, |
| | | searchResetChild () { |
| | | this.query = {} |
| | | this.onLoadChild(this.pageChild) |
| | | }, |
| | | searchChangeChild (params, done) { |
| | | this.query = params |
| | | this.pageChild.currentPage = 1 |
| | | this.onLoadChild(this.pageChild, params) |
| | | done() |
| | | }, |
| | | selectionChangeChild (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClearChild () { |
| | | this.selectionList = [] |
| | | this.$refs.crudChild.toggleSelection() |
| | | }, |
| | | handleDeleteChild () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoadChild(this.pageChild) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.$refs.crudChild.toggleSelection() |
| | | }) |
| | | }, |
| | | beforeOpenChild (done, type) { |
| | | if (["add", "edit"].includes(type)) { |
| | | this.initData() |
| | | } |
| | | if (["edit", "view"].includes(type)) { |
| | | getDict(this.formChild.id).then(res => { |
| | | this.formChild = res.data.data |
| | | }) |
| | | } |
| | | done() |
| | | }, |
| | | beforeCloseChild (done) { |
| | | this.$refs.crudChild.value.parentId = this.parentId |
| | | this.$refs.crudChild.option.column.filter(item => { |
| | | if (item.prop === "parentId") { |
| | | item.value = this.parentId |
| | | } |
| | | }) |
| | | done() |
| | | }, |
| | | currentChangeChild (currentPage) { |
| | | this.pageChild.currentPage = currentPage |
| | | }, |
| | | sizeChangeChild (pageSize) { |
| | | this.pageChild.pageSize = pageSize |
| | | }, |
| | | refreshChangeChild () { |
| | | this.onLoadChild(this.pageChild, this.query) |
| | | }, |
| | | onLoadParent (page, params = {}) { |
| | | this.loading = true |
| | | getParentList( |
| | | page.currentPage, |
| | | page.pageSize, |
| | | Object.assign(params, this.query) |
| | | ).then(res => { |
| | | const data = res.data.data |
| | | this.pageParent.total = data.total |
| | | this.dataParent = data.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | onLoadChild (page, params = {}) { |
| | | this.loadingChild = true |
| | | getChildList( |
| | | page.currentPage, |
| | | page.pageSize, |
| | | this.parentId, |
| | | Object.assign(params, this.query) |
| | | ).then(res => { |
| | | this.dataChild = res.data.data |
| | | this.loadingChild = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| New file |
| | |
| | | <template> |
| | | <basicContainer> |
| | | <avue-crud :data="dataList" ref="crud" :table-loading="loading" @current-change="currentChange" |
| | | @search-change="searchChange" @search-reset="searchReset" @size-change="sizeChange" :option="option" |
| | | v-model="data" :page="page" @selection-change="selectionChange" @row-del="rowDel" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <!-- <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除 |
| | | </el-button> --> |
| | | <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.user_delete" |
| | | @click="handleDelete">批量删除 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="phone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')" |
| | | v-text="textDispose(row, 'phoneflag', 'phone')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basicContainer> |
| | | </template> |
| | | <script> |
| | | import { |
| | | getPageList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getNotice, |
| | | upcomment |
| | | } from "@/api/article/articleComment" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | |
| | | import website from '@/config/website' |
| | | |
| | | export default { |
| | | data () { |
| | | return { |
| | | page: { |
| | | pageSize: 10, |
| | | pageSizes: [10, 20, 30, 50, 100], |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | dataList: [], |
| | | loading: true, |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 66, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 80, |
| | | |
| | | selection: true, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | align: 'center', |
| | | menuAlign: 'center', |
| | | addBtn: false, |
| | | editBtn: false, |
| | | searchBtn: true, |
| | | column: [ |
| | | { |
| | | width: 110, |
| | | label: '头像', |
| | | prop: 'avatar', |
| | | dataType: 'string', |
| | | type: 'img', |
| | | }, |
| | | { |
| | | width: 120, |
| | | label: '电话', |
| | | prop: 'phone', |
| | | searchSpan: 4, |
| | | search: true, |
| | | searchLabelWidth: 46, |
| | | slot: true |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: '昵称', |
| | | prop: 'name', |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | label: '标题', |
| | | prop: 'title', |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | label: '评论', |
| | | prop: 'content' |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList () { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.article_add, true), |
| | | viewBtn: this.vaildData(this.permission.article_view, true), |
| | | delBtn: this.vaildData(this.permission.article_delete, true), |
| | | editBtn: this.vaildData(this.permission.article_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | textDispose () { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | showStringDispose (row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | currentChange (currentPage) { |
| | | console.log(currentPage) |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | console.log(pageSize) |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | let values = { |
| | | ...params, |
| | | } |
| | | this.loading = true |
| | | getPageList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.dataList = data.records |
| | | this.dataList.forEach(item => { |
| | | this.$set(item, 'phoneflag', false) |
| | | if (item.avatar) { |
| | | // var urls = [] |
| | | // var names = item.avatar.split(",") |
| | | // names.forEach(name => { |
| | | // urls.push(website.minioUrl + name) |
| | | // }) |
| | | item.avatar = website.minioUrl + item.avatar |
| | | } |
| | | }) |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$refs.crud.toggleSelection() |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style></style> |
| | |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 450, |
| | | searchGutter: 15, |
| | | menuWidth: 350, |
| | | dialogMenuPosition: 'center', |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | //stripe:true, |
| | | // stripe: true, |
| | | index: true, |
| | | viewBtn: true, |
| | | selection: true, |
| | |
| | | prop: "title", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | searchSpan: 3, |
| | | search: true, |
| | | searchLabelWidth: 76, |
| | | rules: [{ |
| | |
| | | width: 110, |
| | | label: "招标封面", |
| | | prop: "url", |
| | | // align:'center', |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | // hide: true, |
| | | span: 24, |
| | | }, |
| | | // { |
| | | // label: "招标来源", |
| | | // prop: "sourceName", |
| | | // search: true, |
| | | // searchSpan: 4, |
| | | // span: 24, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请输入招标类型", |
| | | // trigger: "blur", |
| | | // }, ], |
| | | // }, |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | |
| | | }], |
| | | }, |
| | | { |
| | | searchLabelWidth: 80, |
| | | label: "发布时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | |
| | | |
| | | { |
| | | width: 110, |
| | | searchLabelWidth: 80, |
| | | label: "所属街道", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | |
| | | }, |
| | | { |
| | | width: 156, |
| | | searchLabelWidth: 80, |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | addDisplay: false, |
| | |
| | | }, |
| | | { |
| | | width: 100, |
| | | searchLabelWidth: 80, |
| | | label: "发布状态", |
| | | prop: "publish", |
| | | value: "0", |
| | | slot: true, |
| | | searchSpan: 4, |
| | | searchSpan: 3, |
| | | search: true, |
| | | type: "select", |
| | | rules: [{ |
| | |
| | | searchMenuSpan: 3, |
| | | menuWidth: 450, |
| | | addBtn: false, |
| | | searchGutter: 15, |
| | | menu: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | |
| | | prop: "title", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | searchSpan: 3, |
| | | search: true, |
| | | searchLabelWidth: 46, |
| | | rules: [{ |
| | |
| | | }], |
| | | }, |
| | | { |
| | | searchLabelWidth: 80, |
| | | label: "发布时间", |
| | | prop: "dateTime", |
| | | type: "daterange", |
| | |
| | | }, |
| | | { |
| | | width: 110, |
| | | searchLabelWidth: 80, |
| | | label: "所属街道", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | |
| | | }, |
| | | |
| | | { |
| | | width: 156, |
| | | searchLabelWidth: 80, |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | addDisplay: false, |
| | |
| | | }, |
| | | |
| | | { |
| | | width: 100, |
| | | searchLabelWidth: 80, |
| | | label: "发布状态", |
| | | prop: "publish", |
| | | value: "0", |
| | | slot: true, |
| | | searchSpan: 4, |
| | | searchSpan: 3, |
| | | search: true, |
| | | type: "select", |
| | | display: false, |
| New file |
| | |
| | | <template> |
| | | <div class="cur-container-box"> |
| | | <avue-form ref="replyForm" :option="option" v-model="form" :close-on-click-modal="false"> |
| | | |
| | | <template slot-scope="{size}" slot="menuForm"> |
| | | <el-button type="primary" :size="size" @click="handleSubmit">通 过</el-button> |
| | | <el-button :size="size" @click="handleReset">驳 回</el-button> |
| | | </template> |
| | | |
| | | </avue-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | setCheckPlaceExt |
| | | } from "@/api/place/place" |
| | | |
| | | export default { |
| | | inject: ["placeElement"], |
| | | |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | option: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | span: 23, |
| | | row: true, |
| | | label: "审批意见", |
| | | prop: "confirmNotion", |
| | | type: 'textarea', |
| | | minRows: 3, |
| | | maxRows: 5, |
| | | rules: [], |
| | | }] |
| | | }, |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | handleSubmit() { |
| | | setCheckPlaceExt({ |
| | | confirmFlag: 2, |
| | | id: this.placeElement.curAuditRow.placeExtId, |
| | | confirmNotion: this.form.confirmNotion |
| | | }).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.replyForm && this.$refs.replyForm.resetForm() |
| | | this.placeElement.auditBasePopup = false |
| | | |
| | | this.placeElement.onLoad(this.placeElement.page) |
| | | }) |
| | | }, |
| | | |
| | | handleReset() { |
| | | if ('confirmNotion' in this.form && this.form.confirmNotion.trim() == '' || !this.form.confirmNotion) { |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: "请输入审批意见!", |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | setCheckPlaceExt({ |
| | | confirmFlag: 3, |
| | | id: this.placeElement.curAuditRow.placeExtId, |
| | | confirmNotion: this.form.confirmNotion |
| | | }).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.replyForm && this.$refs.replyForm.resetForm() |
| | | this.placeElement.auditBasePopup = false |
| | | |
| | | this.placeElement.onLoad(this.placeElement.page) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .cur-container-box { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .content-box { |
| | | margin: 0 4px; |
| | | padding: 0 16px; |
| | | height: 0; |
| | | flex: 1; |
| | | overflow: hidden; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .footer-btn-box { |
| | | margin-top: 10px; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | 整改后图片 |
| | | </div> |
| | | <div class="yh-pic-list"> |
| | | <div class="pic-item" v-for="pic in item.rectificationImageUrlsList"> |
| | | <div class="pic-item" v-for="(pic, index) in item.rectificationImageUrlsList" :key='index'> |
| | | <el-image style="width: 100px; height: 100px" :src="pic" :fit="fit"></el-image> |
| | | </div> |
| | | </div> |
| | |
| | | columnBtn: false, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "检查时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, { |
| | | label: "校园名称", |
| | | prop: "placeName", |
| | | span: 24, |
| | |
| | | searchLabelWidth: 46, |
| | | overHidden: true, |
| | | align: 'center' |
| | | }, { |
| | | label: "所属街道", |
| | | prop: "streetName", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | align: 'center' |
| | | }, |
| | | { |
| | | label: "所属街道", |
| | | parent: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | prop: "streetName", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "name" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "communityName", |
| | | span: 24, |
| | | row: true, |
| | | searchSpan: 4, |
| | | search: true, |
| | | width: 160, |
| | | overHidden: true, |
| | | align: 'center' |
| | | searchSpan: 4, |
| | | width: 150, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "name", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | label: "所属网格", |
| | | prop: "gridName", |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] |
| | | params.endTime = dateRange[1] |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | // return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const {} = this.query |
| | | // const {} = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size, index}" slot="menu"> |
| | | <el-button :size="size" type="text" icon="el-icon-view" v-if="permission.bail_view" plain |
| | | @click="lookDetail(row, 0)">查 看 |
| | | </el-button> |
| | | <el-button :size="size" type="text" icon="el-icon-s-check" v-if="row.status == 1 && permission.bail_check" |
| | | plain @click="lookDetail(row, 1)">审 核 |
| | | </el-button> |
| | | <el-button :size="size" type="text" icon="el-icon-delete" v-if="permission.bail_del" plain |
| | | @click="rowDel(row)">删 除 |
| | | </el-button> |
| | | </template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size, index}" slot="menu"> |
| | | <el-button :size="size" type="text" icon="el-icon-view" v-if="permission.bail_view" plain |
| | | @click="lookDetail(row, 0)">查 看 |
| | | </el-button> |
| | | <el-button :size="size" type="text" icon="el-icon-s-check" v-if="row.status == 1 && permission.bail_check" plain |
| | | @click="lookDetail(row, 1)">审 核 |
| | | </el-button> |
| | | <el-button :size="size" type="text" icon="el-icon-delete" v-if="permission.bail_del" plain |
| | | @click="rowDel(row)">删 除 |
| | | </el-button> |
| | | </template> |
| | | |
| | | <template slot="status" slot-scope="{row, size}"> |
| | | <el-tag :size="size" :type="showStatus(row.status).type"> |
| | | {{ showStatus(row.status).text }} |
| | | </el-tag> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="phone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')" |
| | | v-text="textDispose(row, 'phoneflag', 'phone')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <template slot="status" slot-scope="{row, size}"> |
| | | <el-tag :size="size" :type="showStatus(row.status).type"> |
| | | {{ showStatus(row.status).text }} |
| | | </el-tag> |
| | | </template> |
| | | <template slot-scope="{row, size}" slot="phone"> |
| | | <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')" |
| | | v-text="textDispose(row, 'phoneflag', 'phone')"> |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | |
| | | <el-dialog class="place-info-box audit-info-box" title="" append-to-body :visible.sync="auditBasePopup" width="60%"> |
| | | <bailReportingDetail @colseDetail="colseDetail" ref="bailReportingDetail"></bailReportingDetail> |
| | | </el-dialog> |
| | | </basic-container> |
| | | <el-dialog class="place-info-box audit-info-box" title="" append-to-body :visible.sync="auditBasePopup" width="60%"> |
| | | <bailReportingDetail @colseDetail="colseDetail" ref="bailReportingDetail"></bailReportingDetail> |
| | | </el-dialog> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | import { |
| | | getBailReportingPage, |
| | | removeTask, |
| | | update, |
| | | add, |
| | | } from "@/api/task/task" |
| | | } from "@/api/task/task" |
| | | |
| | | import { |
| | | import { |
| | | update as bailReportingUpdate, |
| | | getList as bailReportingGetList |
| | | } from "@/api/task/bailReporting" |
| | | } from "@/api/task/bailReporting" |
| | | |
| | | import { |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | } from "vuex" |
| | | |
| | | import website from '@/config/website' |
| | | import website from '@/config/website' |
| | | |
| | | import bailReportingDetail from './components/bailReportingDetail' |
| | | // import baseAllInfo from './components/baseAllInfo' |
| | | import bailReportingDetail from './components/bailReportingDetail' |
| | | // import baseAllInfo from './components/baseAllInfo' |
| | | |
| | | export default { |
| | | data () { |
| | | export default { |
| | | data() { |
| | | |
| | | //手机号格式校验 |
| | | let validatorPhone = function (rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error('手机号格式有误!')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | curRow: {}, |
| | | roleBox: false, |
| | | return { |
| | | curRow: {}, |
| | | roleBox: false, |
| | | |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | header: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | // menu: false, |
| | | //stripe:true, |
| | | index: true, |
| | | // viewBtn: true, |
| | | delBtn: false, |
| | | editBtn: false, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | header: false, |
| | | column: [{ |
| | | label: "申请时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | labelWidth: 96, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 210, |
| | | header: false, |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | border: true, |
| | | // menu: false, |
| | | //stripe:true, |
| | | index: true, |
| | | // viewBtn: true, |
| | | delBtn: false, |
| | | editBtn: false, |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | header: false, |
| | | column: [{ |
| | | span: 12, |
| | | label: "社区", |
| | | prop: "communityName", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 46, |
| | | search: true, |
| | | hide: true, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "小区", |
| | | prop: "districtName", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 66, |
| | | search: true, |
| | | hide: true, |
| | | }, |
| | | { |
| | | width: 100, |
| | | span: 12, |
| | | label: "姓名", |
| | | prop: "realName", |
| | | searchSpan: 3, |
| | | searchLabelWidth: 66, |
| | | search: true, |
| | | }, { |
| | | width: 120, |
| | | span: 12, |
| | | label: "联系方式", |
| | | prop: "phone", |
| | | searchSpan: 4, |
| | | search: true, |
| | | slot: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | }], |
| | | }, { |
| | | span: 12, |
| | | label: "外出事由", |
| | | prop: "applyName", |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "所属街道", |
| | | // hide: true, |
| | | searchSpan: 4, |
| | | // search: true, |
| | | parent: false, |
| | | prop: "streetCode", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | },], |
| | | }, { |
| | | width: 156, |
| | | // hide: true, |
| | | parent: false, |
| | | searchSpan: 4, |
| | | label: "所属社区", |
| | | prop: "neiCode", |
| | | // search: true, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/tree", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | cascader: ["gridId"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | },], |
| | | }, { |
| | | width: 220, |
| | | overHidden: true, |
| | | label: "小区", |
| | | prop: "aoiCode", |
| | | searchSpan: 4, |
| | | type: 'tree', |
| | | searchLabelWidth: 66, |
| | | // search: true, |
| | | parent: false, |
| | | dicUrl: `/api/blade-district/district/getDistrictTree`, |
| | | props: { |
| | | label: "name", |
| | | value: "aoiCode" |
| | | }, |
| | | // defaultExpandedKeys: ["361102003"], |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择小区", |
| | | trigger: "blur", |
| | | },], |
| | | // disabled: true |
| | | display: true, |
| | | // hide: true, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "出发时间", |
| | | prop: "startTimes", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "到达时间", |
| | | prop: "reachTime", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "返程时间", |
| | | prop: "returnTime", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 100, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: '审核状态', |
| | | prop: 'status', |
| | | type: 'radio', |
| | | slot: true, |
| | | dicData: [{ |
| | | label: '待审核', |
| | | value: 1 |
| | | }, { |
| | | label: '已审核', |
| | | value: 2 |
| | | }, { |
| | | label: '未通过', |
| | | value: 3 |
| | | }] |
| | | }, |
| | | |
| | | |
| | | ], |
| | | { |
| | | span: 12, |
| | | label: "小区名称", |
| | | prop: "districtName", |
| | | searchSpan: 4, |
| | | searchLabelWidth: 76, |
| | | search: true, |
| | | hide: true, |
| | | }, |
| | | data: [], |
| | | { |
| | | width: 100, |
| | | span: 12, |
| | | label: "姓名", |
| | | prop: "realName", |
| | | searchSpan: 3, |
| | | searchLabelWidth: 66, |
| | | search: true, |
| | | }, { |
| | | width: 120, |
| | | span: 12, |
| | | label: "联系方式", |
| | | prop: "phone", |
| | | searchSpan: 4, |
| | | search: true, |
| | | slot: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: 'blur' |
| | | }], |
| | | }, { |
| | | span: 12, |
| | | label: "外出事由", |
| | | prop: "applyName", |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | width: 110, |
| | | label: "所属街道", |
| | | search: true, |
| | | searchSpan: 4, |
| | | parent: false, |
| | | prop: "streetCode", |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/getTownTree", |
| | | props: { |
| | | label: "name", |
| | | value: "id" |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属街道", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | searchLabelWidth: 80, |
| | | parent: false, |
| | | label: "所属社区", |
| | | prop: "neiCode", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 120, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, { |
| | | width: 220, |
| | | overHidden: true, |
| | | label: "小区", |
| | | prop: "aoiCode", |
| | | searchSpan: 4, |
| | | type: 'tree', |
| | | searchLabelWidth: 66, |
| | | // search: true, |
| | | parent: false, |
| | | dicUrl: `/api/blade-district/district/getDistrictTree`, |
| | | props: { |
| | | label: "name", |
| | | value: "aoiCode" |
| | | }, |
| | | // defaultExpandedKeys: ["361102003"], |
| | | span: 12, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择小区", |
| | | trigger: "blur", |
| | | }, ], |
| | | // disabled: true |
| | | display: true, |
| | | // hide: true, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "出发时间", |
| | | prop: "startTimes", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "到达时间", |
| | | prop: "reachTime", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "返程时间", |
| | | prop: "returnTime", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "申请时间", |
| | | prop: "createTime", |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | width: 100, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | label: '审核状态', |
| | | prop: 'status', |
| | | type: 'radio', |
| | | slot: true, |
| | | dicData: [{ |
| | | label: '待审核', |
| | | value: 1 |
| | | }, { |
| | | label: '已审核', |
| | | value: 2 |
| | | }, { |
| | | label: '未通过', |
| | | value: 3 |
| | | }] |
| | | }, |
| | | |
| | | auditBasePopup: false, |
| | | } |
| | | |
| | | ], |
| | | }, |
| | | data: [], |
| | | |
| | | auditBasePopup: false, |
| | | } |
| | | }, |
| | | |
| | | provide () { |
| | | return { |
| | | placeElement: this, |
| | | } |
| | | provide() { |
| | | return { |
| | | placeElement: this, |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | bailReportingDetail, |
| | | bailReportingDetail, |
| | | }, |
| | | |
| | | watch: {}, |
| | | |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList () { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | |
| | | console.log("permission===>", this.permission) |
| | | console.log("permission===>", this.permission) |
| | | |
| | | return { |
| | | addBtn: this.vaildData(this.permission.bail_add, false), |
| | | viewBtn: this.vaildData(this.permission.bail_view, true), |
| | | delBtn: this.vaildData(this.permission.bail_del, true), |
| | | // editBtn: this.vaildData(this.permission.place_edit, true), |
| | | } |
| | | }, |
| | | ids () { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showStatus () { |
| | | return (data) => { |
| | | let tags = {} |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | type: 'warning', |
| | | text: '待审核' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | type: 'success', |
| | | text: '已审核' |
| | | } |
| | | } else if (data == 3) { |
| | | tags = { |
| | | type: 'danger', |
| | | text: '未通过' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | textDispose () { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | return { |
| | | addBtn: this.vaildData(this.permission.bail_add, false), |
| | | viewBtn: this.vaildData(this.permission.bail_view, true), |
| | | delBtn: this.vaildData(this.permission.bail_del, true), |
| | | // editBtn: this.vaildData(this.permission.place_edit, true), |
| | | } |
| | | }, |
| | | ids() { |
| | | let ids = [] |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id) |
| | | }) |
| | | return ids.join(",") |
| | | }, |
| | | |
| | | showStatus() { |
| | | return (data) => { |
| | | let tags = {} |
| | | |
| | | if (data == 1) { |
| | | tags = { |
| | | type: 'warning', |
| | | text: '待审核' |
| | | } |
| | | } else if (data == 2) { |
| | | tags = { |
| | | type: 'success', |
| | | text: '已审核' |
| | | } |
| | | } else if (data == 3) { |
| | | tags = { |
| | | type: 'danger', |
| | | text: '未通过' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | }, |
| | | |
| | | textDispose() { |
| | | return (row, flag, type) => { |
| | | if (row[flag] || row[type] == null) { |
| | | return row[type] |
| | | } else { |
| | | if (type == 'principalIdCard') { |
| | | return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2") |
| | | } else { |
| | | return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | showStringDispose (row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | showStringDispose(row, type) { |
| | | row[type] = !row[type] |
| | | }, |
| | | |
| | | colseDetail () { |
| | | this.auditBasePopup = false |
| | | this.onLoad(this.page) |
| | | }, |
| | | lookDetail (row, applyType) { |
| | | this.auditBasePopup = true |
| | | var that = this |
| | | this.$nextTick(() => { |
| | | that.$refs.bailReportingDetail.init(row, applyType) |
| | | }) |
| | | }, |
| | | auditCur (row) { |
| | | this.curAuditRow = row |
| | | this.auditBasePopup = true |
| | | }, |
| | | colseDetail() { |
| | | this.auditBasePopup = false |
| | | this.onLoad(this.page) |
| | | }, |
| | | lookDetail(row, applyType) { |
| | | this.auditBasePopup = true |
| | | var that = this |
| | | this.$nextTick(() => { |
| | | that.$refs.bailReportingDetail.init(row, applyType) |
| | | }) |
| | | }, |
| | | auditCur(row) { |
| | | this.curAuditRow = row |
| | | this.auditBasePopup = true |
| | | }, |
| | | |
| | | roleBoxClose () { |
| | | this.curRow = {} |
| | | }, |
| | | roleBoxClose() { |
| | | this.curRow = {} |
| | | }, |
| | | |
| | | ManageTenants (item) { |
| | | this.curRow = item |
| | | this.roleBox = true |
| | | }, |
| | | ManageTenants(item) { |
| | | this.curRow = item |
| | | this.roleBox = true |
| | | }, |
| | | |
| | | rowSave (row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | |
| | | delete row.smallLabel |
| | | |
| | | add({ |
| | | ...row, |
| | | label |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowUpdate (row, index, done, loading) { |
| | | bailReportingUpdate({ |
| | | ...row |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowDel (row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | row.isDeleted = 1 |
| | | return removeTask(row) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset () { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange (params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange (list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear () { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleDelete () { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | // return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | beforeOpen (done, type) { |
| | | if (["edit", "view"].includes(type)) { } else { |
| | | done() |
| | | } |
| | | }, |
| | | |
| | | currentChange (currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange (pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange () { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad (page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | values.reportType = 1 |
| | | this.loading = true |
| | | getBailReportingPage(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'phoneflag', false) |
| | | if (item.imageUrls && item.imageUrls != '' && item.imageUrls != null && item.imageUrls.length) { |
| | | var urls = [] |
| | | var names = item.imageUrls.split(",").filter(item => item != '') |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.imageUrls = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | rowSave(row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(",").filter(item => item != '') |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | |
| | | let label = row.label |
| | | |
| | | if (row.smallLabel != '') { |
| | | label = label + ',' + row.smallLabel |
| | | } |
| | | |
| | | delete row.smallLabel |
| | | |
| | | add({ |
| | | ...row, |
| | | label |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowUpdate(row, index, done, loading) { |
| | | bailReportingUpdate({ |
| | | ...row |
| | | }).then( |
| | | () => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | row.isDeleted = 1 |
| | | return removeTask(row) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] + " 00:00:00" |
| | | params.endTime = dateRange[1] + " 23:59:59" |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | // return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) {} else { |
| | | done() |
| | | } |
| | | }, |
| | | |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { |
| | | dateTime |
| | | } = this.query |
| | | let values = { |
| | | ...params, |
| | | } |
| | | values.reportType = 1 |
| | | this.loading = true |
| | | getBailReportingPage(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | this.$set(item, 'phoneflag', false) |
| | | if (item.imageUrls && item.imageUrls != '' && item.imageUrls != null && item.imageUrls.length) { |
| | | var urls = [] |
| | | var names = item.imageUrls.split(",").filter(item => item != '') |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.imageUrls = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "上报时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, { |
| | | width: 130, |
| | | span: 12, |
| | | label: "姓名", |
| | |
| | | { |
| | | width: 140, |
| | | span: 12, |
| | | label: "创建时间", |
| | | label: "上报时间", |
| | | prop: "createTime", |
| | | align: 'center', |
| | | labelWidth: 110, |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] |
| | | params.endTime = dateRange[1] |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | |
| | | <el-button :size="size" @click="handleSubmit(3)">驳 回</el-button> |
| | | </template> |
| | | |
| | | <template slot-scope="{ row, size, index }" slot="houseCode"> |
| | | <template slot-scope="{ row, size, index }" slot="houseCode" v-if="this.type == 2"> |
| | | <el-select v-model="form.houseCode" filterable remote :remote-method="onRemoteMethod" @change="onSelectChange" |
| | | placeholder="请选择标准地址" reserve-keyword> |
| | | <el-option v-for="item in standardAddressList" :key="item.houseCode" |
| | |
| | | this.getPlaceAddressListRequest(query) |
| | | }, |
| | | getPlaceAddressListRequest(query) { |
| | | getList(1, 10, { |
| | | neiName: query |
| | | }).then(res => { |
| | | this.standardAddressList = res.data.data.records; |
| | | }) |
| | | // 场所名称查询 |
| | | if (this.type == 2) { |
| | | getList(1, 10, { |
| | | placeName: query |
| | | }).then(res => { |
| | | this.standardAddressList = res.data.data.records; |
| | | }) |
| | | } else { |
| | | getList(1, 10, { |
| | | neiName: query |
| | | }).then(res => { |
| | | this.standardAddressList = res.data.data.records; |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | handleSubmit(status) { |
| New file |
| | |
| | | <template> |
| | | <el-dialog class="place-info-box" title="场所维护" append-to-body :visible.sync="roleBox" center @close="roleBoxClose"> |
| | | <div class="cur-container-box"> |
| | | <div class="content-box"> |
| | | <box-title class="m10" :classVal="9" :title="'基本信息'"></box-title> |
| | | <avue-form v-if="baseShow" ref="baseForm" :option="option" v-model="form"> |
| | | <template slot-scope="{ row, size, index }" slot="houseCodeBinds"> |
| | | <el-select v-model="form.houseCodeBinds" filterable remote multiple :remote-method="onRemoteMethod" |
| | | @change="onSelectChange" placeholder="请选择标准地址" reserve-keyword> |
| | | <el-option v-for="item in standardAddressList" :key="item.addressCode" :label="item.addressName" |
| | | :value="item.addressCode"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </avue-form> |
| | | |
| | | |
| | | <!-- <box-title class="m10" :classVal="9" :title="'房东信息'"></box-title> |
| | | <avue-form v-if="restShow" ref="restForm" :option="houseOwnerOption" v-model="placeForm"></avue-form> --> |
| | | |
| | | <box-title class="m10" :classVal="9" :title="'其他信息'"></box-title> |
| | | <avue-form v-if="restShow" ref="restForm" :option="optionDetail" v-model="placeForm"></avue-form> |
| | | |
| | | <box-title class="m10" :classVal="9" :title="'教职工人员'"></box-title> |
| | | <avue-crud :option="placeOption" :table-loading="loading" :data="placeExt" ref="crud" v-model="houseHoldForm" |
| | | :permission="permissionList" @row-del="houseHoldRowDel" @row-update="houseHoldRowUpdate" |
| | | @row-save="houseHoldRowSave" :page.sync="holdPage" @current-change="holdCurrentChange" |
| | | @size-change="holdSizeChange" @refresh-change="refreshHoldChange" @on-load="holdOnLoad"> |
| | | </avue-crud> |
| | | </div> |
| | | |
| | | <div class="footer-btn-box"> |
| | | <el-button size="small" :disabled="disabled" type="primary" @click="dataUpdate">保 存</el-button> |
| | | |
| | | <el-button size="small" @click="roleBoxClose">关 闭</el-button> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getPlaceDetaill, |
| | | getPlaceExt, |
| | | holdRemove, |
| | | holdAdd, |
| | | holdUpdate, |
| | | getHoldList, |
| | | update, |
| | | updatePlaceExt, |
| | | getPlaceAddressList |
| | | } from "@/api/place/place" |
| | | import { |
| | | getPlaceList |
| | | } from "@/api/doorplateAddress/doorplateAddress" |
| | | import website from "@/config/website" |
| | | |
| | | import boxTitle from "./boxTitle" |
| | | |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function(rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error("手机号格式有误!")) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | disabled: false, |
| | | roleBox: false, |
| | | baseShow: false, |
| | | restShow: false, |
| | | |
| | | placeExt: [], |
| | | |
| | | form: {}, |
| | | option: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | dialogMenuPosition: 'right', |
| | | column: [{ |
| | | span: 12, |
| | | label: "场所名称", |
| | | prop: "placeName", |
| | | labelWidth: 120, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入场所名称", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "负责人", |
| | | prop: "principal", |
| | | labelWidth: 120, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输入负责人", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "手机号码", |
| | | prop: "principalPhone", |
| | | labelWidth: 120, |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 120, |
| | | overHidden: true, |
| | | label: "身份证号", |
| | | labelWidth: 120, |
| | | prop: "principalIdCard", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输身份证号", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | hide: true, |
| | | parent: false, |
| | | label: "所属社区", |
| | | labelWidth: 120, |
| | | prop: "neiCode", |
| | | search: false, |
| | | type: "tree", |
| | | dicUrl: "/api/blade-system/region/treeToCommunity", |
| | | props: { |
| | | label: "name", |
| | | value: "id", |
| | | }, |
| | | cascader: ["gridCode"], |
| | | // dicFormatter: (res) => { |
| | | // return dsposeData(res.data) |
| | | // }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | hide: true, |
| | | label: "所属网格", |
| | | prop: "gridCode", |
| | | type: "tree", |
| | | labelWidth: 120, |
| | | cell: true, |
| | | props: { |
| | | label: "gridName", |
| | | value: "gridCode", |
| | | }, |
| | | // dataType: 'string', |
| | | dicUrl: "/api/blade-grid/grid/getGridList?communityCode={{neiCode}}", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属网格", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | span: 7, |
| | | label: "场所标签", |
| | | prop: "label", |
| | | labelWidth: 120, |
| | | type: "select", |
| | | dicUrl: "/api/blade-category/category/getCategory?level=2", |
| | | cascader: ["smallLabel"], |
| | | props: { |
| | | label: "categoryName", |
| | | value: "categoryNo", |
| | | }, |
| | | dataType: "string", |
| | | hide: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入场所标签", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | span: 5, |
| | | label: "", |
| | | labelWidth: 20, |
| | | prop: "smallLabel", |
| | | type: "select", |
| | | dicUrl: "/api/blade-category/category/getCategory?parentNo={{label}}", |
| | | props: { |
| | | label: "categoryName", |
| | | value: "categoryNo", |
| | | }, |
| | | dataType: "string", |
| | | hide: true, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "标签颜色", |
| | | prop: "color", |
| | | type: "select", |
| | | labelWidth: 120, |
| | | dicData: [{ |
| | | label: "绿", |
| | | value: "green", |
| | | }, |
| | | { |
| | | label: "黄", |
| | | value: "yellow", |
| | | }, |
| | | { |
| | | label: "红", |
| | | value: "red", |
| | | }, |
| | | ], |
| | | props: { |
| | | label: "label", |
| | | value: "value", |
| | | }, |
| | | hide: true, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "九小场所", |
| | | prop: "isNine", |
| | | labelWidth: 120, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "是", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: 2, |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择九小分类", |
| | | trigger: "blur", |
| | | }, ], |
| | | hide: true, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "九小分类", |
| | | prop: "nineType", |
| | | labelWidth: 120, |
| | | type: "select", |
| | | display: false, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=nineType", |
| | | dataType: "number", |
| | | hide: true, |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "阵地", |
| | | prop: "isFront", |
| | | labelWidth: 120, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "是", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: 2, |
| | | } |
| | | ], |
| | | hide: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择阵地", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "阵地类型", |
| | | prop: "frontType", |
| | | type: "select", |
| | | labelWidth: 120, |
| | | display: false, |
| | | row: true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=frontType", |
| | | dataType: "number", |
| | | hide: true, |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "三级消防单位", |
| | | prop: "threeFireProtection", |
| | | labelWidth: 120, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "是", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "否", |
| | | value: 2, |
| | | } |
| | | ], |
| | | hide: true, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请选择三级消防单位", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | span: 12, |
| | | label: "无炸类型", |
| | | prop: "noExplosionCategory", |
| | | type: "select", |
| | | labelWidth: 120, |
| | | display: true, |
| | | row: true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=noExplosionCategory", |
| | | dataType: "number", |
| | | hide: true, |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | }, |
| | | { |
| | | label: "场所照片", |
| | | prop: "imageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | labelWidth: 120, |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | width: 160, |
| | | overHidden: true, |
| | | slot: true, |
| | | label: "地址", |
| | | prop: "location", |
| | | type: "map", |
| | | dataType: "string", |
| | | labelWidth: 120, |
| | | span: 24, |
| | | value: [117.96646, 28.431002, ""], |
| | | cascader: ['houseCodeBinds'], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择地址", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 160, |
| | | overHidden: true, |
| | | display: false, |
| | | labelWidth: 120, |
| | | hide: true, |
| | | label: "地址", |
| | | prop: "addressName", |
| | | span: 12 |
| | | }, |
| | | |
| | | // { |
| | | // width: 160, |
| | | // overHidden: true, |
| | | // slot: true, |
| | | // label: "标准地址", |
| | | // prop: "houseCodeBinds", |
| | | // span: 24, |
| | | // type: 'select', |
| | | // labelWidth:120, |
| | | // dataType: "object", |
| | | // remote: true, |
| | | // multiple: true, |
| | | // hide: true, |
| | | // display: false, |
| | | // filterable:true, |
| | | // dicUrl: `/api/blade-doorplateAddress/doorplateAddress/getPlaceList`, |
| | | // props: { |
| | | // label: 'addressName', |
| | | // value: 'addressCode', |
| | | // }, |
| | | // dicData: [], |
| | | // rules: [{ |
| | | // required: false, |
| | | // message: "请选择标准地址", |
| | | // trigger: "blur", |
| | | // }, ] |
| | | // }, |
| | | { |
| | | span: 24, |
| | | hide: true, |
| | | prop: "houseCodeBinds", |
| | | slot: true, |
| | | label: "标准地址", |
| | | labelWidth: 120, |
| | | |
| | | }, |
| | | |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | | type: 'textarea', |
| | | labelWidth: 120, |
| | | hide: true, |
| | | span: 24, |
| | | rules: [{ |
| | | required: false, |
| | | message: "请输入场所备注", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | placeForm: {}, |
| | | optionDetail: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | labelWidth: 130, |
| | | column: [{ |
| | | label: "学生人数", |
| | | prop: "studentNumber", |
| | | }, |
| | | { |
| | | label: "教职工人数", |
| | | prop: "workersNumber", |
| | | }, |
| | | { |
| | | label: "专职保安", |
| | | prop: "securityNumber", |
| | | }, |
| | | { |
| | | label: "专职门卫", |
| | | prop: "guardNumber", |
| | | }, |
| | | { |
| | | label: "专兼职保卫人员", |
| | | prop: "temporarySecurityNumber", |
| | | }, |
| | | { |
| | | label: "走读/寄宿", |
| | | prop: "dayStudentsNumber", |
| | | }, |
| | | { |
| | | label: "住校生人数", |
| | | prop: "residentialStudentsNumber", |
| | | }, |
| | | { |
| | | label: "宿舍管理人员", |
| | | prop: "housemasterNumber", |
| | | }, |
| | | { |
| | | label: "法人信息", |
| | | prop: "legalPerson", |
| | | }, |
| | | { |
| | | label: "法人电话", |
| | | prop: "legalTel", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "营业执照", |
| | | prop: "imageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | { |
| | | label: "场所平面图", |
| | | prop: "planImageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | loading: true, |
| | | placeOption: { |
| | | menu: true, |
| | | height: 300, |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | searchShow: false, |
| | | addBtn: true, |
| | | delBtn: true, |
| | | editBtn: true, |
| | | border: true, |
| | | index: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | labelWidth: 100, |
| | | label: "姓名", |
| | | prop: "name", |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | label: "性别", |
| | | prop: "gender", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "女", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "未知", |
| | | value: "3" |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | span: 12, |
| | | label: "民族", |
| | | prop: "ethnicity", |
| | | type: "select", |
| | | row: true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationType", |
| | | dataType: "number", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | }, |
| | | |
| | | { |
| | | labelWidth: 100, |
| | | label: "电话号码", |
| | | prop: "telephone", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | labelWidth: 100, |
| | | label: "现居住地", |
| | | prop: "tempAddress", |
| | | searchSpan: 4, |
| | | search: true, |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | label: "岗位", |
| | | prop: "jobNature", |
| | | // hide: true |
| | | }, |
| | | |
| | | { |
| | | label: "从业人员照片", |
| | | prop: "employerImg", |
| | | labelWidth: 100, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | hide: true |
| | | }, |
| | | { |
| | | label: "入职时间", |
| | | labelWidth: 100, |
| | | hide: true, |
| | | row: true, |
| | | prop: "resignationTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | // format: "yyyy-MM-dd hh:mm:ss", |
| | | // valueFormat: "yyyy-MM-dd hh:mm:ss", |
| | | rules: [{ |
| | | required: false, |
| | | message: "请选择入职时间", |
| | | trigger: "blur", |
| | | }] |
| | | }, |
| | | { |
| | | label: "离职时间", |
| | | labelWidth: 100, |
| | | hide: true, |
| | | row: true, |
| | | prop: "employmentTime", |
| | | type: "datetime", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | // format: "yyyy-MM-dd hh:mm:ss", |
| | | // valueFormat: "yyyy-MM-dd hh:mm:ss", |
| | | rules: [{ |
| | | required: false, |
| | | message: "请选择离职时间", |
| | | trigger: "blur", |
| | | }] |
| | | }, |
| | | { |
| | | labelWidth: 100, |
| | | label: "状态", |
| | | prop: "resignationFlag", |
| | | // hide: true |
| | | type: "select", |
| | | display: false, |
| | | dicData: [{ |
| | | label: "在职", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "离职", |
| | | value: 2 |
| | | } |
| | | ], |
| | | }, |
| | | |
| | | ] |
| | | }, |
| | | holdPage: { |
| | | pageSize: 20, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | houseHoldForm: {}, |
| | | houseOwnerOption: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [ |
| | | |
| | | { |
| | | width: 96, |
| | | label: "姓名", |
| | | prop: "landlordName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "身份证号", |
| | | prop: "landlordIdCard", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | // validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "手机号", |
| | | prop: "landlordPhone", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | ], |
| | | }, |
| | | userOption: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [ |
| | | |
| | | { |
| | | width: 96, |
| | | label: "电话", |
| | | prop: "legalTel", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 96, |
| | | label: "微信号", |
| | | prop: "legalTel", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | |
| | | |
| | | ], |
| | | }, |
| | | |
| | | standardAddressList: [], //标准地址数据 |
| | | standardAddress: "", |
| | | standardAddressSearchKey: "" |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | boxTitle |
| | | }, |
| | | |
| | | inject: ["placeElement"], |
| | | |
| | | watch: { |
| | | |
| | | 'form.houseBindList': { |
| | | handler(newData) { |
| | | console.log("=======>", newData) |
| | | } |
| | | }, |
| | | |
| | | 'form.isNine': { |
| | | handler(newData) { |
| | | if (newData) { |
| | | let nineTypeColumn = this.findObject( |
| | | this.option.column, |
| | | 'nineType' |
| | | ) |
| | | |
| | | if (newData == 1) { |
| | | nineTypeColumn.display = true |
| | | } else { |
| | | nineTypeColumn.display = false |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | 'form.isFront': { |
| | | handler(newData) { |
| | | if (newData) { |
| | | let frontTypeColumn = this.findObject( |
| | | this.option.column, |
| | | 'frontType' |
| | | ) |
| | | |
| | | if (newData == 1) { |
| | | frontTypeColumn.display = true |
| | | } else { |
| | | frontTypeColumn.display = false |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | 'form.addressName': { |
| | | handler(newData) { |
| | | console.log("111111") |
| | | const column = this.findObject(this.option.column, "houseCodeBinds") |
| | | if (newData) { |
| | | column.display = true; |
| | | } else { |
| | | column.display = false |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | initOpen(newData) { |
| | | console.log("item==>", newData); |
| | | this.curRow = newData |
| | | this.roleBox = true |
| | | this.baseShow = false |
| | | this.restShow = false |
| | | this.form = {} |
| | | this.placeForm = {} |
| | | |
| | | const that = this |
| | | |
| | | that.$axios |
| | | .all([getPlaceDetaill(newData["houseCode"]), getPlaceExt({ |
| | | placeId: newData["id"] |
| | | }), getPlaceList()]) |
| | | .then( |
| | | that.$axios.spread(function(baseInfo, restInfo) { |
| | | console.log("houseCodeBinds===>", baseInfo.data.data.houseCodeBinds) |
| | | that.form = baseInfo.data.data |
| | | that.form.addressName = that.form.location; |
| | | that.form.location = [ |
| | | that.form.lng, |
| | | that.form.lat, |
| | | that.form.location, |
| | | ].join(",") |
| | | if (baseInfo.data.data.houseCodeBinds) { |
| | | that.standardAddressList = baseInfo.data.data.houseBindList; |
| | | that.form.houseCodeBinds = baseInfo.data.data.houseCodeBinds.split(",") |
| | | } |
| | | |
| | | if (that.form.imageUrls && that.form.imageUrls.length) { |
| | | that.form.imageUrls = that.form.imageUrls |
| | | .split(",") |
| | | .filter((item) => item != "") |
| | | .map((item) => website.minioUrl + item) |
| | | .join(",") |
| | | } |
| | | |
| | | if ( |
| | | that.form.placePoiLabelVOList && |
| | | that.form.placePoiLabelVOList.length |
| | | ) { |
| | | let lebelTwo = that.form.placePoiLabelVOList.find((item) => { |
| | | return item.type == 2 |
| | | }) |
| | | |
| | | if (lebelTwo) that.form.label = String(lebelTwo.poiCode) |
| | | |
| | | let lebelThree = that.form.placePoiLabelVOList.find((item) => { |
| | | return item.type == 3 |
| | | }) |
| | | |
| | | if (lebelThree) that.form.smallLabel = String(lebelThree.poiCode) |
| | | } |
| | | |
| | | that.baseShow = true |
| | | const data = restInfo.data.data |
| | | // console.log("----------****************" + JSON.stringify(data)) |
| | | if (data) { |
| | | let imageUrls = data.imageUrls |
| | | let planImageUrls = data.planImageUrls |
| | | |
| | | if (imageUrls && imageUrls.length) { |
| | | imageUrls = imageUrls |
| | | .split(",") |
| | | .filter((item) => item != "") |
| | | .map((item) => website.minioUrl + item) |
| | | .join(",") |
| | | } |
| | | |
| | | if (planImageUrls && planImageUrls.length) { |
| | | planImageUrls = planImageUrls |
| | | .split(",") |
| | | .filter((item) => item != "") |
| | | .map((item) => website.minioUrl + item) |
| | | .join(",") |
| | | } |
| | | |
| | | that.placeForm = { |
| | | ...data, |
| | | imageUrls, |
| | | planImageUrls, |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | that.restShow = true |
| | | }) |
| | | ) |
| | | |
| | | that.getPlaceAddressListRequest() |
| | | }, |
| | | |
| | | locationDispose(data) { |
| | | data = data.split(",") |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2], |
| | | } |
| | | }, |
| | | |
| | | selectionClear() { |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | houseHoldRowUpdate(row, index, done, loading) { |
| | | holdUpdate(row).then( |
| | | () => { |
| | | this.holdOnLoad(this.holdPage) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | houseHoldRowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return holdRemove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.holdOnLoad(this.holdPage) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | houseHoldRowSave(row, done, loading) { |
| | | holdAdd({ |
| | | ...row, |
| | | placeId: this.curRow.id, |
| | | }).then( |
| | | () => { |
| | | this.holdOnLoad(this.holdPage) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | refreshHoldChange() { |
| | | this.holdOnLoad(this.holdPage) |
| | | }, |
| | | |
| | | holdOnLoad(holdPage, params = {}) { |
| | | if (!this.curRow.id) return |
| | | |
| | | let values = { |
| | | ...params, |
| | | placeId: this.curRow.id, |
| | | } |
| | | |
| | | getHoldList(holdPage.currentPage, holdPage.pageSize, values).then( |
| | | (res) => { |
| | | const data = res.data.data |
| | | |
| | | this.holdPage.total = data.total |
| | | this.placeExt = data.records |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | holdCurrentChange(currentPage) { |
| | | this.holdPage.currentPage = currentPage |
| | | }, |
| | | |
| | | holdSizeChange(pageSize) { |
| | | this.holdPage.pageSize = pageSize |
| | | }, |
| | | |
| | | desposeImage(data) { |
| | | if (data) { |
| | | if (data.length > 0) { |
| | | var urls = [] |
| | | var split = data.split(",").filter((item) => item != "") |
| | | split.forEach((url) => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | data = urls.join(",") |
| | | } |
| | | } |
| | | return data |
| | | }, |
| | | |
| | | dataUpdate() { |
| | | const that = this |
| | | that.disabled = true; |
| | | let imageUrls = this.desposeImage(this.form.imageUrls) |
| | | let placeImages = this.desposeImage(this.placeForm.imageUrls) |
| | | let placePlanImageUrls = this.desposeImage(this.placeForm.planImageUrls) |
| | | |
| | | let label = this.form.label |
| | | |
| | | if (this.form.smallLabel != "") { |
| | | label = label + "," + this.form.smallLabel |
| | | } |
| | | |
| | | delete this.form.smallLabel |
| | | if (Array.isArray(this.form.houseCodeBinds)) { |
| | | this.form.houseCodeBinds = this.form.houseCodeBinds.join(",") |
| | | } |
| | | |
| | | this.form.placeExtEntity = null |
| | | this.$refs.baseForm.validate((valid, done, msg) => { |
| | | if (valid) { |
| | | that.$axios |
| | | .all([ |
| | | update({ |
| | | // ...this.placeElement.curRow, |
| | | ...this.form, |
| | | imageUrls, |
| | | label, |
| | | ...this.locationDispose(this.form.location), |
| | | }), |
| | | updatePlaceExt({ |
| | | ...this.placeForm, |
| | | imageUrls: placeImages, |
| | | planImageUrls: placePlanImageUrls, |
| | | }), |
| | | ]) |
| | | .then( |
| | | that.$axios.spread(function() { |
| | | that.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | |
| | | that.roleBoxClose() |
| | | |
| | | that.placeElement.onLoad( |
| | | that.placeElement.page, |
| | | that.placeElement.query |
| | | ) |
| | | |
| | | done() |
| | | }) |
| | | ) |
| | | } else { |
| | | console.log("error submit!!") |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | roleBoxClose() { |
| | | this.form = {} |
| | | this.placeForm = {} |
| | | this.disabled = false |
| | | this.$refs.baseForm && this.$refs.baseForm.resetForm() |
| | | this.$refs.restForm && this.$refs.restForm.resetForm() |
| | | this.baseShow = false |
| | | this.restShow = false |
| | | this.roleBox = false |
| | | }, |
| | | |
| | | getPlaceAddressListRequest(query) { |
| | | getPlaceAddressList({ |
| | | addressName: query |
| | | }).then(res => { |
| | | this.standardAddressList = res.data.data; |
| | | }) |
| | | }, |
| | | |
| | | onSelectChange(e) { |
| | | console.log("selectChange===>", e); |
| | | // this.getPlaceAddressListRequest() |
| | | }, |
| | | |
| | | onRemoteMethod(query) { |
| | | console.log("remote===>", query) |
| | | this.getPlaceAddressListRequest(query) |
| | | }, |
| | | |
| | | |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .cur-container-box { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .content-box { |
| | | margin: 0 4px; |
| | | padding: 0 10px; |
| | | height: 0; |
| | | flex: 1; |
| | | overflow: hidden; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .footer-btn-box { |
| | | margin-top: 10px; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <!-- |
| | | * @name: name |
| | | * @description: Description |
| | | * @lastEditors: Francis |
| | | * @date: Do not edit |
| | | * @lastEditTime: Do not edit |
| | | * @filePath: Do not edit |
| | | --> |
| | | <template> |
| | | <div class="titleContent"> |
| | | <!-- <div class="title1" data-color="red"></div> --> |
| | | |
| | | <div :class="`title title${classVal} ${classStyle}`"> |
| | | {{ title }}</div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'boxTitle', |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | |
| | | classVal: { |
| | | type: Number, |
| | | }, |
| | | |
| | | classStyle: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .titleContent { |
| | | >div { |
| | | margin: 10px 0; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | height: 32px; |
| | | font-size: 20px; |
| | | font-weight: 600; |
| | | line-height: 32px; |
| | | margin-left: 5px; |
| | | padding-left: 5px; |
| | | position: relative; |
| | | color: #444; |
| | | z-index: 0; |
| | | } |
| | | |
| | | .echarts-title { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | .title1 { |
| | | padding-left: 15px; |
| | | |
| | | &:after { |
| | | content: " "; |
| | | width: 4px; |
| | | height: 20px; |
| | | background: #12a3f5; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 6px; |
| | | border-radius: 2px; |
| | | } |
| | | } |
| | | |
| | | .title2 { |
| | | padding-left: 15px; |
| | | |
| | | &:after { |
| | | content: " "; |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | background: #12a3f5; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 12px; |
| | | } |
| | | } |
| | | |
| | | |
| | | .title3 { |
| | | &:after { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 100%; |
| | | background: linear-gradient(to right, #01DFE3, rgba(255, 255, 255, 0)); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | .title4 { |
| | | &:after { |
| | | content: attr(data-text); |
| | | position: absolute; |
| | | display: inline-block; |
| | | bottom: -8px; |
| | | left: 5px; |
| | | opacity: 0.2; |
| | | z-index: 0; |
| | | text-align: right; |
| | | transform: rotateY(30deg); |
| | | transform: scaleY(30deg); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | .title5 { |
| | | color: #10faf8; |
| | | padding-left: 80px; |
| | | line-height: 22px; |
| | | position: relative; |
| | | border-bottom: 2px solid linear-gradient(to right, #01DFE3, rgba(255, 255, 255, 0)); |
| | | |
| | | &:after { |
| | | content: ""; |
| | | position: absolute; |
| | | bottom: 0; |
| | | top: 0; |
| | | left: 18px; |
| | | width: 50px; |
| | | height: 18px; |
| | | transform: skewX(35deg); |
| | | background: linear-gradient(to right, |
| | | #2d83fa, |
| | | #10faf8); |
| | | } |
| | | |
| | | &:before { |
| | | content: "|||"; |
| | | display: inline-block; |
| | | font-weight: 900; |
| | | color: #FFF; |
| | | line-height: 30px; |
| | | font-size: 18px; |
| | | position: absolute; |
| | | position: absolute; |
| | | top: -8px; |
| | | left: 0; |
| | | color: #2d83fa; |
| | | transform: skewX(35deg); |
| | | } |
| | | } |
| | | |
| | | .title6 { |
| | | color: #C6D039; |
| | | padding-left: 80px; |
| | | line-height: 22px; |
| | | position: relative; |
| | | border-bottom: 2px solid linear-gradient(to right, #01DFE3, rgba(255, 255, 255, 0)); |
| | | |
| | | &:after { |
| | | content: ""; |
| | | position: absolute; |
| | | bottom: 0; |
| | | top: 0; |
| | | left: 18px; |
| | | width: 50px; |
| | | height: 18px; |
| | | transform: skewX(35deg); |
| | | background: linear-gradient(to right, |
| | | #4BF15A, |
| | | #C6D039); |
| | | } |
| | | |
| | | &:before { |
| | | content: "|||"; |
| | | display: inline-block; |
| | | font-weight: 900; |
| | | color: #FFF; |
| | | line-height: 30px; |
| | | font-size: 18px; |
| | | position: absolute; |
| | | position: absolute; |
| | | top: -8px; |
| | | left: 0; |
| | | color: #4BF15A; |
| | | transform: skewX(35deg); |
| | | } |
| | | } |
| | | |
| | | .title7 { |
| | | |
| | | &:after { |
| | | content: ""; |
| | | position: absolute; |
| | | bottom: 0; |
| | | top: 0; |
| | | left: 0; |
| | | width: 180px; |
| | | height: 100%; |
| | | opacity: 0.3; |
| | | background: linear-gradient(to right, |
| | | #4BF15A, |
| | | #4bf15900); |
| | | } |
| | | |
| | | &:before { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 100%; |
| | | background: linear-gradient(to right, #4BF15A, rgba(255, 255, 255, 0)); |
| | | } |
| | | } |
| | | |
| | | .title8 { |
| | | border-radius: 16px; |
| | | border: 1px solid #e8e9fb; |
| | | box-shadow: 0 0 10px #e8e9fb; |
| | | text-align: center; |
| | | width: 160px; |
| | | color: #12a3f5; |
| | | |
| | | &:before { |
| | | content: ""; |
| | | width: 300%; |
| | | height: 2px; |
| | | background: #e8e9fb; |
| | | position: absolute; |
| | | top: 15px; |
| | | left: 100%; |
| | | background: linear-gradient(to right, #e8e9fb, rgba(255, 255, 255, 0)); |
| | | } |
| | | } |
| | | |
| | | .title9 { |
| | | background: #ECF8FF; |
| | | border-top-left-radius: 5px; |
| | | padding-left: 20px; |
| | | |
| | | &:before { |
| | | content: ""; |
| | | border-top-left-radius: 5px; |
| | | border-bottom-left-radius: 5px; |
| | | width: 4px; |
| | | height: 100%; |
| | | background: #50BFFF; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | } |
| | | } |
| | | |
| | | .title10 { |
| | | background: #FFF6F7; |
| | | border-top-left-radius: 5px; |
| | | padding-left: 20px; |
| | | |
| | | &:before { |
| | | content: ""; |
| | | border-top-left-radius: 5px; |
| | | border-bottom-left-radius: 5px; |
| | | width: 4px; |
| | | height: 100%; |
| | | background: #FE6C6F; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | .title11 { |
| | | display: inline-block; |
| | | position: relative; |
| | | width: 150px; |
| | | height: 32px; |
| | | line-height: 32px; |
| | | padding-left: 15px; |
| | | background: #50BFFF; |
| | | left: -8px; |
| | | color: #FFF; |
| | | |
| | | &:before { |
| | | content: ""; |
| | | position: absolute; |
| | | height: 0; |
| | | width: 0; |
| | | border-bottom: 8px solid #4396c5; |
| | | border-left: 8px solid transparent; |
| | | top: -8px; |
| | | left: 0; |
| | | } |
| | | |
| | | &:after { |
| | | content: ""; |
| | | position: absolute; |
| | | height: 0; |
| | | width: 0; |
| | | border-top: 15px solid transparent; |
| | | border-bottom: 15px solid transparent; |
| | | border-left: 8px solid #50BFFF; |
| | | right: -8px; |
| | | } |
| | | } |
| | | |
| | | .title12 { |
| | | position: relative; |
| | | width: 160px; |
| | | padding-left: 10px; |
| | | // top: 15px; |
| | | // padding: 8px 10px; |
| | | background: #00B3ED; |
| | | box-shadow: -1px 2px 4px rgba(0, 0, 0, 0.5); |
| | | color: #FFF; |
| | | // height: 40px; |
| | | |
| | | &:before { |
| | | position: absolute; |
| | | content: ""; |
| | | display: block; |
| | | width: 7px; |
| | | height: 100%; |
| | | padding: 0 0 7px; |
| | | top: 0; |
| | | left: -7px; |
| | | background: inherit; |
| | | border-radius: 5px 0 0 5px; |
| | | } |
| | | |
| | | &:before { |
| | | position: absolute; |
| | | content: ""; |
| | | display: block; |
| | | width: 5px; |
| | | height: 5px; |
| | | background: rgba(0, 0, 0, 0.35); |
| | | bottom: -5px; |
| | | left: -5px; |
| | | border-radius: 5px 0 0 5px; |
| | | } |
| | | |
| | | } |
| | | |
| | | .title13 { |
| | | border-left: 2px solid #FE6C6F; |
| | | |
| | | &:after { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 60%; |
| | | background: linear-gradient(to right, #FE6C6F, rgba(255, 255, 255, 0)); |
| | | } |
| | | |
| | | &::before { |
| | | content: " "; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 30%; |
| | | background: linear-gradient(to right, #FE6C6F, rgba(255, 255, 255, 0)); |
| | | } |
| | | } |
| | | |
| | | .title14 { |
| | | border-left: 2px solid #01DFE3; |
| | | |
| | | &:after { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 60%; |
| | | background: linear-gradient(to right, #01DFE3, rgba(255, 255, 255, 0)); |
| | | } |
| | | |
| | | &::before { |
| | | content: " "; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 2px; |
| | | width: 30%; |
| | | background: linear-gradient(to right, #01DFE3, rgba(255, 255, 255, 0)); |
| | | } |
| | | } |
| | | |
| | | .title15 { |
| | | color: #FFF; |
| | | padding-left: 50px; |
| | | background: linear-gradient(-210deg, transparent 1.5em, #01DFE3 0); |
| | | |
| | | &::before { |
| | | content: ''; |
| | | display: block; |
| | | width: 1.73em; |
| | | height: 3em; |
| | | position: absolute; |
| | | background: linear-gradient(-60deg, #577b98 50%, transparent 0); |
| | | left: -3px; |
| | | top: 0; |
| | | border-bottom-left-radius: inherit; |
| | | transform: translateY(-0.5em) rotate(30deg); |
| | | transform-origin: bottom right; |
| | | box-shadow: .2em .2em .3em -.1em rgba(0, 0, 0, .15); |
| | | } |
| | | } |
| | | |
| | | .title16 { |
| | | color: #FFF; |
| | | padding-left: 50px; |
| | | background: linear-gradient(-210deg, transparent 1.5em, #FE6C6F 0); |
| | | |
| | | &::before { |
| | | content: ''; |
| | | display: block; |
| | | width: 1.73em; |
| | | height: 3em; |
| | | position: absolute; |
| | | background: linear-gradient(-60deg, #f18384 50%, transparent 0); |
| | | left: -3px; |
| | | top: 0; |
| | | border-bottom-left-radius: inherit; |
| | | transform: translateY(-0.5em) rotate(30deg); |
| | | transform-origin: bottom right; |
| | | box-shadow: .2em .2em .3em -.1em rgba(0, 0, 0, .15); |
| | | } |
| | | } |
| | | |
| | | .title17 { |
| | | &:after { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 100%; |
| | | width: 100%; |
| | | animation: animation3 1s linear infinite; |
| | | background: linear-gradient(135deg, #01DFE3 0.25em, transparent 0.25em) -0.5em 0, linear-gradient(225deg, #01DFE3 0.25em, transparent 0.25em) -0.5em 0, linear-gradient(315deg, rgba(238, 161, 99, 0.25) 0.25em, transparent 0.25em) 0 0, linear-gradient(45deg, rgba(238, 161, 99, 0.25) 0.25em, transparent 0.25em) 0 0; |
| | | background-size: 0.75em 0.75em; |
| | | opacity: 0.3; |
| | | |
| | | } |
| | | } |
| | | |
| | | .title18 { |
| | | &:after { |
| | | content: " "; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | position: absolute; |
| | | height: 100%; |
| | | width: 100%; |
| | | opacity: 0.3; |
| | | animation: animation2 1s linear infinite; |
| | | background: repeating-linear-gradient(45deg, #01DFE3 0, #01DFE3 0.25em, transparent 0.25em, transparent 0.5em); |
| | | background-size: 0.75em 0.75em; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <el-dialog class="place-info-box" title="编辑" append-to-body :visible.sync="roleBox" center @close="roleBoxClose"> |
| | | <div class="cur-container-box"> |
| | | <div class="content-box"> |
| | | <box-title class="m10" :classVal="9" :title="'基本信息'"></box-title> |
| | | <avue-form v-if="baseShow" ref="baseForm" :option="option" v-model="form"> |
| | | </avue-form> |
| | | |
| | | |
| | | <box-title class="m10" :classVal="9" :title="'租客信息'"></box-title> |
| | | <avue-crud :option="placeOption" :data="houseRental" ref="tenantForm" v-model="houseHoldForm" |
| | | :permission="permissionList" @row-del="houseHoldRowDel" @row-update="houseHoldRowUpdate" |
| | | @row-save="houseHoldRowSave" :page.sync="holdPage" @current-change="holdCurrentChange" |
| | | @size-change="holdSizeChange" @refresh-change="refreshHoldChange"> |
| | | </avue-crud> |
| | | </div> |
| | | |
| | | <div class="footer-btn-box"> |
| | | <el-button size="small" type="primary" @click="dataUpdate">保 存</el-button> |
| | | |
| | | <el-button size="small" @click="roleBoxClose">关 闭</el-button> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getPlace, |
| | | getPlaceExt, |
| | | holdRemove, |
| | | holdAdd, |
| | | holdUpdate, |
| | | getHoldList, |
| | | updatePlaceExt, |
| | | } from "@/api/place/place" |
| | | import { |
| | | getPlaceList |
| | | } from "@/api/doorplateAddress/doorplateAddress" |
| | | import website from "@/config/website" |
| | | |
| | | |
| | | |
| | | import { |
| | | getList as getHouseList, |
| | | getDetatil as getHouseDetail |
| | | } from "@/api/userHouse/list/house.js" |
| | | |
| | | import { |
| | | getDetatil, |
| | | updateInfo, |
| | | add as addHouseRental |
| | | } from "@/api/userHouse/list/houseRental.js" |
| | | |
| | | |
| | | import { |
| | | getList as getHouseholdList, |
| | | } from "@/api/userHouse/list/houseHold.js" |
| | | |
| | | |
| | | |
| | | import boxTitle from "./boxTitle" |
| | | |
| | | export default { |
| | | data() { |
| | | //手机号格式校验 |
| | | let validatorPhone = function (rule, value, callback) { |
| | | if (value) { |
| | | if (!/^1[3456789]\d{9}$/.test(value)) { |
| | | callback(new Error("手机号格式有误!")) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | |
| | | return { |
| | | roleBox: false, |
| | | baseShow: false, |
| | | restShow: false, |
| | | |
| | | placeExt: [], |
| | | |
| | | form: {}, |
| | | option: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | |
| | | column: [ |
| | | { |
| | | label: "房屋", |
| | | prop: "houseName", |
| | | display: false |
| | | }, |
| | | { |
| | | label: "房屋", |
| | | prop: "houseCode", |
| | | hide: true, |
| | | type: "table", |
| | | children: { |
| | | border: true, |
| | | height: 400, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | | submitText: "确定", |
| | | column: [ |
| | | // { |
| | | // width: 220, |
| | | // overHidden: true, |
| | | // label: '小区名称', |
| | | // prop: "districtName", |
| | | // search: true, |
| | | // searchSpan: 4, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请输入小区名称", |
| | | // trigger: "blur", |
| | | // },], |
| | | // }, |
| | | { |
| | | label: "地址", |
| | | prop: "address", |
| | | minWidth: 180, |
| | | display: false |
| | | }, |
| | | ], |
| | | }, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | formatter: (row) => { |
| | | return row.houseName |
| | | }, |
| | | onLoad: ({ |
| | | page, |
| | | value, |
| | | data |
| | | }, callback) => { |
| | | //首次加载去查询对应的值 |
| | | if (value && this.isEdit) { |
| | | getHouseDetail({ |
| | | houseCode: value |
| | | }).then(res => { |
| | | var resData = res.data.data |
| | | // 查询对应行数据 |
| | | callback(resData) |
| | | return |
| | | }) |
| | | } |
| | | if (page && this.isEdit) { |
| | | this.loading = true |
| | | getHouseList(page.currentPage, page.pageSize, Object.assign(data)).then(res => { |
| | | const resData = res.data.data |
| | | var total = resData.total |
| | | var data = resData.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | //分页查询信息 |
| | | callback({ |
| | | total: total, |
| | | data: data |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | props: { |
| | | label: 'address', |
| | | value: 'houseCode' |
| | | } |
| | | }, |
| | | { |
| | | label: "关系", |
| | | prop: "tenantRelationship", |
| | | search: true, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 46, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "同一户", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "不同一户", |
| | | value: 2 |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择关系", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "房屋状态", |
| | | prop: "houseStatus", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "部分出租", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "全部出租", |
| | | value: 2 |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择房屋状态", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "用途", |
| | | prop: "rentalUse", |
| | | type: "select", |
| | | searchSpan: 3, |
| | | searchLabelWidth: 66, |
| | | search: true, |
| | | dataType: "number", |
| | | width: 100, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=rentalUseType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择用途", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "租房时间", |
| | | prop: "rentalTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择租房时间", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "到期时间", |
| | | prop: "dueTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择到期时间", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | |
| | | { |
| | | label: "租赁期限", |
| | | prop: "dldType", |
| | | width: 100, |
| | | display: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "长期", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "中期", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "短期", |
| | | value: 3 |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 80, |
| | | label: "审核状态", |
| | | prop: "auditStatus", |
| | | type: "select", |
| | | search: true, |
| | | searchSpan: 4, |
| | | display: false, |
| | | slot: true, |
| | | dicData: [ |
| | | { |
| | | label: "已确认", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "待确认", |
| | | value: 0 |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | display: false, |
| | | }, |
| | | { |
| | | label: "合同", |
| | | prop: "fileUrls", |
| | | // align:'center', |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | hide: true, |
| | | span: 24, |
| | | }, |
| | | ] |
| | | }, |
| | | |
| | | placeForm: {}, |
| | | optionDetail: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | label: "法人信息", |
| | | prop: "legalPerson", |
| | | }, |
| | | |
| | | { |
| | | width: 96, |
| | | label: "法人电话", |
| | | prop: "legalTel", |
| | | search: true, |
| | | searchSpan: 4, |
| | | slot: true, |
| | | overHidden: true, |
| | | rules: [{ |
| | | validator: validatorPhone, |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | |
| | | { |
| | | label: "营业执照", |
| | | prop: "imageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | |
| | | { |
| | | label: "场所平面图", |
| | | prop: "planImageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: "name", |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | }, |
| | | ], |
| | | }, |
| | | |
| | | loading: true, |
| | | placeOption: { |
| | | menu: true, |
| | | height: 300, |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | searchShow: false, |
| | | addBtn: true, |
| | | delBtn: true, |
| | | editBtn: true, |
| | | border: true, |
| | | index: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "姓名", |
| | | prop: "name", |
| | | // search: true, |
| | | searchSpan: 4, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入姓名", |
| | | trigger: "blur", |
| | | },], |
| | | }, |
| | | { |
| | | label: "电话", |
| | | prop: "phoneNumber", |
| | | width: 100, |
| | | // search: true, |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | width: 160, |
| | | // search: true, |
| | | searchSpan: 4, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请输身份证号", |
| | | trigger: "blur", |
| | | } |
| | | ], |
| | | }, |
| | | // { |
| | | // label: "性别", |
| | | // prop: "gender", |
| | | // type: "select", |
| | | // dicData: [{ |
| | | // label: "男", |
| | | // value: 1 |
| | | // }, |
| | | // { |
| | | // label: "女", |
| | | // value: 0 |
| | | // }, |
| | | // { |
| | | // label: "未知", |
| | | // value: 1 |
| | | // } |
| | | // ], |
| | | // }, |
| | | // { |
| | | // label: "关系", |
| | | // prop: "relationship", |
| | | // type: "select", |
| | | // dicUrl: "/api/blade-system/dict-biz/dictionary?code=roleRelation", |
| | | // dataType: "number", |
| | | // props: { |
| | | // label: "dictValue", |
| | | // value: "dictKey", |
| | | // }, |
| | | // display: false |
| | | // }, |
| | | { |
| | | width: 220, |
| | | // overHidden: true, |
| | | label: '工作单位', |
| | | prop: "employer", |
| | | // search: true, |
| | | searchSpan: 4, |
| | | |
| | | }, |
| | | { |
| | | label: "户籍地址", |
| | | prop: "hukouRegistration", |
| | | minWidth: 160, |
| | | // overHidden: true, |
| | | |
| | | }, |
| | | ] |
| | | }, |
| | | holdPage: { |
| | | pageSize: 20, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | houseHoldForm: {}, |
| | | houseRental: [], |
| | | holdPage: { |
| | | pageSize: 100, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | idEdit: false |
| | | } |
| | | }, |
| | | |
| | | components: { |
| | | boxTitle |
| | | }, |
| | | |
| | | inject: ["placeElement"], |
| | | |
| | | methods: { |
| | | initOpen(type, newData) { |
| | | if (type == 2) { |
| | | this.isEdit = true; |
| | | this.getInfo(newData); |
| | | this.onLoadHouseHold(newData); |
| | | } else { |
| | | this.houseRental = []; |
| | | this.houseHoldForm = {}; |
| | | } |
| | | |
| | | this.roleBox = true |
| | | this.baseShow = true |
| | | this.restShow = false |
| | | return; |
| | | |
| | | this.curRow = newData |
| | | this.roleBox = true |
| | | this.baseShow = false |
| | | this.restShow = false |
| | | this.form = {} |
| | | this.placeForm = {} |
| | | |
| | | |
| | | }, |
| | | |
| | | getInfo(id) { |
| | | getDetatil(id).then(res => { |
| | | this.form = res.data.data |
| | | if (this.form.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.fileUrls.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.fileUrls = urls.join(",") |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | onLoadHouseHold(id) { |
| | | let params = { |
| | | housingRentalId: id |
| | | } |
| | | getHouseholdList(this.holdPage.currentPage, this.holdPage.pageSize, Object.assign(params)).then(res => { |
| | | const data = res.data.data |
| | | this.houseRental = data.records |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | |
| | | |
| | | |
| | | locationDispose(data) { |
| | | data = data.split(",") |
| | | |
| | | return { |
| | | longitude: data[0], |
| | | latitude: data[1], |
| | | location: data[2], |
| | | } |
| | | }, |
| | | |
| | | selectionClear() { |
| | | this.$nextTick(() => { |
| | | this.$refs.crud && this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | |
| | | houseHoldRowUpdate(row, index, done, loading) { |
| | | let item = this.houseRental[index]; |
| | | item = row |
| | | this.$set(this.houseRental, index, item) |
| | | // this.houseRental[index] = row |
| | | done(); |
| | | return; |
| | | holdUpdate(row).then( |
| | | () => { |
| | | this.holdOnLoad(this.holdPage) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | houseHoldRowDel(row, index) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | // return holdRemove(row.id) |
| | | this.houseRental.splice(index, 1); |
| | | }) |
| | | |
| | | |
| | | |
| | | // .then(() => { |
| | | // this.holdOnLoad(this.holdPage) |
| | | |
| | | // this.$message({ |
| | | // type: "success", |
| | | // message: "操作成功!", |
| | | // }) |
| | | // }) |
| | | }, |
| | | |
| | | houseHoldRowSave(row) { |
| | | console.log("===>", row) |
| | | |
| | | this.$refs.tenantForm.validate((valid, done, msg) => { |
| | | if (valid) { |
| | | this.houseRental.push(row); |
| | | done(); |
| | | } |
| | | }) |
| | | return; |
| | | holdAdd({ |
| | | ...row, |
| | | placeId: this.curRow.id, |
| | | }).then( |
| | | () => { |
| | | this.holdOnLoad(this.holdPage) |
| | | |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | refreshHoldChange() { |
| | | this.holdOnLoad(this.holdPage) |
| | | }, |
| | | |
| | | holdOnLoad(holdPage, params = {}) { |
| | | if (!this.curRow.id) return |
| | | |
| | | let values = { |
| | | ...params, |
| | | placeId: this.curRow.id, |
| | | } |
| | | |
| | | getHoldList(holdPage.currentPage, holdPage.pageSize, values).then( |
| | | (res) => { |
| | | const data = res.data.data |
| | | |
| | | this.holdPage.total = data.total |
| | | this.placeExt = data.records |
| | | |
| | | this.loading = false |
| | | this.selectionClear() |
| | | } |
| | | ) |
| | | }, |
| | | |
| | | holdCurrentChange(currentPage) { |
| | | this.holdPage.currentPage = currentPage |
| | | }, |
| | | |
| | | holdSizeChange(pageSize) { |
| | | this.holdPage.pageSize = pageSize |
| | | }, |
| | | |
| | | desposeImage(data) { |
| | | if (data) { |
| | | if (data.length > 0) { |
| | | var urls = [] |
| | | var split = data.split(",").filter((item) => item != "") |
| | | split.forEach((url) => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | data = urls.join(",") |
| | | } |
| | | } |
| | | return data |
| | | }, |
| | | |
| | | dataUpdate() { |
| | | |
| | | |
| | | this.$refs.baseForm.validate((valid, done, msg) => { |
| | | if (valid) { |
| | | if (this.form.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var split = this.form.fileUrls.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | this.form.fileUrls = urls.join(",") |
| | | } |
| | | this.form.householdVOList = this.houseRental; |
| | | console.log("=====>", this.form); |
| | | |
| | | updateInfo(this.form).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.getInfo(this.form.id); |
| | | |
| | | done() |
| | | this.roleBoxClose() |
| | | |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | } else { |
| | | console.log("error submit!!") |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | addRequest() { |
| | | addHouseRental(this.form).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.getInfo(this.form.id); |
| | | |
| | | done() |
| | | this.roleBoxClose() |
| | | |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | |
| | | updateRequest() { |
| | | update(this.form).then(() => { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.getInfo(this.form.id); |
| | | |
| | | done() |
| | | this.roleBoxClose() |
| | | |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | |
| | | |
| | | |
| | | roleBoxClose() { |
| | | this.form = {} |
| | | this.houseHoldForm = {} |
| | | this.$refs.baseForm && this.$refs.baseForm.resetForm() |
| | | this.$refs.tenantForm && this.$refs.tenantForm.resetForm() |
| | | this.baseShow = false |
| | | this.restShow = false |
| | | this.roleBox = false |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .cur-container-box { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .content-box { |
| | | margin: 0 4px; |
| | | padding: 0 10px; |
| | | height: 0; |
| | | flex: 1; |
| | | overflow: hidden; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .footer-btn-box { |
| | | margin-top: 10px; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-dialog title="标签管理" append-to-body :visible.sync="labelFlag" center width="600px"> |
| | | <div> |
| | | <div class="grid-container2"> |
| | | <div class="grid-item" :style="{ backgroundColor: item2.color }" v-for="(item2, index2) in labelData" |
| | | @click="changLabel(item2)" :key="index2"> |
| | | <div class="grid-item" :style="{ backgroundColor: item2.color,color: item2.fontColor}" |
| | | v-for="(item2, index2) in labelData" @click="changLabel(item2)" :key="index2"> |
| | | {{ item2.name }} |
| | | </div> |
| | | </div> |
| | |
| | | if (row.communityCode) { |
| | | this.query.regionCode = row.communityCode |
| | | } |
| | | if (row.parentId) { |
| | | this.query.parentId = row.parentId |
| | | } else { |
| | | this.query.parentId = 103 |
| | | } |
| | | this.query.labelId = row.labelId |
| | | this.query.parentId = 103 |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onsubmit() { |
| | |
| | | this.currentRow = item |
| | | this.labelFlag = true |
| | | let params = { |
| | | parentId: 103 |
| | | parentId: this.query.parentId |
| | | } |
| | | // 查询标签 |
| | | getLabelList(Object.assign(params)).then(res => { |
| | |
| | | getDetatils(item.id).then(res => { |
| | | this.householdLabelList = res.data.data.householdLabelList |
| | | // 将细类放到一起 |
| | | data.forEach(e => { |
| | | e.children.forEach(f => { |
| | | if (this.householdLabelList.length > 0) { |
| | | this.householdLabelList.forEach(h => { |
| | | if (Number(f.id) == h.labelId) { |
| | | f['color'] = h.color |
| | | f['remark'] = h.remark |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | console.log("*********123*********", res.data.data.householdLabelList) |
| | | data.forEach(f => { |
| | | if (this.householdLabelList.length > 0) { |
| | | this.householdLabelList.forEach(h => { |
| | | if (f.id == h.labelId) { |
| | | f.color = h.color |
| | | f.fontColor = '#080808' |
| | | // f['remark'] = h.remark |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | this.labelData = data |
| | | console.log("******************", data) |
| | | this.loading = false |
| | | }) |
| | | }) |
| | |
| | | .box .el-scrollbar__wrap { |
| | | overflow: scroll; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | selection: true, |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | label: "上报时间", |
| | | prop: "dateRange", |
| | | type: "daterange", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | searchRange: true, |
| | | startPlaceholder: '开始日期', |
| | | endPlaceholder: '结束日期', |
| | | align: 'center', |
| | | search: true, |
| | | hide: true, |
| | | searchSpan: 5, |
| | | searchLabelWidth: 76, |
| | | }, { |
| | | width: 130, |
| | | span: 12, |
| | | label: "姓名", |
| | |
| | | { |
| | | width: 140, |
| | | span: 12, |
| | | label: "创建时间", |
| | | label: "上报时间", |
| | | prop: "createTime", |
| | | align: 'center', |
| | | labelWidth: 110, |
| | |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | let dateRange = params.dateRange |
| | | if (params.dateRange) { |
| | | params.startTime = dateRange[0] |
| | | params.endTime = dateRange[1] |
| | | delete params.dateRange |
| | | } |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| New file |
| | |
| | | <template> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <basic-container> |
| | | <avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud" |
| | | v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" |
| | | :before-open="beforeOpen" :page.sync="page" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot-scope="{row, size}" slot="auditStatus"> |
| | | <el-tag :size="size" :type="showConfirmFlag(row.auditStatus).type"> |
| | | {{ showConfirmFlag(row.auditStatus).text }} |
| | | </el-tag> |
| | | </template> |
| | | |
| | | <template slot="menuLeft"> |
| | | <el-button type="primary" size="small" plain icon="el-icon-plus" v-if="permission.houseRental_add" |
| | | @click="showEditMoel(1)">新 增 |
| | | </el-button> |
| | | <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.houseRental_delete" |
| | | @click="handleDelete">删 除 |
| | | </el-button> |
| | | |
| | | </template> |
| | | |
| | | <template slot-scope="{row, size}" slot="menu"> |
| | | <el-button type="text" :size="size" icon="el-icon-edit" v-if="permission.houseRental_edit" |
| | | @click="showEditMoel(2, row)">编 辑 |
| | | </el-button> |
| | | |
| | | |
| | | <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.househould_manager" |
| | | @click="ManageTenants(row)">管理租户 |
| | | </el-button> |
| | | |
| | | <!-- <el-button :size="size" type="text" icon="el-icon-circle-plus-outline" |
| | | @click="ManageTenants(row)">管理租户 |
| | | </el-button> --> |
| | | |
| | | |
| | | <!-- <el-button type="success" size="small" plain icon="el-icon-upload2" @click="handleImport">导入 |
| | | </el-button> |
| | | <el-button type="warning" size="small" plain icon="el-icon-download" @click="handleExport">导出 |
| | | </el-button> --> |
| | | </template> |
| | | </avue-crud> |
| | | |
| | | <el-dialog title="租户管理" append-to-body :visible.sync="roleBox"> |
| | | <avue-crud :option="houseHoldOption" :search.sync="search" :table-loading="loading" :data="houseHold" |
| | | ref="crud" v-model="houseHoldForm" :permission="permissionList" @row-del="houseHoldRowDel" |
| | | @row-update="houseHoldRowUpdate" @row-save="houseHoldRowSave" :page.sync="holdPage" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"></avue-crud> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="用户数据导入" append-to-body :visible.sync="excelBox" width="555px"> |
| | | <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"> |
| | | |
| | | <template slot="excelTemplate"> |
| | | <el-button type="primary" @click="handleTemplate"> |
| | | 点击下载<i class="el-icon-download el-icon--right"></i> |
| | | </el-button> |
| | | </template> |
| | | </avue-form> |
| | | </el-dialog> |
| | | |
| | | |
| | | <retalInfo ref="RetalInfo"></retalInfo> |
| | | |
| | | </basic-container> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getList as getHouseholdList, |
| | | remove as householdDel, |
| | | add as householdAdd, |
| | | update as householdUpdate, |
| | | getDetatil as getHouseholdDetatil |
| | | } from "@/api/userHouse/list/houseHold.js" |
| | | import { |
| | | getList, |
| | | getPageList, |
| | | remove, |
| | | add, |
| | | update, |
| | | getDetatil |
| | | } from "@/api/userHouse/list/houseRental.js" |
| | | import { |
| | | getList as getHouseList, |
| | | getDetatil as getHouseDetail |
| | | } from "@/api/userHouse/list/house.js" |
| | | import { |
| | | exportBlob |
| | | } from "@/api/common" |
| | | import { |
| | | mapGetters |
| | | } from "vuex" |
| | | import { |
| | | getToken |
| | | } from '@/util/auth' |
| | | import { |
| | | downloadXls |
| | | } from "@/util/util" |
| | | import { |
| | | dateNow |
| | | } from "@/util/date" |
| | | import NProgress from 'nprogress' |
| | | import 'nprogress/nprogress.css' |
| | | import func from "@/util/func" |
| | | import Qs from "qs" |
| | | import website from '@/config/website' |
| | | |
| | | import retalInfo from './components/retalInfo' |
| | | export default { |
| | | components: { |
| | | retalInfo |
| | | }, |
| | | data() { |
| | | return { |
| | | roleBox: false, |
| | | form: {}, |
| | | search: {}, |
| | | excelBox: false, |
| | | selectionList: [], |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | rowHouseHold: {}, |
| | | houseHoldForm: { |
| | | relationship: 18, |
| | | roleType: 2, |
| | | }, |
| | | houseHold: [], |
| | | holdPage: { |
| | | pageSize: 100, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | houseHoldOption: { |
| | | height: '500', |
| | | calcHeight: 80, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | | border: true, |
| | | index: true, |
| | | // selection: true, |
| | | viewBtn: true, |
| | | addBtn: true, |
| | | dialogType: 'drawer', |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | width: 110, |
| | | label: "所属街道", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "townStreetName", |
| | | search: true, |
| | | searchSpan: 4 |
| | | }, |
| | | |
| | | { |
| | | width: 156, |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "neiName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | label: "姓名", |
| | | prop: "name", |
| | | // search: true, |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | label: "电话", |
| | | prop: "phoneNumber", |
| | | width: 100, |
| | | // search: true, |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | label: "身份证号", |
| | | prop: "idCard", |
| | | width: 160, |
| | | // search: true, |
| | | searchSpan: 4, |
| | | }, |
| | | { |
| | | label: "性别", |
| | | prop: "gender", |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "男", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "女", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "未知", |
| | | value: 1 |
| | | } |
| | | ], |
| | | }, |
| | | // { |
| | | // label: "关系", |
| | | // prop: "relationship", |
| | | // type: "select", |
| | | // dicUrl: "/api/blade-system/dict-biz/dictionary?code=roleRelation", |
| | | // dataType: "number", |
| | | // props: { |
| | | // label: "dictValue", |
| | | // value: "dictKey", |
| | | // }, |
| | | // display: false |
| | | // }, |
| | | { |
| | | label: "民族", |
| | | prop: "ethnicity", |
| | | type: "select", |
| | | // hide: true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=nationType", |
| | | dataType: "number", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | }, |
| | | { |
| | | width: 220, |
| | | overHidden: true, |
| | | label: '小区名称', |
| | | prop: "aoiName", |
| | | // search: true, |
| | | searchSpan: 4, |
| | | display: false |
| | | }, |
| | | // { |
| | | // label: "地址", |
| | | // prop: "address", |
| | | // minWidth: 160, |
| | | // overHidden: true, |
| | | // display: false |
| | | // }, |
| | | |
| | | { |
| | | label: "户籍地址", |
| | | prop: "hukouRegistration", |
| | | // hide: true, |
| | | minWidth: 150, |
| | | overHidden: true, |
| | | }, |
| | | { |
| | | label: "工作单位", |
| | | prop: "employer", |
| | | // editDisplay:false, |
| | | // hide: true, |
| | | }, |
| | | ] |
| | | }, |
| | | option: { |
| | | labelWidth: 120, |
| | | searchLabelWidth: 96, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | height: 'auto', |
| | | calcHeight: 80, |
| | | tip: false, |
| | | border: true, |
| | | index: true, |
| | | selection: true, |
| | | viewBtn: true, |
| | | addBtn: false, |
| | | editBtn: false, |
| | | dialogType: 'drawer', |
| | | dialogClickModal: false, |
| | | column: [{ |
| | | width: 110, |
| | | label: "所属街道", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "townStreetName", |
| | | search: true, |
| | | searchSpan: 4 |
| | | }, |
| | | |
| | | { |
| | | width: 156, |
| | | overHidden: true, |
| | | label: "所属社区", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | prop: "neiName", |
| | | search: true, |
| | | searchSpan: 4, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择所属社区", |
| | | trigger: "blur", |
| | | }], |
| | | }, |
| | | { |
| | | label: "房屋", |
| | | prop: "houseName", |
| | | display: false, |
| | | minWidth: 150, |
| | | overHidden: true, |
| | | }, |
| | | { |
| | | label: "房屋", |
| | | prop: "houseCode", |
| | | hide: true, |
| | | type: "table", |
| | | |
| | | children: { |
| | | border: true, |
| | | height: 400, |
| | | searchShow: true, |
| | | searchMenuSpan: 6, |
| | | submitText: "确定", |
| | | column: [ |
| | | // { |
| | | // width: 220, |
| | | // overHidden: true, |
| | | // label: '小区名称', |
| | | // prop: "districtName", |
| | | // search: true, |
| | | // searchSpan: 4, |
| | | // rules: [{ |
| | | // required: true, |
| | | // message: "请输入小区名称", |
| | | // trigger: "blur", |
| | | // },], |
| | | // }, |
| | | { |
| | | label: "地址", |
| | | prop: "address", |
| | | minWidth: 180, |
| | | display: false |
| | | }, |
| | | ], |
| | | }, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | formatter: (row) => { |
| | | return row.houseName |
| | | }, |
| | | onLoad: ({ |
| | | page, |
| | | value, |
| | | data |
| | | }, callback) => { |
| | | //首次加载去查询对应的值 |
| | | if (value) { |
| | | getHouseDetail({ |
| | | houseCode: value |
| | | }).then(res => { |
| | | var resData = res.data.data |
| | | // 查询对应行数据 |
| | | callback(resData) |
| | | return |
| | | }) |
| | | } |
| | | if (page) { |
| | | this.loading = true |
| | | getHouseList(page.currentPage, page.pageSize, Object.assign(data)).then(res => { |
| | | const resData = res.data.data |
| | | var total = resData.total |
| | | var data = resData.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | //分页查询信息 |
| | | callback({ |
| | | total: total, |
| | | data: data |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | props: { |
| | | label: 'address', |
| | | value: 'houseCode' |
| | | } |
| | | }, |
| | | { |
| | | label: "关系", |
| | | prop: "tenantRelationship", |
| | | search: true, |
| | | searchSpan: 3, |
| | | searchLabelWidth: 46, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "同一户", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "不同一户", |
| | | value: 2 |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择关系", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "房屋状态", |
| | | prop: "houseStatus", |
| | | search: true, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "部分出租", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "全部出租", |
| | | value: 2 |
| | | } |
| | | ], |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择房屋状态", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "用途", |
| | | prop: "rentalUse", |
| | | type: "select", |
| | | searchSpan: 3, |
| | | searchLabelWidth: 66, |
| | | search: true, |
| | | dataType: "number", |
| | | width: 100, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=rentalUseType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择用途", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: "租房时间", |
| | | prop: "rentalTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择租房时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | { |
| | | label: "到期时间", |
| | | prop: "dueTime", |
| | | type: "date", |
| | | format: "yyyy-MM-dd", |
| | | valueFormat: "yyyy-MM-dd", |
| | | width: 100, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择到期时间", |
| | | trigger: "blur", |
| | | }, ], |
| | | }, |
| | | |
| | | { |
| | | label: "租赁期限", |
| | | prop: "dldType", |
| | | width: 100, |
| | | display: false, |
| | | search: true, |
| | | searchSpan: 4, |
| | | type: "select", |
| | | dicData: [{ |
| | | label: "长期", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "中期", |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: "短期", |
| | | value: 3 |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 80, |
| | | label: "审核状态", |
| | | prop: "auditStatus", |
| | | type: "select", |
| | | search: true, |
| | | searchSpan: 4, |
| | | display: false, |
| | | slot: true, |
| | | dicData: [{ |
| | | label: "已确认", |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: "待确认", |
| | | value: 0 |
| | | } |
| | | ], |
| | | }, |
| | | { |
| | | width: 144, |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | display: false, |
| | | }, |
| | | { |
| | | label: "合同", |
| | | prop: "fileUrls", |
| | | // align:'center', |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-img", |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | url: "link", |
| | | }, |
| | | hide: true, |
| | | span: 24, |
| | | }, |
| | | ] |
| | | }, |
| | | data: [], |
| | | |
| | | excelForm: {}, |
| | | excelOption: { |
| | | submitBtn: false, |
| | | emptyBtn: false, |
| | | column: [{ |
| | | label: '模板上传', |
| | | prop: 'excelFile', |
| | | type: 'upload', |
| | | drag: true, |
| | | loadText: '模板上传中,请稍等', |
| | | span: 24, |
| | | propsHttp: { |
| | | res: 'data' |
| | | }, |
| | | tip: '请上传 .xls,.xlsx 标准格式文件', |
| | | action: "/api/blade-system/user/import-user" |
| | | }, |
| | | { |
| | | label: "数据覆盖", |
| | | prop: "isCovered", |
| | | type: "switch", |
| | | align: "center", |
| | | width: 80, |
| | | dicData: [{ |
| | | label: "否", |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: "是", |
| | | value: 1 |
| | | } |
| | | ], |
| | | value: 0, |
| | | slot: true, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择是否覆盖", |
| | | trigger: "blur" |
| | | }] |
| | | }, |
| | | { |
| | | label: '模板下载', |
| | | prop: 'excelTemplate', |
| | | formslot: true, |
| | | span: 24, |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "permission"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.houseRental_add, true), |
| | | viewBtn: this.vaildData(this.permission.houseRental_view, true), |
| | | delBtn: this.vaildData(this.permission.houseRental_delete, true), |
| | | editBtn: this.vaildData(this.permission.houseRental_edit, true) |
| | | } |
| | | }, |
| | | showConfirmFlag() { |
| | | return (data) => { |
| | | let tags = {} |
| | | |
| | | if (data == 0) { |
| | | tags = { |
| | | type: 'warning', |
| | | text: '待处理' |
| | | } |
| | | } else if (data == 1) { |
| | | tags = { |
| | | type: 'success', |
| | | text: '已处理' |
| | | } |
| | | } |
| | | |
| | | return tags |
| | | } |
| | | } |
| | | }, |
| | | mounted() {}, |
| | | methods: { |
| | | |
| | | ManageTenants(item) { |
| | | this.roleBox = true |
| | | this.rowHouseHold = item |
| | | this.onLoadHouseHold() |
| | | }, |
| | | |
| | | onLoadHouseHold() { |
| | | let params = { |
| | | housingRentalId: this.rowHouseHold.id, |
| | | } |
| | | getHouseholdList(this.holdPage.currentPage, this.holdPage.pageSize, Object.assign(params)).then(res => { |
| | | const data = res.data.data |
| | | this.houseHold = data.records |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | |
| | | houseHoldRowSave(row, done, loading) { |
| | | row.aoiName = this.rowHouseHold.aoiName |
| | | row.address = this.rowHouseHold.address |
| | | row.housingRentalId = this.rowHouseHold.id |
| | | row.houseCode = this.rowHouseHold.houseCode |
| | | if (row.idCard) { |
| | | row.cardType = 111 |
| | | } |
| | | householdAdd(row).then(() => { |
| | | this.initFlag = false |
| | | this.onLoadHouseHold() |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowSave(row, done, loading) { |
| | | if (row.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.fileUrls.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.fileUrls = urls.join(",") |
| | | } |
| | | add(row).then(() => { |
| | | this.initFlag = false |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.fileUrls.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | row.fileUrls = urls.join(",") |
| | | } |
| | | update(row).then(() => { |
| | | this.initFlag = false |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | houseHoldRowUpdate(row, index, done, loading) { |
| | | if (row.idCard) { |
| | | row.cardType = 111 |
| | | } |
| | | householdUpdate(row).then(() => { |
| | | this.initFlag = false |
| | | this.onLoadHouseHold() |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | done() |
| | | }, error => { |
| | | window.console.log(error) |
| | | loading() |
| | | }) |
| | | }, |
| | | houseHoldRowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return householdDel(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoadHouseHold() |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | }) |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | }) |
| | | }, |
| | | searchReset() { |
| | | this.query = {} |
| | | this.treeDeptId = '' |
| | | this.onLoad(this.page) |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params |
| | | this.page.currentPage = 1 |
| | | this.onLoad(this.page, params) |
| | | done() |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = [] |
| | | // this.$refs.crud.toggleSelection(); |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据") |
| | | return |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids) |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!" |
| | | }) |
| | | this.$refs.crud.toggleSelection() |
| | | }) |
| | | }, |
| | | handleImport() { |
| | | this.excelBox = true |
| | | }, |
| | | uploadAfter(res, done, loading, column) { |
| | | window.console.log(column) |
| | | this.excelBox = false |
| | | this.refreshChange() |
| | | done() |
| | | }, |
| | | handleExport() { |
| | | const account = func.toStr(this.search.account) |
| | | const realName = func.toStr(this.search.realName) |
| | | this.$confirm("是否导出出租信息数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | NProgress.start() |
| | | var data = { |
| | | ...this.query |
| | | } |
| | | data = Qs.stringify(data) |
| | | exportBlob( |
| | | `/api/blade-houseRental/houseRental/export-houseRental?${this.website.tokenHeader}=${getToken()}&` + |
| | | data |
| | | ).then(res => { |
| | | downloadXls(res.data, `出租信息数据表${dateNow()}.xlsx`) |
| | | NProgress.done() |
| | | }) |
| | | }) |
| | | }, |
| | | handleTemplate() { |
| | | exportBlob(`/api/blade-system/user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => { |
| | | downloadXls(res.data, "出租信息数据模板.xlsx") |
| | | }) |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetatil(this.form.id).then(res => { |
| | | this.form = res.data.data |
| | | if (this.form.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.fileUrls.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.fileUrls = urls.join(",") |
| | | } |
| | | }) |
| | | } |
| | | this.initFlag = true |
| | | done() |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query) |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true |
| | | params.tenantInfoFlag = 0 |
| | | getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
| | | const data = res.data.data |
| | | this.page.total = data.total |
| | | this.data = data.records |
| | | this.data.forEach(item => { |
| | | if (item.fileUrls && item.fileUrls.length > 0) { |
| | | var urls = [] |
| | | var names = item.fileUrls.split(",") |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.fileUrls = urls.join(",") |
| | | } |
| | | }) |
| | | this.loading = false |
| | | this.selectionClear() |
| | | }) |
| | | }, |
| | | |
| | | showEditMoel(type, item) { |
| | | if (type == 1) { |
| | | this.$refs.RetalInfo.initOpen(type) |
| | | } else { |
| | | this.$refs.RetalInfo.initOpen(type, item.id) |
| | | } |
| | | |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .box { |
| | | height: 800px; |
| | | } |
| | | |
| | | .el-scrollbar { |
| | | height: 100%; |
| | | } |
| | | |
| | | .box .el-scrollbar__wrap { |
| | | overflow: scroll; |
| | | } |
| | | </style> |
| src/views/publicSecurity/keynotePersonnelManage.vue
src/views/publicSecurity/keynotePersonnelManageFour.vue
src/views/publicSecurity/keynotePersonnelManageTree.vue
src/views/publicSecurity/keynotePersonnelManageTwo.vue
src/views/publicSecurity/keynotePlaceManage.vue
src/views/publicSecurity/ninePlaceManage/archivesManage.vue
src/views/publicSecurity/ninePlaceManage/hiddenDangerStatistics.vue
src/views/publicSecurity/ninePlaceManage/patrolRecord.vue
src/views/publicSecurity/ninePlaceManage/situationRectification.vue
src/views/publicSecurity/noExplosionManage.vue
src/views/publicSecurity/nursingSchool.vue
src/views/publicSecurity/patrolRecord.vue
src/views/publicSecurity/place.vue
src/views/publicSecurity/placeIndex.vue
src/views/publicSecurity/policeAlarmRecords.vue
src/views/publicSecurity/positionManage/TransactRegist.vue
src/views/publicSecurity/positionManage/fileManage.vue
src/views/publicSecurity/tenanthold.vue
src/views/report/reportlist.vue
src/views/street/components/auditBase.vue
src/views/street/components/baseAllInfo.vue
src/views/street/components/boxTitle.vue
src/views/street/houseHoldList.vue
src/views/street/index.vue
src/views/system/menu.vue
src/views/task/reportForRepairs.vue
src/views/task/reportForRepairsTwo.vue
src/views/user/dept.vue
src/views/user/user.vue
src/views/userHouse/components/auditBase.vue
src/views/userHouse/components/baseAllInfo.vue
src/views/userHouse/hireInfoList.vue
src/views/userHouse/houseHoldList.vue
src/views/userHouse/houseListTwo.vue
src/views/userHouse/practitioner.vue
src/views/wel/index.vue
vue.config.js |