“dzb”
2022-10-11 387e8b0743240de72425e5b5c5709d629ace9aa4
新增消息界面、处理遗留问题
18个文件已修改
13个文件已添加
1 文件已重命名
6个文件已删除
4615 ■■■■ 已修改文件
package-lock.json 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/detail/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/dispatch/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/edit/index.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/illdetail/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/process/index.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/helper.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/mydate.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/validate.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layout/components/Menu/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/create/law/index.vue 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/create/soil/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/createUser/index.vue 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/index.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/update/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/update/law/index.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/update/soil/index.vue 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/updateUser/uploadResult/components/arrive/index.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/updateUser/uploadResult/components/book/index.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/updateUser/uploadResult/components/evidence/index.vue 627 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/updateUser/uploadResult/ill/index.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/updateUser/uploadResult/vio/index.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/disposal/casepool/notDeal/index.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/disposal/casepool/pool/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/management/myIndex/components/closure/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/management/myIndex/index.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/index.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/createUser/index.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/index.vue 555 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/myview/index.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/update/index.vue 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/mycontrol/createUser/index.vue 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/mycontrol/index.vue 501 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/mycontrol/update/index.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/myWait/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -11,14 +11,14 @@
        "@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",
@@ -27,6 +27,7 @@
        "@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"
      }
@@ -1721,8 +1722,19 @@
      "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": {
@@ -3391,6 +3403,7 @@
      "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"
      }
@@ -3466,7 +3479,8 @@
    "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",
@@ -3553,6 +3567,7 @@
      "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"
@@ -3563,12 +3578,14 @@
      "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",
@@ -4806,6 +4823,16 @@
        "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",
@@ -5256,6 +5283,7 @@
      "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"
      }
@@ -5704,6 +5732,7 @@
      "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",
@@ -9149,7 +9178,8 @@
    "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",
@@ -10964,8 +10994,7 @@
    "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",
@@ -11142,7 +11171,8 @@
    "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",
@@ -13710,6 +13740,7 @@
      "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"
      }
@@ -13913,8 +13944,7 @@
    "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",
@@ -14415,6 +14445,16 @@
      "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": {
@@ -16176,8 +16216,16 @@
      "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"
      }
    },
@@ -17593,6 +17641,7 @@
      "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"
      }
@@ -17640,7 +17689,8 @@
    "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",
@@ -17710,6 +17760,7 @@
      "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"
@@ -17718,12 +17769,14 @@
        "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
        }
      }
    },
@@ -18694,6 +18747,11 @@
        }
      }
    },
    "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",
@@ -19027,7 +19085,8 @@
    "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",
@@ -19381,6 +19440,7 @@
      "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",
@@ -22089,7 +22149,8 @@
    "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",
@@ -23446,8 +23507,7 @@
    "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",
@@ -23589,7 +23649,8 @@
    "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",
@@ -25670,7 +25731,8 @@
    "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",
@@ -25844,8 +25906,7 @@
    "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",
@@ -26265,6 +26326,16 @@
      "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",
package.json
@@ -12,14 +12,14 @@
    "@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",
src/components/detail/index.vue
@@ -20,7 +20,7 @@
                    <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">
@@ -118,7 +118,7 @@
            </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>
src/components/dispatch/index.vue
@@ -300,17 +300,21 @@
        },
        // 人员更改
        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;
        }
    }
}
src/components/edit/index.vue
New file
@@ -0,0 +1,41 @@
<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>
src/components/illdetail/index.vue
@@ -77,7 +77,7 @@
            </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>
src/components/process/index.vue
@@ -43,45 +43,26 @@
        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;
    },
}
src/router/index.js
@@ -199,6 +199,23 @@
                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'),
              },
            ]
          }
        ]
      },
src/utils/helper.js
@@ -29,7 +29,6 @@
    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) {
@@ -40,21 +39,21 @@
}
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 + '分钟'
src/utils/mydate.js
@@ -2,7 +2,7 @@
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();
src/utils/request.js
@@ -1,7 +1,10 @@
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
})
// 拦截器
// 请求
@@ -12,19 +15,57 @@
    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;
    }
  }
);
src/utils/validate.js
@@ -24,5 +24,9 @@
  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);
}
src/views/layout/components/Menu/index.vue
@@ -119,7 +119,13 @@
            </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>
src/views/operate/car/myIndex/create/law/index.vue
New file
@@ -0,0 +1,269 @@
<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>
src/views/operate/car/myIndex/create/soil/index.vue
New file
@@ -0,0 +1,310 @@
<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>
src/views/operate/car/myIndex/createUser/index.vue
File was deleted
src/views/operate/car/myIndex/index.vue
@@ -5,7 +5,7 @@
                <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">
@@ -26,30 +26,24 @@
                    @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>
@@ -60,6 +54,13 @@
                <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">
@@ -90,17 +91,22 @@
    </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,
@@ -142,12 +148,22 @@
            ],
            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;
@@ -217,6 +233,7 @@
                url:`sccg/car_Manage/query_enforce?current=${currentPage}&size=${pageSize}&carNum=${carNum}`,
            })
            .then(res=>{
                console.log(res);
                arr = res.data;
            })
            return arr;
@@ -279,14 +296,24 @@
        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;
        }
    }
}
src/views/operate/car/myIndex/update/index.vue
src/views/operate/car/myIndex/update/law/index.vue
New file
@@ -0,0 +1,227 @@
<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>
src/views/operate/car/myIndex/update/soil/index.vue
New file
@@ -0,0 +1,265 @@
<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>
src/views/operate/car/myIndex/updateUser/uploadResult/components/arrive/index.vue
File was deleted
src/views/operate/car/myIndex/updateUser/uploadResult/components/book/index.vue
File was deleted
src/views/operate/car/myIndex/updateUser/uploadResult/components/evidence/index.vue
File was deleted
src/views/operate/car/myIndex/updateUser/uploadResult/ill/index.vue
File was deleted
src/views/operate/car/myIndex/updateUser/uploadResult/vio/index.vue
File was deleted
src/views/operate/disposal/casepool/notDeal/index.vue
@@ -50,7 +50,10 @@
                    </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>
@@ -106,6 +109,8 @@
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,
@@ -358,6 +363,9 @@
        // 关闭上传界面
        closeDialog({flag}){
            this.dialogUpload = flag;
        },
        filterTime(time){
            return helper(time);
        }
    }
}
src/views/operate/disposal/casepool/pool/index.vue
@@ -62,19 +62,26 @@
                            <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">
@@ -138,6 +145,7 @@
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
@@ -495,6 +503,10 @@
                        })
                    }
                })
        },
        // 处理时间
        filterTime(time){
            return helper(time);
        }
    }
}
src/views/operate/management/myIndex/components/closure/index.vue
@@ -102,7 +102,7 @@
                            <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>
src/views/operate/management/myIndex/index.vue
@@ -43,7 +43,10 @@
                    </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>
@@ -106,6 +109,7 @@
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
@@ -342,6 +346,9 @@
        // 审核状态
        changeInStatus(val){
            this.getUserList();
        },
        filterTime(time){
            return helper(time);
        }
    }
}
src/views/operate/message/index.vue
New file
@@ -0,0 +1,3 @@
<template>
    <router-view></router-view>
</template>
src/views/operate/message/myIndex/createUser/index.vue
New file
@@ -0,0 +1,206 @@
<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>
src/views/operate/message/myIndex/index.vue
New file
@@ -0,0 +1,555 @@
<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>
src/views/operate/message/myIndex/myview/index.vue
New file
@@ -0,0 +1,55 @@
<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">
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据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>
src/views/operate/message/myIndex/update/index.vue
New file
@@ -0,0 +1,179 @@
<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>
src/views/operate/message/mycontrol/createUser/index.vue
New file
@@ -0,0 +1,194 @@
<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>
src/views/operate/message/mycontrol/index.vue
New file
@@ -0,0 +1,501 @@
<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>
src/views/operate/message/mycontrol/update/index.vue
New file
@@ -0,0 +1,175 @@
<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>
src/views/operate/myWait/index.vue
@@ -270,6 +270,7 @@
        },
        // 计算时间
        getRestTime(time2){
            console.log(time2);
            return computeTime(time2);
        }
    }