18个文件已修改
13个文件已添加
1 文件已重命名
6个文件已删除
| | |
| | | "@amap/amap-jsapi-loader": "^1.0.1", |
| | | "axios": "^0.27.2", |
| | | "core-js": "^3.8.3", |
| | | "element-ui": "^2.15.8", |
| | | "normalize.css": "^8.0.1", |
| | | "sass": "^1.54.8", |
| | | "sass-loader": "^13.0.2", |
| | | "vue": "^2.6.14", |
| | | "vue-gemini-scrollbar": "^2.0.1", |
| | | "vue-router": "^3.5.1", |
| | | "vuex": "^3.6.2" |
| | | "vuex": "^3.6.2", |
| | | "wangeditor": "^4.7.15" |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "~5.0.0", |
| | |
| | | "@vue/cli-service": "~5.0.0", |
| | | "chalk": "4.1.0", |
| | | "compression-webpack-plugin": "5.0.2", |
| | | "element-ui": "^2.15.8", |
| | | "svg-sprite-loader": "5.1.1", |
| | | "vue-template-compiler": "^2.6.14" |
| | | } |
| | |
| | | "version": "7.18.9", |
| | | "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", |
| | | "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "regenerator-runtime": "^0.13.4" |
| | | }, |
| | | "engines": { |
| | | "node": ">=6.9.0" |
| | | } |
| | | }, |
| | | "node_modules/@babel/runtime-corejs3": { |
| | | "version": "7.19.4", |
| | | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", |
| | | "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", |
| | | "dependencies": { |
| | | "core-js-pure": "^3.25.1", |
| | | "regenerator-runtime": "^0.13.4" |
| | | }, |
| | | "engines": { |
| | |
| | | "version": "1.8.5", |
| | | "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", |
| | | "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "babel-runtime": "6.x" |
| | | } |
| | |
| | | "node_modules/babel-helper-vue-jsx-merge-props": { |
| | | "version": "2.0.3", |
| | | "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", |
| | | "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" |
| | | "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/babel-loader": { |
| | | "version": "8.2.5", |
| | |
| | | "version": "6.26.0", |
| | | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", |
| | | "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "core-js": "^2.4.0", |
| | | "regenerator-runtime": "^0.11.0" |
| | |
| | | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", |
| | | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", |
| | | "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", |
| | | "dev": true, |
| | | "hasInstallScript": true |
| | | }, |
| | | "node_modules/babel-runtime/node_modules/regenerator-runtime": { |
| | | "version": "0.11.1", |
| | | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/balanced-match": { |
| | | "version": "1.0.2", |
| | |
| | | "semver": "bin/semver.js" |
| | | } |
| | | }, |
| | | "node_modules/core-js-pure": { |
| | | "version": "3.25.5", |
| | | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", |
| | | "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", |
| | | "hasInstallScript": true, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/core-js" |
| | | } |
| | | }, |
| | | "node_modules/core-util-is": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", |
| | |
| | | "version": "1.5.2", |
| | | "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", |
| | | "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | |
| | | "version": "2.15.8", |
| | | "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.8.tgz", |
| | | "integrity": "sha512-N54zxosRFqpYax3APY3GeRmtOZwIls6Z756WM0kdPZ5Q92PIeKHnZgF1StlamIg9bLxP1k+qdhTZvIeQlim09A==", |
| | | "dev": true, |
| | | "dependencies": { |
| | | "async-validator": "~1.8.1", |
| | | "babel-helper-vue-jsx-merge-props": "^2.0.0", |
| | |
| | | "node_modules/normalize-wheel": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", |
| | | "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" |
| | | "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/normalize.css": { |
| | | "version": "8.0.1", |
| | |
| | | "node_modules/regenerator-runtime": { |
| | | "version": "0.13.9", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", |
| | | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", |
| | | "dev": true |
| | | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" |
| | | }, |
| | | "node_modules/regenerator-transform": { |
| | | "version": "0.15.0", |
| | |
| | | "node_modules/resize-observer-polyfill": { |
| | | "version": "1.5.1", |
| | | "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", |
| | | "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" |
| | | "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/resolve": { |
| | | "version": "1.22.1", |
| | |
| | | "version": "1.1.0", |
| | | "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", |
| | | "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=4" |
| | | } |
| | |
| | | "node_modules/tslib": { |
| | | "version": "2.4.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", |
| | | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", |
| | | "dev": true |
| | | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" |
| | | }, |
| | | "node_modules/tty-browserify": { |
| | | "version": "0.0.0", |
| | |
| | | "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", |
| | | "peerDependencies": { |
| | | "vue": "^2.0.0" |
| | | } |
| | | }, |
| | | "node_modules/wangeditor": { |
| | | "version": "4.7.15", |
| | | "resolved": "https://registry.npmjs.org/wangeditor/-/wangeditor-4.7.15.tgz", |
| | | "integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==", |
| | | "dependencies": { |
| | | "@babel/runtime": "^7.11.2", |
| | | "@babel/runtime-corejs3": "^7.11.2", |
| | | "tslib": "^2.1.0" |
| | | } |
| | | }, |
| | | "node_modules/watchpack": { |
| | |
| | | "version": "7.18.9", |
| | | "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", |
| | | "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", |
| | | "dev": true, |
| | | "requires": { |
| | | "regenerator-runtime": "^0.13.4" |
| | | } |
| | | }, |
| | | "@babel/runtime-corejs3": { |
| | | "version": "7.19.4", |
| | | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", |
| | | "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", |
| | | "requires": { |
| | | "core-js-pure": "^3.25.1", |
| | | "regenerator-runtime": "^0.13.4" |
| | | } |
| | | }, |
| | |
| | | "version": "1.8.5", |
| | | "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", |
| | | "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", |
| | | "dev": true, |
| | | "requires": { |
| | | "babel-runtime": "6.x" |
| | | } |
| | |
| | | "babel-helper-vue-jsx-merge-props": { |
| | | "version": "2.0.3", |
| | | "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", |
| | | "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" |
| | | "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==", |
| | | "dev": true |
| | | }, |
| | | "babel-loader": { |
| | | "version": "8.2.5", |
| | |
| | | "version": "6.26.0", |
| | | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", |
| | | "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", |
| | | "dev": true, |
| | | "requires": { |
| | | "core-js": "^2.4.0", |
| | | "regenerator-runtime": "^0.11.0" |
| | |
| | | "core-js": { |
| | | "version": "2.6.12", |
| | | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", |
| | | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" |
| | | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", |
| | | "dev": true |
| | | }, |
| | | "regenerator-runtime": { |
| | | "version": "0.11.1", |
| | | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | |
| | | } |
| | | } |
| | | }, |
| | | "core-js-pure": { |
| | | "version": "3.25.5", |
| | | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", |
| | | "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==" |
| | | }, |
| | | "core-util-is": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", |
| | |
| | | "deepmerge": { |
| | | "version": "1.5.2", |
| | | "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", |
| | | "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" |
| | | "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", |
| | | "dev": true |
| | | }, |
| | | "default-gateway": { |
| | | "version": "6.0.3", |
| | |
| | | "version": "2.15.8", |
| | | "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.8.tgz", |
| | | "integrity": "sha512-N54zxosRFqpYax3APY3GeRmtOZwIls6Z756WM0kdPZ5Q92PIeKHnZgF1StlamIg9bLxP1k+qdhTZvIeQlim09A==", |
| | | "dev": true, |
| | | "requires": { |
| | | "async-validator": "~1.8.1", |
| | | "babel-helper-vue-jsx-merge-props": "^2.0.0", |
| | |
| | | "normalize-wheel": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", |
| | | "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" |
| | | "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==", |
| | | "dev": true |
| | | }, |
| | | "normalize.css": { |
| | | "version": "8.0.1", |
| | |
| | | "regenerator-runtime": { |
| | | "version": "0.13.9", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", |
| | | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", |
| | | "dev": true |
| | | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" |
| | | }, |
| | | "regenerator-transform": { |
| | | "version": "0.15.0", |
| | |
| | | "resize-observer-polyfill": { |
| | | "version": "1.5.1", |
| | | "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", |
| | | "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" |
| | | "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", |
| | | "dev": true |
| | | }, |
| | | "resolve": { |
| | | "version": "1.22.1", |
| | |
| | | "throttle-debounce": { |
| | | "version": "1.1.0", |
| | | "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", |
| | | "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" |
| | | "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==", |
| | | "dev": true |
| | | }, |
| | | "through2": { |
| | | "version": "2.0.5", |
| | |
| | | "tslib": { |
| | | "version": "2.4.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", |
| | | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", |
| | | "dev": true |
| | | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" |
| | | }, |
| | | "tty-browserify": { |
| | | "version": "0.0.0", |
| | |
| | | "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", |
| | | "requires": {} |
| | | }, |
| | | "wangeditor": { |
| | | "version": "4.7.15", |
| | | "resolved": "https://registry.npmjs.org/wangeditor/-/wangeditor-4.7.15.tgz", |
| | | "integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==", |
| | | "requires": { |
| | | "@babel/runtime": "^7.11.2", |
| | | "@babel/runtime-corejs3": "^7.11.2", |
| | | "tslib": "^2.1.0" |
| | | } |
| | | }, |
| | | "watchpack": { |
| | | "version": "2.4.0", |
| | | "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", |
| | |
| | | "@amap/amap-jsapi-loader": "^1.0.1", |
| | | "axios": "^0.27.2", |
| | | "core-js": "^3.8.3", |
| | | |
| | | "normalize.css": "^8.0.1", |
| | | "sass": "^1.54.8", |
| | | "sass-loader": "^13.0.2", |
| | | "vue": "^2.6.14", |
| | | "vue-gemini-scrollbar": "^2.0.1", |
| | | "vue-router": "^3.5.1", |
| | | "vuex": "^3.6.2" |
| | | "vuex": "^3.6.2", |
| | | "wangeditor": "^4.7.15" |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "~5.0.0", |
| | |
| | | <label class="data-title"> |
| | | 小类名称: |
| | | </label> |
| | | <span class="data-detail">xxx</span> |
| | | <!-- <span class="data-detail">{{baseCase.violations}}</span> --> |
| | | </div> |
| | | <div class="data-item__right"> |
| | | <label class="data-title"> |
| | |
| | | </div> |
| | | <div class="show-item"> |
| | | <div class="show-wrap"> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo"></MyProcess> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :problemProVo="problemProVo"></MySovleProblem> |
| | | <MyScene v-else :currentSitVo="currentSitVo"></MyScene> |
| | |
| | | }, |
| | | // 人员更改 |
| | | async handlePerChange(id){ |
| | | await this.getLawUser(id); |
| | | let obj = await this.getLawUser(id); |
| | | this.dispatch.lawEnforcerName = obj.nickName; |
| | | this.dispatch.contactWay = obj.mobile; |
| | | }, |
| | | // 获取执法人员信息 |
| | | async getLawUser(id){ |
| | | let obj = {} |
| | | await this.$axios({ |
| | | method:'get', |
| | | url:`sccg/admin/${id}` |
| | | }) |
| | | .then(res=>{ |
| | | console.log(res); |
| | | obj = res.data; |
| | | }) |
| | | return obj; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <template> |
| | | <div id="edit"> |
| | | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import E from 'wangeditor' |
| | | export default { |
| | | data() { |
| | | return { |
| | | editor: null |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.editor = new E('#edit'); |
| | | this.editor.config.height = 450; |
| | | this.editor.config.colors = [ |
| | | '#4b9bb7', |
| | | '#09152f' |
| | | ] |
| | | this.editor.create(); |
| | | }, |
| | | beforeDestroy() { |
| | | this.editor.destroy(); |
| | | this.editor = null; |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | #edit{ |
| | | :deep(.w-e-toolbar){ |
| | | background-color: #09152f !important; |
| | | color: #4b9bb7; |
| | | } |
| | | :deep(.w-e-text-container){ |
| | | background-color: #09152f !important; |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <div class="show-item"> |
| | | <div class="show-wrap"> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo"></MyProcess> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :problemProVo="problemProVo"></MySovleProblem> |
| | | <MyScene v-else :currentSitVo="currentSitVo"></MyScene> |
| | |
| | | return { |
| | | active: 0, |
| | | list: [ |
| | | { |
| | | title: '上报', |
| | | status: 'success', |
| | | }, |
| | | { |
| | | title: '立案', |
| | | status: 'process', |
| | | }, |
| | | { |
| | | title: '派遣', |
| | | status: 'process', |
| | | }, |
| | | { |
| | | title: '处置', |
| | | status: 'process', |
| | | }, |
| | | { |
| | | title: '核查', |
| | | status: 'process', |
| | | }, |
| | | { |
| | | title: '结案', |
| | | status: 'process', |
| | | } |
| | | ], |
| | | } |
| | | }, |
| | | props:['handlePassVo'], |
| | | props:['handlePassVo','baseCase'], |
| | | created(){ |
| | | console.log('process'); |
| | | const {handlePassVo:{workflowConfigSteps:mylist}} = this; |
| | | const {handlePassVo:{workflowConfigSteps:mylist},baseCase:{state:mystate}} = this; |
| | | // console.log(this.handlePassVo.workflowConfigSteps[0].name); |
| | | // console.log(mylist); |
| | | mylist.forEach(item=>{ |
| | | if(item.disposeRecords.length!==0){ |
| | | this.active ++; |
| | | } |
| | | }) |
| | | console.log(this.active); |
| | | console.log(mystate); |
| | | if(mystate===0){ |
| | | this.active = -1; |
| | | }else if(mystate ===6){ |
| | | this.active = 1; |
| | | }else if(mystate===7){ |
| | | this.active = 2; |
| | | }else if(mystate ===8){ |
| | | this.active = 3; |
| | | }else if(mystate ===9){ |
| | | this.active = 4; |
| | | } |
| | | this.list = mylist; |
| | | }, |
| | | } |
| | |
| | | component: () => import('@/views/operate/car/soilCar'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | path: 'message', |
| | | name: 'message', |
| | | component: () => import('@/views/operate/message'), |
| | | children: [ |
| | | { |
| | | path: 'messageIndex', |
| | | name: 'messageIndex', |
| | | component: () => import('@/views/operate/message/myIndex'), |
| | | }, |
| | | { |
| | | path:'mycontrol', |
| | | name:'mycontrol', |
| | | component: () => import('@/views/operate/message/mycontrol'), |
| | | }, |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | |
| | | let dd = Math.floor(time/24/60/60/1000), |
| | | hh = Math.floor(time/60/60/1000-dd*24), |
| | | mi = Math.floor(time/60/1000-dd*24*60-hh*60); |
| | | console.log(dd, hh, mi) |
| | | return addDay(fillTime(dd)) + addHour(fillTime(hh)) + addMin(fillTime(mi)); |
| | | } |
| | | function fillTime(num) { |
| | |
| | | } |
| | | function addDay(str) { |
| | | str = parseFloat(str); |
| | | if (str <= 0) { |
| | | if (str <0) { |
| | | return; |
| | | } |
| | | return str + '天' |
| | | } |
| | | function addHour(str) { |
| | | str = parseFloat(str); |
| | | if (str <= 0) { |
| | | if (str <0) { |
| | | return; |
| | | } |
| | | return str + '小时' |
| | | } |
| | | function addMin(str) { |
| | | str = parseFloat(str); |
| | | if (str <= 0) { |
| | | if (str < 0) { |
| | | return; |
| | | } |
| | | return str + '分钟' |
| | |
| | | function filterTime(time){ |
| | | const result = new Date(time); |
| | | let yy = result.getFullYear(), |
| | | mm = result.getMonth(), |
| | | mm = result.getMonth()+1, |
| | | dd = result.getDate(), |
| | | hh = result.getHours(), |
| | | mi = result.getMinutes(); |
| | |
| | | import axios from 'axios'; |
| | | import router from '@/router' |
| | | // 引入elementUI |
| | | import tip from 'element-ui'; |
| | | const api = axios.create({ |
| | | baseURL: 'http://42.193.1.25:8082/', // 请求的公共地址部分 |
| | | timeout: 15000 |
| | | }) |
| | | // 拦截器 |
| | | // 请求 |
| | |
| | | config.headers.Authorization = tokenHead + token; |
| | | } |
| | | return config; |
| | | },(err)=>{ |
| | | }, (err) => { |
| | | console.log(err); |
| | | } |
| | | ) |
| | | // 响应 |
| | | api.interceptors.response.use( |
| | | function (response) { |
| | | if (response.data.code === 401) { |
| | | tip.Message({ |
| | | type: 'warning', |
| | | message: '登录身份已过期', |
| | | }) |
| | | router.push('/login'); |
| | | } |
| | | return response.data; |
| | | }, |
| | | function (error) { |
| | | const {code} = error.response.data; |
| | | if(code === 401){ |
| | | console.log(error); |
| | | if(error.code === "ECONNABORTED"){ |
| | | tip.Message({ |
| | | type:'error', |
| | | message:'网络请求超市', |
| | | duration: 3 * 1000, |
| | | }) |
| | | return; |
| | | } |
| | | const {code,status} = error.response.data; |
| | | if (error.code === 'ERR_NETWORK') { |
| | | console.log(1); |
| | | tip.Message({ |
| | | type: 'error', |
| | | message: '服务器故障' |
| | | }) |
| | | return; |
| | | } |
| | | if (code === 401) { |
| | | console.log(2); |
| | | tip.Message({ |
| | | type: 'warning', |
| | | message: '登录身份已过期', |
| | | }) |
| | | router.push('/login'); |
| | | return; |
| | | } |
| | | if (status === 500) { |
| | | console.log(3); |
| | | tip.Message({ |
| | | type: 'error', |
| | | message: '网络请求出错' |
| | | }) |
| | | return; |
| | | } |
| | | } |
| | | ); |
| | |
| | | const rep = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; |
| | | return rep.test(str); |
| | | } |
| | | // |
| | | // 验证车牌号 |
| | | export function validateCarNum(str){ |
| | | const regExp = /(^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$)/; |
| | | return regExp.test(str); |
| | | } |
| | | |
| | |
| | | </el-submenu> |
| | | <el-menu-item index="/home/operate">图片管理</el-menu-item> |
| | | <el-menu-item index="/home/operate">视频管理</el-menu-item> |
| | | <el-menu-item index="/home/operate">消息管理</el-menu-item> |
| | | <el-submenu index="/home/operate/message" class="secondMenu"> |
| | | <template slot="title"> |
| | | <span class="secondSpan">消息管理</span> |
| | | </template> |
| | | <el-menu-item index="/home/operate/message/messageIndex">消息管理</el-menu-item> |
| | | <el-menu-item index="/home/operate/message/mycontrol">栏目管理</el-menu-item> |
| | | </el-submenu> |
| | | <el-menu-item index="/home/operate">短信管理</el-menu-item> |
| | | <el-menu-item index="/home/operate">日志管理</el-menu-item> |
| | | </el-submenu> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" :rules="createCarRules" autoComplete="on" :model="car" |
| | | label-position="right"> |
| | | <!-- 车牌号 --> |
| | | <el-form-item class="optionItem" label="车牌号:" prop="carNumber"> |
| | | <el-input v-model="car.carNumber" placeholder="请填写车牌号"></el-input> |
| | | </el-form-item> |
| | | <!-- 所属部门 --> |
| | | <el-form-item class="optionItems" label="所属部门:" prop="depart"> |
| | | <el-input v-model="car.depart" placeholder="请填写所属部门"></el-input> |
| | | <!-- <el-select v-model="car.group" placeholder="请选择所属类型"> |
| | | <el-option v-for="item in teamList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <!-- 所属大队 --> |
| | | <el-form-item class="optionItems" label="所属大队:" prop="belong"> |
| | | <el-input v-model="car.belong" placeholder="请填写所属大队"></el-input> |
| | | <!-- <el-select v-model="car.group" placeholder="请选择所属类型"> |
| | | <el-option v-for="item in teamList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <!-- 车主姓名 --> |
| | | <el-form-item class="optionItem" label="车主姓名:" prop="ownerName"> |
| | | <el-input v-model="car.ownerName" placeholder="请输入车主姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 车辆使用人员 --> |
| | | <el-form-item class="optionItem" label="车辆使用人员:" prop="vehicleUser"> |
| | | <el-input v-model="car.vehicleUser" placeholder="请输入车辆使用人员"></el-input> |
| | | </el-form-item> |
| | | <!-- 联系方式 --> |
| | | <el-form-item class="optionItem" label="联系方式:" prop="contact"> |
| | | <el-input v-model="car.contact" placeholder="请输入车主手机号码"></el-input> |
| | | </el-form-item> |
| | | <!-- 轨迹 --> |
| | | <el-form-item class="optionItem" label="轨迹:" prop="trajectory"> |
| | | <el-input type="textarea" :rows="2" v-model="car.trajectory" placeholder="请输入车辆轨迹"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleCar">确认 |
| | | </el-button> |
| | | <el-button class="btn cancel" @click.native.prevent="handleStop"> |
| | | 取消 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {validateCarNum,validatePhone,validateName} from '@/utils/validate' |
| | | export default { |
| | | data() { |
| | | const checkCarNum = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateCarNum(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请输入正确的车牌号')); |
| | | } |
| | | } else { |
| | | callback(new Error('车牌号不能为空')); |
| | | } |
| | | } |
| | | const checkName = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请正确输入车主姓名')); |
| | | } |
| | | } else { |
| | | callback(new Error('车主姓名不能为空')); |
| | | } |
| | | } |
| | | const checkUser = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请正确输入车辆使用人员')); |
| | | } |
| | | } else { |
| | | callback(new Error('车辆使用人员不能为空')); |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validatePhone(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请输入正确的手机号')); |
| | | } |
| | | } else { |
| | | callback(new Error('手机号码不能为空')); |
| | | } |
| | | } |
| | | return { |
| | | car: { |
| | | carNumber: "", |
| | | contact: "", |
| | | belong: "", |
| | | // id: 0, |
| | | ownerName: "", |
| | | trajectory: "", |
| | | vehicleUser: "", |
| | | depart:'', |
| | | }, |
| | | createCarRules: { |
| | | carNumber: [ |
| | | { |
| | | required: true, trigger:'blur', validator: checkCarNum |
| | | } |
| | | ], |
| | | contact: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | // id: 0, |
| | | ownerName: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkName |
| | | } |
| | | ], |
| | | vehicleUser: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkUser |
| | | } |
| | | ] |
| | | }, |
| | | teamList: [ |
| | | { |
| | | label: '大队一', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '大队二', |
| | | value: 2, |
| | | }, |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | // 添加车辆 |
| | | handleCar() { |
| | | console.log(this.car); |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const {car} = this; |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/car_Manage/addition_enforce', |
| | | data: { |
| | | carNumber: car.carNumber, |
| | | contact: car.contact, |
| | | belong: car.belong, |
| | | // id: 0, |
| | | ownerName: car.ownerName, |
| | | trajectory: car.trajectory, |
| | | vehicleUser: car.vehicleUser, |
| | | depart:car.depart, |
| | | } |
| | | }) |
| | | .then(res=>{ |
| | | console.log(res); |
| | | if(res.code === 200){ |
| | | this.$message({ |
| | | type:'success', |
| | | message:'新增车辆成功', |
| | | }) |
| | | this.$emit('closeDialog',{flag:false,index:1}); |
| | | }else{ |
| | | this.$message({ |
| | | type:'error', |
| | | message:res.message, |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | handleStop(){ |
| | | this.$emit('closeDialog',{flag:false,index:0}); |
| | | } |
| | | |
| | | }, |
| | | props: ['closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" :rules="createCarRules" autoComplete="on" :model="car" |
| | | label-position="right"> |
| | | <!-- 车牌号 --> |
| | | <el-form-item class="optionItem" label="车牌号:" prop="carNumber"> |
| | | <el-input v-model="car.carNumber" placeholder="请填写车牌号"></el-input> |
| | | </el-form-item> |
| | | <!-- 车型 --> |
| | | <el-form-item class="optionItems" label="车型:" prop="carModel"> |
| | | <el-select v-model="car.carModel" placeholder="请选择车型"> |
| | | <el-option v-for="item in carTypeList" :key="item.value" :label="item.label" |
| | | :value="item.label"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 车主姓名 --> |
| | | <el-form-item class="optionItem" label="车主姓名:" prop="ownerName"> |
| | | <el-input v-model="car.ownerName" placeholder="请输入车主姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 车辆使用人员 --> |
| | | <el-form-item class="optionItem" label="车辆使用人员:" prop="vehicleUser"> |
| | | <el-input v-model="car.vehicleUser" placeholder="请输入车辆使用人员"></el-input> |
| | | </el-form-item> |
| | | <!-- 联系方式 --> |
| | | <el-form-item class="optionItem" label="联系方式:" prop="contact"> |
| | | <el-input v-model="car.contact" placeholder="请输入车主手机号码"></el-input> |
| | | </el-form-item> |
| | | <!-- 施工单位 --> |
| | | <el-form-item class="optionItems" label="施工单位:" prop="constructionOrg"> |
| | | <el-input v-model="car.constructionOrg" placeholder="请填写施工单位"></el-input> |
| | | </el-form-item> |
| | | <!-- 施工地址 --> |
| | | <el-form-item class="optionItems" label="施工地址:" prop="geographicPosition"> |
| | | <el-input v-model="car.geographicPosition" placeholder="请填写施工地址"></el-input> |
| | | </el-form-item> |
| | | <!-- 轨迹 --> |
| | | <el-form-item class="optionItem" label="轨迹:" prop="trajectory"> |
| | | <el-input type="textarea" :rows="2" v-model="car.trajectory" placeholder="请输入车辆轨迹"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleCar">确认 |
| | | </el-button> |
| | | <el-button class="btn cancel" @click.native.prevent="handleStop"> |
| | | 取消 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {validateName,validatePhone,validateCarNum} from '@/utils/validate' |
| | | export default { |
| | | data() { |
| | | const checkCarNum = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateCarNum(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的车牌号')); |
| | | } |
| | | } else { |
| | | callback(new Error('车牌号不能为空')); |
| | | } |
| | | } |
| | | const checkName = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的车主姓名')) |
| | | } |
| | | } else { |
| | | callback(new Error('车主姓名不能为空')); |
| | | } |
| | | } |
| | | const checkUser = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请正确输入车辆使用人员')) |
| | | } |
| | | } else { |
| | | callback(new Error('车辆使用人员不能为空')); |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validatePhone(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的手机号')) |
| | | } |
| | | } else { |
| | | callback(new Error('手机号码不能为空')); |
| | | } |
| | | } |
| | | const checkCarModel = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('车辆型号不能为空')); |
| | | } |
| | | } |
| | | const checkOrg = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('施工单位不能为空')); |
| | | } |
| | | } |
| | | const checkPosition = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('施工地址不能为空')); |
| | | } |
| | | } |
| | | return { |
| | | car: { |
| | | carNumber: "", |
| | | contact: "", |
| | | belong: "", |
| | | // id: 0, |
| | | ownerName: "", |
| | | trajectory: "", |
| | | vehicleUser: "", |
| | | constructionOrg: '', |
| | | }, |
| | | createCarRules: { |
| | | carNumber: [ |
| | | { |
| | | required: true, trigger:'blur', validator: checkCarNum |
| | | } |
| | | ], |
| | | carModel: [ |
| | | { |
| | | required: true, trigger:'change',validator: checkCarModel |
| | | } |
| | | ], |
| | | contact: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | // id: 0, |
| | | ownerName: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkName |
| | | } |
| | | ], |
| | | vehicleUser: [ |
| | | { |
| | | required: true, trigger:'blur',validator: checkUser |
| | | } |
| | | ], |
| | | constructionOrg: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkOrg |
| | | } |
| | | ], |
| | | geographicPosition: [ |
| | | { |
| | | required: true, trigger:'blur',validator: checkPosition |
| | | } |
| | | ] |
| | | }, |
| | | carTypeList: [ |
| | | { |
| | | label: '大型', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '中型', |
| | | value: 2, |
| | | }, |
| | | { |
| | | label: '小型', |
| | | value: 3, |
| | | }, |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | // 添加车辆 |
| | | handleCar() { |
| | | console.log(this.car); |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { car } = this; |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/car_Manage/addition_slag', |
| | | data: { |
| | | carNumber: car.carNumber, |
| | | carModel:car.carModel, |
| | | carPhoto:'', |
| | | constructionOrg:car.constructionOrg, |
| | | geographicPosition:car.geographicPosition, |
| | | // contact: car.contact, |
| | | // belong: car.belong, |
| | | // id: 0, |
| | | // ownerName: car.ownerName, |
| | | trajectory: car.trajectory, |
| | | // vehicleUser: car.vehicleUser, |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '新增车辆成功', |
| | | }) |
| | | this.$emit('closeDialog', { flag: false,index:1 }); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message, |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | handleStop(){ |
| | | this.$emit('closeDialog', { flag: false,index:0 }); |
| | | } |
| | | |
| | | }, |
| | | props: ['closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="search"> |
| | | <span>车辆搜索:</span> |
| | | <div class="option"> |
| | | <el-input placeholder="请输入车牌号"></el-input> |
| | | <el-input @input="handleSearch" v-model="context" placeholder="请输入车牌号"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="addCar"> |
| | |
| | | @selection-change="tableChange"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column prop="code" label="车牌号" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <el-link @click="JumpView(scope.row)">{{scope.row.code}}</el-link> |
| | | </template> |
| | | <el-table-column prop="carNumber" label="车牌号" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="code" label="车型" min-width="10" v-if="mystatus===2"> |
| | | <el-table-column prop="carModel" label="车型" min-width="10" v-if="mystatus===2"> |
| | | </el-table-column> |
| | | <el-table-column prop="eventSource" label="车主姓名" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.row.eventSource === 2 ? '人工上报' : '视频上传'}}</span> |
| | | </template> |
| | | <el-table-column prop="ownerName" label="车主姓名" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="category" label="车辆使用人员" min-width="10"> |
| | | <el-table-column prop="vehicleUser" label="车辆使用人员" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="type" label="联系方式" min-width="10"> |
| | | <el-table-column prop="contact" label="联系方式" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="actionCause" :label="mystatus === 1 ? '所属部门':'施工地址'" min-width="10"> |
| | | <el-table-column :prop="mystatus===1 ? 'belong' : 'geographicPosition'" :label="mystatus === 1 ? '所属部门':'施工地址'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="site" :label="mystatus === 1 ? '所属大队' : '施工单位'" min-width="10"> |
| | | <el-table-column :prop="mystatus===1 ? 'depart' : 'constructionOrg'" :label="mystatus === 1 ? '所属大队' : '施工单位'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="20"> |
| | | <template slot-scope="scope"> |
| | | <div class="btn"> |
| | | <span @click="handleReset(scope.row)">查看</span> |
| | | <span @click="handleView(scope.row)">查看</span> |
| | | <span class="line">|</span> |
| | | <span>删除</span> |
| | | </div> |
| | |
| | | <el-dialog :visible.sync="dialogAdd" width="60%" title="新增车辆" |
| | | v-if="dialogAdd" :before-close="handleClose"> |
| | | <Mycreate v-if="mystatus === 1" @closeDialog="closeDialog"></Mycreate> |
| | | <MySoil v-else @closeDialog="closeDialog"></MySoil> |
| | | </el-dialog> |
| | | <!-- 查看 --> |
| | | <el-dialog :visible.sync="dialogView" width="60%" title="查看车辆信息" |
| | | v-if="dialogView" :before-close="handleNoClose"> |
| | | <MyViewLaw v-if="mystatus === 1" :info="info"></MyViewLaw> |
| | | <MyViewSoil v-else :info="info"></MyViewSoil> |
| | | </el-dialog> |
| | | <!-- tools --> |
| | | <div class="tools"> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import Mycreate from './createUser' |
| | | import Mycreate from './create/law' |
| | | import MySoil from './create/soil' |
| | | import MyViewLaw from './update/law' |
| | | import MyViewSoil from './update/soil' |
| | | export default { |
| | | components: { |
| | | Mycreate |
| | | Mycreate,MySoil,MyViewLaw, |
| | | MyViewSoil |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | context: "", |
| | | dialogAdd:false, |
| | | info: {}, |
| | | dialogView:false, |
| | | info: '', |
| | | totalNum: null, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | |
| | | ], |
| | | mystatus:1, |
| | | caseId:'', |
| | | timer:null, |
| | | } |
| | | }, |
| | | created() { |
| | | this.getUserList(); |
| | | }, |
| | | methods: { |
| | | // 搜索车辆 |
| | | handleSearch(val){ |
| | | if(this.timer){ |
| | | clearTimeout(this.timer); |
| | | } |
| | | this.timer = setTimeout(()=>{ |
| | | this.getUserList(); |
| | | },1000); |
| | | }, |
| | | // 添加车辆 |
| | | handleAddCar(){ |
| | | this.dialogAdd = true; |
| | |
| | | url:`sccg/car_Manage/query_enforce?current=${currentPage}&size=${pageSize}&carNum=${carNum}`, |
| | | }) |
| | | .then(res=>{ |
| | | console.log(res); |
| | | arr = res.data; |
| | | }) |
| | | return arr; |
| | |
| | | async JumpView(data){ |
| | | await this.getEventInfo(data.code); |
| | | }, |
| | | handleNoClose(done){ |
| | | done(); |
| | | }, |
| | | opernDialog(data){ |
| | | this.dialogAdd = true; |
| | | this.caseId = data.id; |
| | | // console.log(data); |
| | | }, |
| | | // 关闭上传界面 |
| | | closeDialog({flag}){ |
| | | // 关闭界面 |
| | | closeDialog({flag,index}){ |
| | | this.dialogAdd = flag; |
| | | if(index===1){ |
| | | this.getUserList(); |
| | | } |
| | | }, |
| | | handleView(data){ |
| | | this.info = data; |
| | | this.dialogView = true; |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" :rules="createCarRules" autoComplete="on" :model="car" |
| | | label-position="right"> |
| | | <!-- 车牌号 --> |
| | | <el-form-item class="optionItem" label="车牌号:" prop="carNumber"> |
| | | <el-input v-model="car.carNumber" placeholder="请填写车牌号"></el-input> |
| | | </el-form-item> |
| | | <!-- 所属部门 --> |
| | | <el-form-item class="optionItems" label="所属部门:" prop="depart"> |
| | | <el-input v-model="car.depart" placeholder="请填写所属部门"></el-input> |
| | | <!-- <el-select v-model="car.group" placeholder="请选择所属类型"> |
| | | <el-option v-for="item in teamList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <!-- 所属大队 --> |
| | | <el-form-item class="optionItems" label="所属大队:" prop="belong"> |
| | | <el-input v-model="car.belong" placeholder="请填写所属大队"></el-input> |
| | | <!-- <el-select v-model="car.group" placeholder="请选择所属类型"> |
| | | <el-option v-for="item in teamList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <!-- 车主姓名 --> |
| | | <el-form-item class="optionItem" label="车主姓名:" prop="ownerName"> |
| | | <el-input v-model="car.ownerName" placeholder="请输入车主姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 车辆使用人员 --> |
| | | <el-form-item class="optionItem" label="车辆使用人员:" prop="vehicleUser"> |
| | | <el-input v-model="car.vehicleUser" placeholder="请输入车辆使用人员"></el-input> |
| | | </el-form-item> |
| | | <!-- 联系方式 --> |
| | | <el-form-item class="optionItem" label="联系方式:" prop="contact"> |
| | | <el-input v-model="car.contact" placeholder="请输入车主手机号码"></el-input> |
| | | </el-form-item> |
| | | <!-- 轨迹 --> |
| | | <el-form-item class="optionItem" label="轨迹:" prop="trajectory"> |
| | | <el-input type="textarea" :rows="2" v-model="car.trajectory" placeholder="请输入车辆轨迹"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleCar">确认 |
| | | </el-button> |
| | | <el-button class="btn cancel" @click.native.prevent="handleStop"> |
| | | 取消 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {validateCarNum,validatePhone,validateName} from '@/utils/validate' |
| | | export default { |
| | | data() { |
| | | const checkCarNum = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateCarNum(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请输入正确的车牌号')); |
| | | } |
| | | } else { |
| | | callback(new Error('车牌号不能为空')); |
| | | } |
| | | } |
| | | const checkName = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请正确输入车主姓名')); |
| | | } |
| | | } else { |
| | | callback(new Error('车主姓名不能为空')); |
| | | } |
| | | } |
| | | const checkUser = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请正确输入车辆使用人员')); |
| | | } |
| | | } else { |
| | | callback(new Error('车辆使用人员不能为空')); |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validatePhone(value)){ |
| | | callback() |
| | | }else{ |
| | | callback(new Error('请输入正确的手机号')); |
| | | } |
| | | } else { |
| | | callback(new Error('手机号码不能为空')); |
| | | } |
| | | } |
| | | return { |
| | | car: { |
| | | carNumber: "", |
| | | contact: "", |
| | | belong: "", |
| | | // id: 0, |
| | | ownerName: "", |
| | | trajectory: "", |
| | | vehicleUser: "", |
| | | depart:'', |
| | | }, |
| | | createCarRules: { |
| | | carNumber: [ |
| | | { |
| | | required: true, trigger:'blur', validator: checkCarNum |
| | | } |
| | | ], |
| | | contact: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | // id: 0, |
| | | ownerName: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkName |
| | | } |
| | | ], |
| | | vehicleUser: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkUser |
| | | } |
| | | ] |
| | | }, |
| | | teamList: [ |
| | | { |
| | | label: '大队一', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '大队二', |
| | | value: 2, |
| | | }, |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.info); |
| | | this.car = JSON.parse(JSON.stringify(this.info)); |
| | | }, |
| | | methods: { |
| | | }, |
| | | props: ['info'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" :rules="createCarRules" autoComplete="on" :model="car" |
| | | label-position="right"> |
| | | <!-- 车牌号 --> |
| | | <el-form-item class="optionItem" label="车牌号:" prop="carNumber"> |
| | | <el-input v-model="car.carNumber" placeholder="请填写车牌号"></el-input> |
| | | </el-form-item> |
| | | <!-- 车型 --> |
| | | <el-form-item class="optionItems" label="车型:" prop="carModel"> |
| | | <el-select v-model="car.carModel" placeholder="请选择车型"> |
| | | <el-option v-for="item in carTypeList" :key="item.value" :label="item.label" |
| | | :value="item.label"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 车主姓名 --> |
| | | <el-form-item class="optionItem" label="车主姓名:" prop="ownerName"> |
| | | <el-input v-model="car.ownerName" placeholder="请输入车主姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 车辆使用人员 --> |
| | | <el-form-item class="optionItem" label="车辆使用人员:" prop="vehicleUser"> |
| | | <el-input v-model="car.vehicleUser" placeholder="请输入车辆使用人员"></el-input> |
| | | </el-form-item> |
| | | <!-- 联系方式 --> |
| | | <el-form-item class="optionItem" label="联系方式:" prop="contact"> |
| | | <el-input v-model="car.contact" placeholder="请输入车主手机号码"></el-input> |
| | | </el-form-item> |
| | | <!-- 施工单位 --> |
| | | <el-form-item class="optionItems" label="施工单位:" prop="constructionOrg"> |
| | | <el-input v-model="car.constructionOrg" placeholder="请填写施工单位"></el-input> |
| | | </el-form-item> |
| | | <!-- 施工地址 --> |
| | | <el-form-item class="optionItems" label="施工地址:" prop="geographicPosition"> |
| | | <el-input v-model="car.geographicPosition" placeholder="请填写施工地址"></el-input> |
| | | </el-form-item> |
| | | <!-- 轨迹 --> |
| | | <el-form-item class="optionItem" label="轨迹:" prop="trajectory"> |
| | | <el-input type="textarea" :rows="2" v-model="car.trajectory" placeholder="请输入车辆轨迹"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleCar">确认 |
| | | </el-button> |
| | | <el-button class="btn cancel" @click.native.prevent="handleStop"> |
| | | 取消 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {validateName,validatePhone,validateCarNum} from '@/utils/validate' |
| | | export default { |
| | | data() { |
| | | const checkCarNum = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateCarNum(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的车牌号')); |
| | | } |
| | | } else { |
| | | callback(new Error('车牌号不能为空')); |
| | | } |
| | | } |
| | | const checkName = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的车主姓名')) |
| | | } |
| | | } else { |
| | | callback(new Error('车主姓名不能为空')); |
| | | } |
| | | } |
| | | const checkUser = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validateName(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请正确输入车辆使用人员')) |
| | | } |
| | | } else { |
| | | callback(new Error('车辆使用人员不能为空')); |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | if(validatePhone(value)){ |
| | | callback(); |
| | | }else{ |
| | | callback(new Error('请输入正确的手机号')) |
| | | } |
| | | } else { |
| | | callback(new Error('手机号码不能为空')); |
| | | } |
| | | } |
| | | const checkCarModel = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('车辆型号不能为空')); |
| | | } |
| | | } |
| | | const checkOrg = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('施工单位不能为空')); |
| | | } |
| | | } |
| | | const checkPosition = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('施工地址不能为空')); |
| | | } |
| | | } |
| | | return { |
| | | car: { |
| | | carNumber: "", |
| | | contact: "", |
| | | belong: "", |
| | | // id: 0, |
| | | ownerName: "", |
| | | trajectory: "", |
| | | vehicleUser: "", |
| | | constructionOrg: '', |
| | | }, |
| | | createCarRules: { |
| | | carNumber: [ |
| | | { |
| | | required: true, trigger:'blur', validator: checkCarNum |
| | | } |
| | | ], |
| | | carModel: [ |
| | | { |
| | | required: true, trigger:'change',validator: checkCarModel |
| | | } |
| | | ], |
| | | contact: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | // id: 0, |
| | | ownerName: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkName |
| | | } |
| | | ], |
| | | vehicleUser: [ |
| | | { |
| | | required: true, trigger:'blur',validator: checkUser |
| | | } |
| | | ], |
| | | constructionOrg: [ |
| | | { |
| | | required: true,trigger:'blur', validator: checkOrg |
| | | } |
| | | ], |
| | | geographicPosition: [ |
| | | { |
| | | required: true, trigger:'blur',validator: checkPosition |
| | | } |
| | | ] |
| | | }, |
| | | carTypeList: [ |
| | | { |
| | | label: '大型', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '中型', |
| | | value: 2, |
| | | }, |
| | | { |
| | | label: '小型', |
| | | value: 3, |
| | | }, |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.info); |
| | | this.car = JSON.parse(JSON.stringify(this.info)); |
| | | }, |
| | | methods: { |
| | | }, |
| | | props: ['info'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | // border: 1px solid #fff; |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="streetId" label="所属区域" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="10"> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="15"> |
| | | <template slot-scope="scope"> |
| | | <span>{{filterTime(scope.row.alarmTime)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="continueTime" label="持续时间" min-width="10"> |
| | | </el-table-column> |
| | |
| | | import uploadVio from './updateUser/uploadResult/vio' |
| | | import uploadIll from "./updateUser/uploadResult/ill" |
| | | import MyDetail from '@/components/detail' |
| | | import helper from '@/utils/mydate' |
| | | import filterTime from '@/utils/mydate' |
| | | export default { |
| | | components: { |
| | | // updateUser, |
| | |
| | | // 关闭上传界面 |
| | | closeDialog({flag}){ |
| | | this.dialogUpload = flag; |
| | | }, |
| | | filterTime(time){ |
| | | return helper(time); |
| | | } |
| | | } |
| | | } |
| | |
| | | <span>{{scope.row.eventSource === 2 ? '人工上报' : '视频上传'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="category" label="大类名称" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'category' :'category'" :label="mystatus===1 ? '大类名称' : '违建类别'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="type" label="小类名称" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'type' :'site'" :label="mystatus===1 ? '小类名称' : '违建地点'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="actionCause" label="案由" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'actionCause' :'communityId'" :label="mystatus===1 ? '案由' : '所属社区'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="site" label="报警点位" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'site' :''" :label="mystatus===1 ? '报警点位' : '违法建筑长、宽、高'" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="mystatus ===2"><span>{{scope.row.buildingLength+'米'+'、'+ scope.row.buildingWidth+'米'+'、'+scope.row.buildingHigh+'米'}}</span></div> |
| | | <div v-else>{{scope.row.site}}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="streetId" label="所属区域" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'streetId' :'buildingArea'" :label="mystatus===1 ? '所属区域' : '违法建筑面积'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="10"> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="15" v-if="mystatus===1"> |
| | | <template slot-scope="scope"> |
| | | <span>{{filterTime(scope.row.alarmTime)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="continueTime" label="持续时间" min-width="10"> |
| | | <el-table-column :prop="mystatus === 1 ? 'continueTime' :'materials'" :label="mystatus===1 ? '持续时间' : '违法建筑材料'" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="20"> |
| | | <template slot-scope="scope"> |
| | |
| | | import MyIll from './createUser/ill' |
| | | import MyVio from './createUser/vio' |
| | | import MyDispatch from '@/components/dispatch' |
| | | import helper from '@/utils/mydate' |
| | | export default { |
| | | components: { |
| | | createUser, MyIll, MyVio, MyDetail, MyDispatch, MyIllDetail |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 处理时间 |
| | | filterTime(time){ |
| | | return helper(time); |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-button>返回</el-button> |
| | | </div> |
| | | </div> |
| | | <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo"></MyProcess> |
| | | <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo"></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :problemProVo="problemProVo"></MySovleProblem> |
| | | <MyScene v-else :currentSitVo="currentSitVo"></MyScene> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="streetId" label="所属区域" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="10"> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="15"> |
| | | <template slot-scope="scope"> |
| | | <span>{{filterTime(scope.row.alarmTime)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="continueTime" label="持续时间" min-width="10"> |
| | | </el-table-column> |
| | |
| | | import MyClosure from './components/closure' |
| | | import MyDetail from '@/components/detail' |
| | | import MyIllDetail from '@/components/illdetail' |
| | | import helper from '@/utils/mydate' |
| | | export default { |
| | | components: { |
| | | MyExamine,MyClosure,MyDetail,MyIllDetail |
| | |
| | | // 审核状态 |
| | | changeInStatus(val){ |
| | | this.getUserList(); |
| | | }, |
| | | filterTime(time){ |
| | | return helper(time); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | <template> |
| | | <router-view></router-view> |
| | | </template> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 消息栏目 --> |
| | | <el-form-item class="optionItem" label="消息栏目:" prop="messageType"> |
| | | <div class="message-item"> |
| | | <el-input v-model="role.messageType" placeholder="请填写消息栏目"></el-input> |
| | | <span>添加栏目</span> |
| | | </div> |
| | | </el-form-item> |
| | | <!-- 消息标题 --> |
| | | <el-form-item class="optionItems" label="消息标题:" prop="head"> |
| | | <el-select v-model="role.head" placeholder="请选择消息标题"> |
| | | <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 接收对象 --> |
| | | <el-form-item class="optionItem" label="接收对象:" prop="targetTo"> |
| | | <el-select v-model="role.targetTo" placeholder="请选择接收对象"> |
| | | <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <!-- <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内"></el-input> --> |
| | | </el-form-item> |
| | | <!-- 消息内容 --> |
| | | <el-form-item class="optionItem" label="消息内容:" prop="body"> |
| | | <MyEditor :content="role.body"></MyEditor> |
| | | <!-- <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内"></el-input> --> |
| | | </el-form-item> |
| | | <!-- 提醒方式 --> |
| | | <el-form-item class="optionItem" label="提醒方式:" prop="channelCode"> |
| | | <div class="message-item"> |
| | | <el-radio-group v-model="role.channelCode"> |
| | | <el-radio :label="1">站内信</el-radio> |
| | | <el-radio :label="2">邮件</el-radio> |
| | | <el-radio :label="3">短信</el-radio> |
| | | </el-radio-group> |
| | | <span class="message-tip">(短信可用数: 1000条)</span> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button type="primary" class="btn save">保存 |
| | | </el-button> |
| | | <el-button type="primary" class="btn submit">发布 |
| | | </el-button> |
| | | <el-button type="primary" class="btn submit">预览 |
| | | </el-button> |
| | | <el-button class="btn cancel">重置</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyEditor from '@/components/edit' |
| | | export default { |
| | | components: { MyEditor }, |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写消息栏目")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validatePass = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | messageType:'', |
| | | head:'', |
| | | targetTo:'', |
| | | body:'', |
| | | channelCode:1 |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | type: [ |
| | | { required: false, trigger: "blur", validator: validatePass }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | typeList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | }, |
| | | props: [''] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | width: 400px; |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .el-form-item__content :deep(.el-select) { |
| | | width: 400px; |
| | | } |
| | | :deep(.el-input){ |
| | | width: 400px; |
| | | } |
| | | .message-item{ |
| | | display: flex; |
| | | span{ |
| | | margin-left: 20px; |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | .message-tip { |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | :deep(.el-input--suffix) { |
| | | width: 400px; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | :deep(.el-select-dropdown){ |
| | | width: 400px; |
| | | min-width: 400px !important; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <header> |
| | | <div class="header-nav"> |
| | | <span class="nav-left">数据筛选</span> |
| | | <span class="nav-right">高级搜索</span> |
| | | </div> |
| | | <div class="header-content"> |
| | | <div class="search"> |
| | | <span>输入查询:</span> |
| | | <el-input placeholder="请输入内容" v-model="context"></el-input> |
| | | </div> |
| | | <div class="message-status"> |
| | | <span>消息状态:</span> |
| | | <el-input placeholder="请输入内容" v-model="context"></el-input> |
| | | </div> |
| | | <div class="message-kind"> |
| | | <span>消息分类:</span> |
| | | <el-input placeholder="请输入内容" v-model="context"></el-input> |
| | | </div> |
| | | <div class="find"> |
| | | <el-button type="primary" icon="el-icon-search">查询</el-button> |
| | | <el-button icon="el-icon-delete-solid">重置</el-button> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <div class="main-nav"> |
| | | <span>数据列表</span> |
| | | <el-button type="primary" icon="el-icon-plus" @click="dialogCreate = true">添加</el-button> |
| | | </div> |
| | | <!-- 数据展示 --> |
| | | <el-table ref="multipleTable" |
| | | :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" |
| | | :data="tableData" style="width: 100%" :row-class-name="tableRowClassName" |
| | | @selection-change="tableChange"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column label="ID" min-width="5"> |
| | | <template slot-scope="scope">{{ scope.row.id }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="head" label="标题" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="updateTime" label="修改时间" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <span>{{changeTime(scope.row)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="targetFrom" label="发布人员" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="channelCode" label="消息分类" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.row.channelCode === '01' ? '站内信':scope.row.channelCode ==='02'?"邮件":'短信'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" label="发布状态" min-width="5"> |
| | | <template slot-scope="scope"> |
| | | {{scope.row.status === 0 ? '未发布' :'已发布'}} |
| | | <!-- <el-switch class="switchStyle" v-model="scope.row.status" active-text="开" inactive-text="关" |
| | | active-color="#3fef9a" inactive-color="#000212" @change="handleChangeStatus(scope.row)"> |
| | | </el-switch> --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="15"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <el-link icon="el-icon-view" :underline="false" @click="dialogView = true">查看</el-link> |
| | | <el-link icon="el-icon-edit" class="leftPx" :underline="false">编辑</el-link> |
| | | <el-link class="leftPx" icon="el-icon-delete-solid" :underline="false">删除</el-link> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 新建消息 --> |
| | | <el-dialog title="新建消息" :visible.sync="dialogCreate" v-if="dialogCreate" width="80%" |
| | | :before-close="handleConfirmClose"> |
| | | <MyCreate></MyCreate> |
| | | </el-dialog> |
| | | <!-- 消息详情 --> |
| | | <el-dialog title="消息详情" :visible.sync="dialogView" v-if="dialogView" width="45%" |
| | | :before-close="handleClose"> |
| | | <MyView></MyView> |
| | | </el-dialog> |
| | | <!-- tools --> |
| | | <div class="tools"> |
| | | <div class="funs"> |
| | | <div class="funsItem"> |
| | | <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem"> |
| | | <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem"> |
| | | <el-select v-model="myIdx" placeholder="批量操作" @change="selectChange"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="pagination"> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" |
| | | :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" |
| | | @prev-click="handlePrev" @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import helper from '@/utils/mydate' |
| | | import MyView from './myview' |
| | | import MyCreate from './createUser' |
| | | export default { |
| | | components: { |
| | | MyView,MyCreate |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | context: "", |
| | | dialogCreate:false, |
| | | dialogView:false, |
| | | totalNum: null, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | all: false, |
| | | unsame: false, |
| | | myIdx: 0, |
| | | preMyIdx: 0, |
| | | options: [ |
| | | { |
| | | value: 0, |
| | | label: '批量操作', |
| | | disabled: true, |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: '批量启用', |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '批量禁用', |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: '批量删除', |
| | | } |
| | | ], |
| | | tempList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTableData(); |
| | | }, |
| | | methods: { |
| | | // 设置表格数据 |
| | | async setTableData() { |
| | | const arr = await this.getMessageList(); |
| | | this.tableData = arr.records; |
| | | this.totalNum = arr.total |
| | | }, |
| | | // 获取消息数据 |
| | | async getMessageList() { |
| | | let arr = []; |
| | | const {currentPage,pageSize} = this; |
| | | await this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message/list', |
| | | data: { |
| | | body: "", |
| | | channelCode: "", |
| | | createUser: 0, |
| | | current: currentPage, |
| | | head: "", |
| | | messageType: 0, |
| | | pageSize: pageSize, |
| | | randomCode: "", |
| | | remark: "", |
| | | sendTime: "", |
| | | status: 0, |
| | | targetFrom: "", |
| | | targetTo: "" |
| | | } |
| | | }) |
| | | .then(res => { |
| | | arr = res.data; |
| | | }) |
| | | return arr; |
| | | }, |
| | | // 批量下拉框操作 |
| | | async selectChange(list) { |
| | | console.log(this.tempList); |
| | | if (this.tempList.length !== 0) { |
| | | this.preMyIdx = list; |
| | | if (list === 3) { |
| | | await this.handleDelete(this.tempList); |
| | | } else if (list === 2) { |
| | | await this.mulUpdateStatus(this.tempList, 0); |
| | | } else { |
| | | await this.mulUpdateStatus(this.tempList, 1); |
| | | } |
| | | this.myIdx = 0; |
| | | } else { |
| | | this.myIdx = this.preMyIdx; |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: '您还没选中任何数据', |
| | | }) |
| | | } |
| | | }, |
| | | // 批量操作 |
| | | mulUpdateStatus(idArr, flag) { |
| | | this.$confirm(flag === 1 ? "您确定要进行批量启用角色吗?" : '您确定要进行批量禁用角色吗?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/role/updateStatusBatch?ids=' + idArr + '&status=' + flag, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '更改用户状态成功', |
| | | }) |
| | | this.getUserList(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | console.log(res); |
| | | }) |
| | | }) |
| | | .catch(err => { console.log(err) }) |
| | | }, |
| | | // 表格监听 |
| | | tableChange(list) { |
| | | this.tempList = []; |
| | | list.forEach(item => { |
| | | this.tempList.push(item.id); |
| | | }) |
| | | if (list.length === this.tableData.length) { |
| | | this.all = true; |
| | | } else { |
| | | this.all = false |
| | | } |
| | | }, |
| | | // 修改时间格式 |
| | | changeTime({ updateTime }) { |
| | | return helper(updateTime); |
| | | }, |
| | | // 全选 |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | // 反选 |
| | | disSame(list) { |
| | | list.forEach(row => { |
| | | this.$refs.multipleTable.toggleRowSelection(row) |
| | | }) |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 上一页点击事件 |
| | | handlePrev(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 下一页点击事件 |
| | | handleNext(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 关闭弹窗 |
| | | handleClose(done){ |
| | | done(); |
| | | }, |
| | | // 确认关闭弹窗 |
| | | handleConfirmClose(done){ |
| | | this.$confirm('确认关闭?') |
| | | .then(_=>{ |
| | | done(); |
| | | }) |
| | | .catch(err=>{ |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | // 自定义关闭弹窗 |
| | | closeDialog({flag,index}){ |
| | | this.dialogView = flag; |
| | | if(index ===1 ){ |
| | | this.setTableData(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .userList { |
| | | text-align: left; |
| | | margin: 10px 20px; |
| | | color: #4b9bb7; |
| | | |
| | | header { |
| | | background-color: #09152f; |
| | | border: 1pox solid #fff; |
| | | |
| | | .header-nav { |
| | | line-height: 40px; |
| | | padding: 0 30px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | font-weight: 650; |
| | | } |
| | | |
| | | .header-content { |
| | | padding: 0 40px; |
| | | display: flex; |
| | | line-height: 100px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .search, |
| | | .message-status, |
| | | .message-kind { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | |
| | | span { |
| | | flex: 1; |
| | | } |
| | | |
| | | .el-input { |
| | | flex: 2; |
| | | color: #1d3f57; |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .findBtn { |
| | | line-height: 100px; |
| | | margin-left: 15px; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: -2px; |
| | | |
| | | .el-button { |
| | | padding: 12px 25px; |
| | | border-radius: 20px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | main { |
| | | background-color: #09152f; |
| | | margin-top: 20px; |
| | | padding-bottom: 50px; |
| | | border: 1pox solid #fff; |
| | | .el-link{ |
| | | color: #4b9bb7; |
| | | } |
| | | .leftPx{ |
| | | margin-left: 10px; |
| | | } |
| | | .mainTitle { |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .main-nav { |
| | | line-height: 40px; |
| | | display: flex; |
| | | padding: 10px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tools { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 20px; |
| | | |
| | | .funs { |
| | | display: flex; |
| | | |
| | | .funsItem { |
| | | line-height: 28px; |
| | | display: flex; |
| | | align-items: center; |
| | | border: 1px solid #17324c; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | margin-left: 10px; |
| | | |
| | | .el-checkbox { |
| | | width: 80px; |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .el-select { |
| | | width: 120px; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | border: none; |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &:hover { |
| | | border: 1px solid #4b9bb7; |
| | | } |
| | | |
| | | &:hover .el-checkbox { |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .pagination { |
| | | margin-top: 50px; |
| | | display: flex; |
| | | line-height: 50px; |
| | | justify-content: center; |
| | | |
| | | .el-pagination { |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | | background-color: #071f39; |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .active { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table { |
| | | color: #4b9bb7; |
| | | font-size: 10px; |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .operation { |
| | | display: flex; |
| | | |
| | | .line { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | | span:hover { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table::v-deep .warning-row { |
| | | background: #06122c; |
| | | } |
| | | |
| | | .el-table::v-deep .success-row { |
| | | background: #071f39; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label { |
| | | position: absolute; |
| | | display: none; |
| | | color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-switch__core { |
| | | background-color: rgba(166, 166, 166, 1); |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--left { |
| | | z-index: 9; |
| | | left: 20px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--right { |
| | | z-index: 9; |
| | | left: 4px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label.is-active { |
| | | display: block; |
| | | } |
| | | |
| | | &::v-deep .switchStyle.el-switch .el-switch__core, |
| | | &::v-deep .el-switch .el-switch__label { |
| | | width: 50px !important; |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header, |
| | | &::v-deep .el-dialog__body { |
| | | background-color: #06122c; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__title { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__close { |
| | | width: 20px; |
| | | height: 20px; |
| | | // color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="myview"> |
| | | <header> |
| | | <div class="header-title"> |
| | | 域名隐私保护服务暂停通知 |
| | | </div> |
| | | <div class="header-time"> |
| | | 2018-05-25 14:19:20 |
| | | </div> |
| | | </header> |
| | | <main> |
| | | <div class="main-head"> 尊敬的客户:您好!</div> |
| | | <div class="main-content"> |
| | | 根据ICANN(互联网名称与数字地址分配机构)《通用顶级域名注册数据临时政策细则(Temporary Specification for gTLD Registration Data)》和欧盟通用数据保护条例(GDPR)合规要求,自2018年5月25日起,阿里云的域名WHOIS信息公开查询结果中将不再显示域名注册人/注册机构的名称,以及域名注册人/注册机构、管理联系人和技术联系人的联系信息。 |
| | | </div> |
| | | <div class="main-footer"> |
| | | 鉴于以上调整措施生效后,域名注册信息将默认得到保护,阿里云域名隐私保护服务将自2018年5月25日起暂停服务。 |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <style lang="scss" scoped> |
| | | .myview{ |
| | | color: #4b9bb7; |
| | | header{ |
| | | line-height: 100px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | .header-title{ |
| | | font-weight: 650; |
| | | font-size: 20px; |
| | | line-height: 60px; |
| | | } |
| | | .header-time{ |
| | | line-height: 20px; |
| | | } |
| | | padding-bottom: 20px; |
| | | border-bottom: 1px solid #4b9bb7; |
| | | } |
| | | main{ |
| | | padding: 30px 50px; |
| | | line-height: 100px; |
| | | .main-head{ |
| | | line-height: 40px; |
| | | } |
| | | .main-content{ |
| | | line-height: 30px; |
| | | } |
| | | .main-footer{ |
| | | line-height: 30px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 栏目名称 --> |
| | | <el-form-item class="optionItem" label="栏目名称:" prop="name"> |
| | | <el-input v-model="role.name" placeholder="请填写栏目名称"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="role.description" |
| | | placeholder="请输入描述内容200字以内"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button class="btn cancel" @click.native.prevent="handleCancel">取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">确定 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写栏目名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | name: '', |
| | | description: '', |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | typeList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | this.$refs['user'].validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { role } = this; |
| | | console.log(role); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message_column/addColumn', |
| | | data: { |
| | | columnName: role.name, |
| | | createUser: 3, |
| | | description: role.description, |
| | | isShow: 0, |
| | | } |
| | | }) |
| | | .then(res=>{ |
| | | if(res.code === 200){ |
| | | this.$message({ |
| | | type:'success', |
| | | message:'添加成功' |
| | | }) |
| | | this.$emit('closeDialog',{flag:false,index:1}); |
| | | }else{ |
| | | this.$message({ |
| | | type:'error', |
| | | message:res.message |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 关闭弹窗 |
| | | handleCancel(){ |
| | | this.$emit('closeDialog',{flag:false,index:0}); |
| | | } |
| | | }, |
| | | props: ['closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | :deep(.el-input__count) { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 栏目名称 --> |
| | | <el-form-item class="optionItem" label="栏目名称:" prop="name"> |
| | | <el-input v-model="role.name" placeholder="请填写栏目名称"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="role.description" |
| | | placeholder="请输入描述内容200字以内"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button class="btn cancel" @click.native.prevent="handleCancel">取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">确定 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写栏目名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | // const rep = /^[\u4E00-\u9FA5]{2,4}$/; |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的用户姓名"); |
| | | // } |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | name: '', |
| | | description: '', |
| | | }, |
| | | createRoleRules: { |
| | | name: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | typeList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | this.$refs['user'].validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { role } = this; |
| | | console.log(role); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message_column/addColumn', |
| | | data: { |
| | | columnName: role.name, |
| | | createUser: 3, |
| | | description: role.description, |
| | | isShow: 0, |
| | | } |
| | | }) |
| | | .then(res=>{ |
| | | if(res.code === 200){ |
| | | this.$message({ |
| | | type:'success', |
| | | message:'添加成功' |
| | | }) |
| | | this.$emit('closeDialog',{flag:false,index:1}); |
| | | }else{ |
| | | this.$message({ |
| | | type:'error', |
| | | message:res.message |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 关闭弹窗 |
| | | handleCancel(){ |
| | | this.$emit('closeDialog',{flag:false,index:0}); |
| | | } |
| | | // 获取创建用户信息 |
| | | // async getCreaterInfo(){ |
| | | // let id; |
| | | // const name = sessionStorage.getItem('name'); |
| | | // await this.$axios({ |
| | | // method:'get', |
| | | // url:'sccg/admin/info?name='+'name' |
| | | // }) |
| | | // .then(res=>{ |
| | | // console.log(res); |
| | | // if(res.code ===200){ |
| | | |
| | | // } |
| | | // }) |
| | | // } |
| | | }, |
| | | props: ['closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | :deep(.el-input__count) { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <div class="main-nav"> |
| | | <span>数据列表</span> |
| | | <el-button type="primary" icon="el-icon-plus" @click="dialogCreate = true">添加</el-button> |
| | | </div> |
| | | <!-- 数据展示 --> |
| | | <el-table ref="multipleTable" |
| | | :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" |
| | | :data="tableData" style="width: 100%" :row-class-name="tableRowClassName" |
| | | @selection-change="tableChange"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column prop="columnName" label="栏目名称" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="updateTime" label="修改时间" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <span>{{changeTime(scope.row)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="noticeAmount" label="公告数量" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="isShow" label="显示" min-width="5"> |
| | | <template slot-scope="scope"> |
| | | <el-switch class="switchStyle" v-model="scope.row.isShow" active-text="开" inactive-text="关" |
| | | active-color="#3fef9a" inactive-color="#000212" @change="handleChangeStatus(scope.row)"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="15"> |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <el-link icon="el-icon-edit" :underline="false" @click="handleEdit(scope.row)">编辑</el-link> |
| | | <el-link class="leftPx" icon="el-icon-delete-solid" :underline="false" |
| | | @click="handleDelete([scope.row.id])">删除</el-link> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- 创建页面 --> |
| | | <el-dialog title="添加栏目" :visible.sync="dialogCreate" v-if="dialogCreate" width="45%" |
| | | :before-close="handleClose"> |
| | | <MyCreate @closeDialog="closeDialog"></MyCreate> |
| | | </el-dialog> |
| | | <!-- 编辑页面 --> |
| | | <el-dialog title="修改栏目" :visible.sync="dialogEdit" v-if="dialogEdit" width="45%" |
| | | :before-close="handleClose"> |
| | | <MyEdit @closeDialog="closeDialog" :info="info"></MyEdit> |
| | | </el-dialog> |
| | | <!-- tools --> |
| | | <!-- <div class="tools"> |
| | | <div class="funs"> |
| | | <div class="funsItem"> |
| | | <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem"> |
| | | <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem"> |
| | | <el-select v-model="myIdx" placeholder="批量操作" @change="selectChange"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="pagination"> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" |
| | | :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" |
| | | @prev-click="handlePrev" @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | // 引入创建栏目组件 |
| | | import MyCreate from './createUser' |
| | | // 引入编辑组件 |
| | | import MyEdit from './update' |
| | | // 引入日期js |
| | | import helper from '@/utils/mydate' |
| | | export default { |
| | | components: { |
| | | MyCreate,MyEdit |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | dialogCreate: false, |
| | | dialogEdit:false, |
| | | totalNum: null, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | all: false, |
| | | unsame: false, |
| | | myIdx: 0, |
| | | preMyIdx: 0, |
| | | info:'', |
| | | options: [ |
| | | { |
| | | value: 0, |
| | | label: '批量操作', |
| | | disabled: true, |
| | | }, |
| | | { |
| | | value: 1, |
| | | label: '批量启用', |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '批量禁用', |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: '批量删除', |
| | | } |
| | | ], |
| | | tempList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTableData(); |
| | | }, |
| | | methods: { |
| | | // 编辑 |
| | | handleEdit(data){ |
| | | this.info = data; |
| | | this.dialogEdit = true; |
| | | }, |
| | | // 删除数据 |
| | | handleDelete(idArr) { |
| | | console.log(idArr); |
| | | this.$confirm('是否确定确定删除栏目?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message_column/delete' + '?ids=' + idArr, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '删除成功', |
| | | }); |
| | | this.setTableData(); |
| | | } |
| | | }) |
| | | }) |
| | | .catch(err=>{ |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | // 修改栏目状态 |
| | | handleChangeStatus({ id, status }) { |
| | | console.log(id, status); |
| | | status === true ? status = 1 : status = 0; |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: `sccg/message_column/update/${id}`, |
| | | data: { |
| | | isShow: status, |
| | | } |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.setTableData(); |
| | | } |
| | | }) |
| | | }, |
| | | // 获取全部栏目 |
| | | async getColumnList() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/message_column/getAllColumn', |
| | | }) |
| | | .then(res => { |
| | | res.data.forEach(item => { |
| | | item.isShow === 1 ? item.isShow = true : item.isShow = false; |
| | | }) |
| | | arr = res.data |
| | | // console.log(res); |
| | | }) |
| | | return arr; |
| | | }, |
| | | // 设置表格数据 |
| | | async setTableData() { |
| | | this.tableData = await this.getColumnList(); |
| | | this.totalNum = this.tableData.length; |
| | | }, |
| | | // 下拉框监听 |
| | | async selectChange(list) { |
| | | console.log(this.tempList); |
| | | if (this.tempList.length !== 0) { |
| | | this.preMyIdx = list; |
| | | if (list === 3) { |
| | | await this.handleDelete(this.tempList); |
| | | } else if (list === 2) { |
| | | await this.mulUpdateStatus(this.tempList, 0); |
| | | } else { |
| | | await this.mulUpdateStatus(this.tempList, 1); |
| | | } |
| | | this.myIdx = 0; |
| | | } else { |
| | | this.myIdx = this.preMyIdx; |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: '您还没选中任何数据', |
| | | }) |
| | | } |
| | | }, |
| | | // 批量操作 |
| | | mulUpdateStatus(idArr, flag) { |
| | | this.$confirm(flag === 1 ? "您确定要进行批量启用角色吗?" : '您确定要进行批量禁用角色吗?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/role/updateStatusBatch?ids=' + idArr + '&status=' + flag, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '更改用户状态成功', |
| | | }) |
| | | this.getUserList(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | console.log(res); |
| | | }) |
| | | }) |
| | | .catch(err => { console.log(err) }) |
| | | }, |
| | | // 表格状态监听 |
| | | tableChange(list) { |
| | | this.tempList = []; |
| | | list.forEach(item => { |
| | | this.tempList.push(item.id); |
| | | }) |
| | | if (list.length === this.tableData.length) { |
| | | this.all = true; |
| | | } else { |
| | | this.all = false |
| | | } |
| | | }, |
| | | // 改变日期格式 |
| | | changeTime({ updateTime }) { |
| | | return helper(updateTime); |
| | | }, |
| | | // 全选 |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | // 反选 |
| | | disSame(list) { |
| | | list.forEach(row => { |
| | | this.$refs.multipleTable.toggleRowSelection(row) |
| | | }) |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 上一页点击事件 |
| | | handlePrev(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 下一页点击事件 |
| | | handleNext(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 关闭弹窗 |
| | | handleClose(done) { |
| | | this.$confirm('确定关闭?') |
| | | .then(_ => { |
| | | done(); |
| | | }) |
| | | .catch(err => { |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | // 自定义关闭弹窗 |
| | | closeDialog({ flag, index }) { |
| | | this.dialogCreate = flag; |
| | | this.dialogEdit = flag; |
| | | if (index === 1) { |
| | | this.setTableData(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .userList { |
| | | text-align: left; |
| | | margin: 10px 20px; |
| | | color: #4b9bb7; |
| | | |
| | | main { |
| | | background-color: #09152f; |
| | | margin-top: 20px; |
| | | padding-bottom: 50px; |
| | | border: 1pox solid #fff; |
| | | |
| | | .mainTitle { |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .main-nav { |
| | | line-height: 40px; |
| | | display: flex; |
| | | padding: 10px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tools { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 20px; |
| | | |
| | | .funs { |
| | | display: flex; |
| | | |
| | | .funsItem { |
| | | line-height: 28px; |
| | | display: flex; |
| | | align-items: center; |
| | | border: 1px solid #17324c; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | margin-left: 10px; |
| | | |
| | | .el-checkbox { |
| | | width: 80px; |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .el-select { |
| | | width: 120px; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | border: none; |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &:hover { |
| | | border: 1px solid #4b9bb7; |
| | | } |
| | | |
| | | &:hover .el-checkbox { |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .pagination { |
| | | margin-top: 50px; |
| | | display: flex; |
| | | line-height: 50px; |
| | | justify-content: center; |
| | | |
| | | .el-pagination { |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | | background-color: #071f39; |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .active { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table { |
| | | color: #4b9bb7; |
| | | font-size: 10px; |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .operation { |
| | | display: flex; |
| | | |
| | | .el-link { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .leftPx { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .line { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | | span:hover { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table::v-deep .warning-row { |
| | | background: #06122c; |
| | | } |
| | | |
| | | .el-table::v-deep .success-row { |
| | | background: #071f39; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label { |
| | | position: absolute; |
| | | display: none; |
| | | color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-switch__core { |
| | | background-color: rgba(166, 166, 166, 1); |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--left { |
| | | z-index: 9; |
| | | left: 20px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label--right { |
| | | z-index: 9; |
| | | left: 4px; |
| | | } |
| | | |
| | | &::v-deep .switchStyle .el-switch__label.is-active { |
| | | display: block; |
| | | } |
| | | |
| | | &::v-deep .switchStyle.el-switch .el-switch__core, |
| | | &::v-deep .el-switch .el-switch__label { |
| | | width: 50px !important; |
| | | } |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header, |
| | | &::v-deep .el-dialog__body { |
| | | background-color: #06122c; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__header { |
| | | display: flex; |
| | | align-items: center; |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__title { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__close { |
| | | width: 20px; |
| | | height: 20px; |
| | | // color: #fff; |
| | | } |
| | | |
| | | &::v-deep .el-dialog__body { |
| | | padding: 0; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="createUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 栏目名称 --> |
| | | <el-form-item class="optionItem" label="栏目名称:" prop="columnName"> |
| | | <el-input v-model="role.columnName" placeholder="请填写栏目名称"></el-input> |
| | | </el-form-item> |
| | | <!-- 角色描述 --> |
| | | <el-form-item class="optionItem" label="角色描述:" prop="description"> |
| | | <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="role.description" |
| | | placeholder="请输入描述内容200字以内"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <div class="optionBtn"> |
| | | <el-button class="btn cancel" @click.native.prevent="handleCancel">取消</el-button> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">修改 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | const validateNickname = (rule, value, callback) => { |
| | | if (!value) { |
| | | callback(new Error("请填写栏目名称")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | const validateTruename = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | return { |
| | | role: { |
| | | }, |
| | | createRoleRules: { |
| | | columnName: [ |
| | | { required: true, trigger: "blur", validator: validateNickname }, |
| | | ], |
| | | description: [ |
| | | { required: false, trigger: "blur", validator: validateTruename }, |
| | | ], |
| | | }, |
| | | typeList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.info); |
| | | this.role = JSON.parse(JSON.stringify(this.info)) ; |
| | | }, |
| | | methods: { |
| | | handleUser() { |
| | | this.$refs['user'].validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | const { role } = this; |
| | | console.log(role); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: `sccg/message_column/update/${role.id}`, |
| | | data: { |
| | | columnName: role.columnName, |
| | | createUser: role.createUser, |
| | | description: role.description, |
| | | isShow: role.isShow===false ? 0 : 1, |
| | | } |
| | | }) |
| | | .then(res=>{ |
| | | if(res.code === 200){ |
| | | this.$message({ |
| | | type:'success', |
| | | message:'修改成功' |
| | | }) |
| | | this.$emit('closeDialog',{flag:false,index:1}); |
| | | }else{ |
| | | this.$message({ |
| | | type:'error', |
| | | message:res.message |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 关闭弹窗 |
| | | handleCancel(){ |
| | | this.$emit('closeDialog',{flag:false,index:0}); |
| | | } |
| | | }, |
| | | props: ['closeDialog','info'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .createUser { |
| | | border-radius: 1px; |
| | | background-color: #09152f; |
| | | |
| | | main { |
| | | text-align: left; |
| | | padding: 0 55px; |
| | | background-color: #09152f; |
| | | padding-bottom: 50px; |
| | | |
| | | .mainContent { |
| | | display: flex; |
| | | justify-content: center; |
| | | padding-top: 50px; |
| | | |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | :deep(.el-input__count) { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 400px; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .optionHandleSp { |
| | | display: flex; |
| | | |
| | | .areaNumber, |
| | | .moreNumber { |
| | | flex: 1; |
| | | } |
| | | |
| | | .telNumber { |
| | | flex: 2; |
| | | } |
| | | } |
| | | |
| | | .optionBtn { |
| | | display: flex; |
| | | margin-top: 20px; |
| | | |
| | | .btn { |
| | | padding: 12px 50px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | // 计算时间 |
| | | getRestTime(time2){ |
| | | console.log(time2); |
| | | return computeTime(time2); |
| | | } |
| | | } |