Prechádzať zdrojové kódy

新增部门管理和栏目管理界面

wrh 2 rokov pred
rodič
commit
52e791c1c8

+ 637 - 121
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/package-lock.json

@@ -1925,51 +1925,6 @@
           "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
         "ssri": {
           "version": "8.0.1",
           "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
@@ -1978,28 +1933,6 @@
           "requires": {
             "minipass": "^3.1.1"
           }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
-          }
         }
       }
     },
@@ -2872,8 +2805,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "bindings": {
       "version": "1.5.0",
@@ -3385,7 +3317,6 @@
       "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
       "dev": true,
-      "optional": true,
       "requires": {
         "anymatch": "~3.1.2",
         "braces": "~3.0.2",
@@ -3402,7 +3333,6 @@
           "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
           "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
           "dev": true,
-          "optional": true,
           "requires": {
             "fill-range": "^7.0.1"
           }
@@ -3412,7 +3342,6 @@
           "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
           "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
           "dev": true,
-          "optional": true,
           "requires": {
             "to-regex-range": "^5.0.1"
           }
@@ -3421,15 +3350,13 @@
           "version": "7.0.0",
           "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
           "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "to-regex-range": {
           "version": "5.0.1",
           "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
           "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
           "dev": true,
-          "optional": true,
           "requires": {
             "is-number": "^7.0.0"
           }
@@ -3666,6 +3593,17 @@
       "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
       "dev": true
     },
+    "clone-deep": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
+      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+      "dev": true,
+      "requires": {
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.2",
+        "shallow-clone": "^3.0.0"
+      }
+    },
     "coa": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
@@ -4313,23 +4251,21 @@
       "dev": true
     },
     "css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+      "version": "1.0.0-alpha.28",
+      "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz",
+      "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==",
       "dev": true,
       "requires": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "mdn-data": "~1.1.0",
+        "source-map": "^0.5.3"
       }
     },
+    "css-url-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/css-url-regex/-/css-url-regex-1.1.0.tgz",
+      "integrity": "sha512-hLKuvifwoKvwqpctblTp0BovBuOXzxof8JgkA8zeqxxL+vcynHQjtIqqlFfQI1gEAZAjbqKm9gFTa88fxTAX4g==",
+      "dev": true
+    },
     "css-what": {
       "version": "3.4.2",
       "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz",
@@ -4420,35 +4356,23 @@
       "dev": true
     },
     "csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+      "version": "3.5.1",
+      "resolved": "https://registry.npmmirror.com/csso/-/csso-3.5.1.tgz",
+      "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
       "dev": true,
       "requires": {
-        "css-tree": "^1.1.2"
+        "css-tree": "1.0.0-alpha.29"
       },
       "dependencies": {
         "css-tree": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz",
-          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+          "version": "1.0.0-alpha.29",
+          "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+          "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
           "dev": true,
           "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
+            "mdn-data": "~1.1.0",
+            "source-map": "^0.5.3"
           }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
-          "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
         }
       }
     },
@@ -4888,6 +4812,12 @@
         }
       }
     },
+    "domready": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz",
+      "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==",
+      "dev": true
+    },
     "domutils": {
       "version": "1.7.0",
       "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
@@ -6436,6 +6366,23 @@
         "function-bind": "^1.1.1"
       }
     },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+          "dev": true
+        }
+      }
+    },
     "has-bigints": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -6906,8 +6853,7 @@
       "version": "0.5.5",
       "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
       "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "import-cwd": {
       "version": "2.1.0",
@@ -7239,7 +7185,6 @@
       "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
       "dev": true,
-      "optional": true,
       "requires": {
         "binary-extensions": "^2.0.0"
       }
@@ -7577,6 +7522,17 @@
       "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
       "dev": true
     },
+    "js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+      "dev": true
+    },
+    "js-cookie": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.0.tgz",
+      "integrity": "sha512-7YAJP/LPE/MhDjHIdfIiT665HUSumCwPN2hAmO6OJZ8V3o1mtz2HeQ8BKetEjkh+3nqGxYaq1vPMViUR8kaOXw=="
+    },
     "js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
@@ -8041,9 +7997,9 @@
       }
     },
     "mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-1.1.4.tgz",
+      "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
       "dev": true
     },
     "mdurl": {
@@ -8073,6 +8029,23 @@
       "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
       "dev": true
     },
+    "merge-options": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz",
+      "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.1"
+      },
+      "dependencies": {
+        "is-plain-obj": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+          "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+          "dev": true
+        }
+      }
+    },
     "merge-source-map": {
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -8291,6 +8264,12 @@
         "through2": "^2.0.0"
       }
     },
+    "mitt": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/mitt/-/mitt-1.1.2.tgz",
+      "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==",
+      "dev": true
+    },
     "mixin-deep": {
       "version": "1.3.2",
       "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -8548,6 +8527,11 @@
         "path-key": "^2.0.0"
       }
     },
+    "nprogress": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz",
+      "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+    },
     "nth-check": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz",
@@ -9631,6 +9615,12 @@
         }
       }
     },
+    "postcss-prefix-selector": {
+      "version": "1.16.0",
+      "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+      "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+      "dev": true
+    },
     "postcss-reduce-initial": {
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
@@ -9709,6 +9699,104 @@
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
       "dev": true
     },
+    "posthtml": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz",
+      "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+      "dev": true,
+      "requires": {
+        "posthtml-parser": "^0.2.0",
+        "posthtml-render": "^1.0.5"
+      }
+    },
+    "posthtml-parser": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+      "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+      "dev": true,
+      "requires": {
+        "htmlparser2": "^3.8.3",
+        "isobject": "^2.1.0"
+      },
+      "dependencies": {
+        "domhandler": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz",
+          "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "1"
+          }
+        },
+        "entities": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz",
+          "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+          "dev": true
+        },
+        "htmlparser2": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz",
+          "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+          "dev": true,
+          "requires": {
+            "domelementtype": "^1.3.1",
+            "domhandler": "^2.3.0",
+            "domutils": "^1.5.1",
+            "entities": "^1.1.1",
+            "inherits": "^2.0.1",
+            "readable-stream": "^3.1.1"
+          }
+        },
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+          "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "posthtml-rename-id": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+      "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "1.0.5"
+      }
+    },
+    "posthtml-render": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz",
+      "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+      "dev": true
+    },
+    "posthtml-svg-mode": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+      "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+      "dev": true,
+      "requires": {
+        "merge-options": "1.0.1",
+        "posthtml": "^0.9.2",
+        "posthtml-parser": "^0.2.1",
+        "posthtml-render": "^1.0.6"
+      }
+    },
     "prelude-ls": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -9968,7 +10056,6 @@
       "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
       "dev": true,
-      "optional": true,
       "requires": {
         "picomatch": "^2.2.1"
       }
@@ -10364,6 +10451,50 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
+    "sass": {
+      "version": "1.26.8",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.26.8.tgz",
+      "integrity": "sha512-yvtzyrKLGiXQu7H12ekXqsfoGT/aTKeMDyVzCB675k1HYuaj0py63i8Uf4SI9CHXj6apDhpfwbUr3gGOjdpu2Q==",
+      "dev": true,
+      "requires": {
+        "chokidar": ">=2.0.0 <4.0.0"
+      }
+    },
+    "sass-loader": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-8.0.2.tgz",
+      "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
+      "dev": true,
+      "requires": {
+        "clone-deep": "^4.0.1",
+        "loader-utils": "^1.2.3",
+        "neo-async": "^2.6.1",
+        "schema-utils": "^2.6.1",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
     "sax": {
       "version": "1.2.4",
       "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
@@ -10594,6 +10725,15 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
+      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
     "shebang-command": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -11246,6 +11386,286 @@
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
       "dev": true
     },
+    "svg-baker": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz",
+      "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "clone": "^2.1.1",
+        "he": "^1.1.1",
+        "image-size": "^0.5.1",
+        "loader-utils": "^1.1.0",
+        "merge-options": "1.0.1",
+        "micromatch": "3.1.0",
+        "postcss": "^5.2.17",
+        "postcss-prefix-selector": "^1.6.0",
+        "posthtml-rename-id": "^1.0",
+        "posthtml-svg-mode": "^1.0.3",
+        "query-string": "^4.3.2",
+        "traverse": "^0.6.6"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+              "dev": true
+            }
+          }
+        },
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+          "dev": true
+        },
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+          "dev": true
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "micromatch": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz",
+          "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.2.2",
+            "define-property": "^1.0.0",
+            "extend-shallow": "^2.0.1",
+            "extglob": "^2.0.2",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^5.0.2",
+            "nanomatch": "^1.2.1",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          }
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "svg-baker-runtime": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npmmirror.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz",
+      "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==",
+      "dev": true,
+      "requires": {
+        "deepmerge": "1.3.2",
+        "mitt": "1.1.2",
+        "svg-baker": "^1.7.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz",
+          "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==",
+          "dev": true
+        }
+      }
+    },
+    "svg-sprite-loader": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-4.1.3.tgz",
+      "integrity": "sha512-lOLDSJoyriYnOeGYc7nhxTDYj2vfdBVKpxIS/XK70//kA3VB55H89T1lct2OEClY4w5kQLZJAvDGQ41g3YTogQ==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "deepmerge": "1.3.2",
+        "domready": "1.0.8",
+        "escape-string-regexp": "1.0.5",
+        "html-webpack-plugin": "^3.2.0",
+        "loader-utils": "^1.1.0",
+        "svg-baker": "^1.4.0",
+        "svg-baker-runtime": "^1.4.0",
+        "url-slug": "2.0.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz",
+          "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
     "svg-tags": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
@@ -11253,17 +11673,18 @@
       "dev": true
     },
     "svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.2.2.tgz",
+      "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==",
       "dev": true,
       "requires": {
         "chalk": "^2.4.1",
         "coa": "^2.0.2",
         "css-select": "^2.0.0",
         "css-select-base-adapter": "^0.1.1",
-        "css-tree": "1.0.0-alpha.37",
-        "csso": "^4.0.2",
+        "css-tree": "1.0.0-alpha.28",
+        "css-url-regex": "^1.1.0",
+        "csso": "^3.5.1",
         "js-yaml": "^3.13.1",
         "mkdirp": "~0.5.1",
         "object.values": "^1.1.0",
@@ -11621,6 +12042,12 @@
         "punycode": "^2.1.1"
       }
     },
+    "traverse": {
+      "version": "0.6.6",
+      "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.6.tgz",
+      "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==",
+      "dev": true
+    },
     "tryer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz",
@@ -11760,6 +12187,12 @@
       "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
       "dev": true
     },
+    "unidecode": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmmirror.com/unidecode/-/unidecode-0.1.8.tgz",
+      "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==",
+      "dev": true
+    },
     "union-value": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
@@ -11958,6 +12391,15 @@
         "requires-port": "^1.0.0"
       }
     },
+    "url-slug": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/url-slug/-/url-slug-2.0.0.tgz",
+      "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==",
+      "dev": true,
+      "requires": {
+        "unidecode": "0.1.8"
+      }
+    },
     "use": {
       "version": "3.1.1",
       "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
@@ -12210,6 +12652,75 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-router": {
       "version": "3.5.4",
       "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.5.4.tgz",
@@ -12269,6 +12780,11 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "vuex": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/vuex/-/vuex-3.1.0.tgz",
+      "integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg=="
+    },
     "watchpack": {
       "version": "1.7.5",
       "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",

+ 3 - 3
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/package.json

@@ -16,7 +16,7 @@
     "vue": "^2.6.11",
     "vue-baidu-map": "^0.21.22",
     "vue-router": "^3.2.0",
-	  "vuex": "3.1.0",
+    "vuex": "3.1.0",
     "nprogress": "0.2.0"
   },
   "devDependencies": {
@@ -33,8 +33,8 @@
     "less-loader": "^5.0.0",
     "prettier": "^2.2.1",
     "vue-template-compiler": "^2.6.11",
-	  "sass": "1.26.8",
-	  "sass-loader": "8.0.2",
+    "sass": "1.26.8",
+    "sass-loader": "8.0.2",
     "svg-sprite-loader": "4.1.3",
     "svgo": "1.2.2"
   }

+ 46 - 0
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/src/api/index.js

@@ -130,6 +130,52 @@ export default {
     return request.post('postManagement/updatePostById', data)
   },
 
+  
+  // 分页查询所有部门信息
+  getDeptPage(data) {
+    return request.get('tj/getDeptPage', data)
+  },
+  // 通过部门id查询,拥有的所有栏目信息
+  getChnlidListByDeptid(data) {
+    return request.get('tj/getChnlidListByDeptid', data)
+  },
+  // 保存部门信息
+  saveDept(data) {
+    return request.post('tj/saveDept', data)
+  },
+  // 通过部门id查询部门信息
+  getDeptById(data) {
+    return request.get('tj/getDeptById', data)
+  },
+  // 通过id修改部门信息
+  updateDeptById(data) {
+    return request.post('tj/updateDeptById', data)
+  },
+  // 通过部门id逻辑删除部门信息
+  deleteDeptById(data) {
+    return request.post('tj/deleteDeptById', data)
+  },
+  // 查询未分配归属的栏目信息
+  getNotVestedChnlid(data) {
+    return request.get('tj/getNotVestedChnlid', data)
+  },
+  // 保存栏目信息
+  saveChnlid(data) {
+    return request.post('tj/saveChnlid', data)
+  },
+  // 分页查询所有的栏目信息
+  getChnlidListPage(data) {
+    return request.get('tj/getChnlidListPage', data)
+  },
+  // 通过id逻辑删除栏目
+  deleteChnlidById(data) {
+    return request.post('tj/deleteChnlidById', data)
+  },
+  // 栏目迁移
+  updateChnlidBelong(data) {
+    return request.post('tj/updateChnlidBelong', data)
+  },
+
 }
 
 // export const addInfo = (problemInfo)=>{

+ 107 - 47
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/src/router/index.js

@@ -7,29 +7,28 @@ Vue.use(Router)
 import Layout from '@/layout'
 
 /* Router Modules */
-import History from '../views/history/History'//历史信息
-import ImpressionNanan from '../views/impressionNanan/ImpressionNanan'//印象南岸
-import InformationEntry from '../views/history/InformationEntry'//信息录入
-import HistoryDetail from '../views/history/HistoryDetail'//历史详情
-import LoginPage from '../views/LoginPage.vue'//登录
-import HuaLongData from '../views/new/HuaLongData'//华龙网数据
-import Administration from '../views/impressionNanan/Administration'//印象南岸专辑管理
+import History from '../views/history/History' //历史信息
+import ImpressionNanan from '../views/impressionNanan/ImpressionNanan' //印象南岸
+import InformationEntry from '../views/history/InformationEntry' //信息录入
+import HistoryDetail from '../views/history/HistoryDetail' //历史详情
+import LoginPage from '../views/LoginPage.vue' //登录
+import HuaLongData from '../views/new/HuaLongData' //华龙网数据
+import Administration from '../views/impressionNanan/Administration' //印象南岸专辑管理
 import MapEdit from '../views/mapEdit/MapEdit' // 地图纠错
 import MapDetails from '../views/mapEdit/MapDetails' // 地图详情
 import DecisionMatters from '../views/decisionMatters/DecisionMatters' // 决策事项管理
+import Department from '../views/mechanism/Department' // 部门管理
+import Column from '../views/mechanism/Column' // 栏目管理
 
 
-export const constantRoutes = [
-  {
+export const constantRoutes = [{
     path: '/redirect',
     component: Layout,
     hidden: true,
-    children: [
-      {
-        path: '/redirect/:path(.*)',
-        component: () => import('@/views/redirect/index')
-      }
-    ]
+    children: [{
+      path: '/redirect/:path(.*)',
+      component: () => import('@/views/redirect/index')
+    }]
   },
   {
     path: '/login',
@@ -41,19 +40,26 @@ export const constantRoutes = [
     path: '/',
     component: Layout,
     redirect: '/ImpressionNanan/index',
-    meta: { title: '印象南岸', icon: 'el-icon-star-off', affix: true },
-    children: [
-      {
+    meta: {
+      title: '印象南岸',
+      icon: 'el-icon-star-off',
+      affix: true
+    },
+    children: [{
         path: '/ImpressionNanan/index',
         component: ImpressionNanan,
         name: 'ImpressionNanan',
-        meta: { title: '印象南岸' }
+        meta: {
+          title: '印象南岸'
+        }
       },
       {
         path: '/ImpressionNanan/administration',
         component: Administration,
         name: 'Administration',
-        meta: { title: '印象南岸专辑管理' }
+        meta: {
+          title: '印象南岸专辑管理'
+        }
       }
     ]
   },
@@ -62,27 +68,37 @@ export const constantRoutes = [
     component: Layout,
     redirect: '/history/index',
     name: 'history',
-    meta: { title: '历史记录', icon: 'el-icon-s-order' },
-    children: [
-      {
+    meta: {
+      title: '历史记录',
+      icon: 'el-icon-s-order'
+    },
+    children: [{
         path: 'index',
         component: History,
         name: 'History',
-        meta: { title: '历史记录' }
+        meta: {
+          title: '历史记录'
+        }
       },
       {
         path: 'informationEntry',
         component: InformationEntry,
         name: 'InformationEntry',
         hidden: true,
-        meta: { title: '信息录入', activeMenu: '/history/index' }
+        meta: {
+          title: '信息录入',
+          activeMenu: '/history/index'
+        }
       },
       {
         path: 'historyDetail',
         component: HistoryDetail,
         name: 'HistoryDetail',
         hidden: true,
-        meta: { title: '历史记录详情', activeMenu: '/history/index' }
+        meta: {
+          title: '历史记录详情',
+          activeMenu: '/history/index'
+        }
       }
     ]
   },
@@ -91,28 +107,63 @@ export const constantRoutes = [
     component: Layout,
     redirect: '/huaLongData/index',
     name: 'HuaLongData',
-    meta: { title: '华龙网数据', icon: 'el-icon-s-data' },
-    children: [
-      {
-        path: 'index',
-        component: HuaLongData,
-        name: 'HuaLongDataIndex',
-        meta: { title: '华龙网数据' }
+    meta: {
+      title: '华龙网数据',
+      icon: 'el-icon-s-data'
+    },
+    children: [{
+      path: 'index',
+      component: HuaLongData,
+      name: 'HuaLongDataIndex',
+      meta: {
+        title: '华龙网数据'
       }
-    ]
+    }]
   },
   {
     path: '/decisionMatters',
     component: Layout,
     redirect: '/decisionMatters/index',
     name: 'DecisionMatters',
-    meta: { title: '决策事项管理', icon: 'el-icon-s-cooperation' },
-    children: [
+    meta: {
+      title: '决策事项管理',
+      icon: 'el-icon-s-cooperation'
+    },
+    children: [{
+      path: 'index',
+      component: DecisionMatters,
+      name: 'DecisionMattersIndex',
+      meta: {
+        title: '决策事项管理'
+      }
+    }]
+  },
+  {
+    path: '/mechanism',
+    component: Layout,
+    redirect: '/mechanism/department',
+    name: 'Mechanism',
+    meta: {
+      title: '机构管理',
+      icon: 'dashboard'
+    },
+    children: [{
+        path: 'department',
+        component: Department,
+        name: 'Department',
+        meta: {
+          title: '部门管理',
+          icon: 'dashboard'
+        }
+      },
       {
-        path: 'index',
-        component: DecisionMatters,
-        name: 'DecisionMattersIndex',
-        meta: { title: '决策事项管理' }
+        path: 'column',
+        component: Column,
+        name: 'Column',
+        meta: {
+          title: '栏目管理',
+          icon: 'dashboard'
+        }
       }
     ]
   },
@@ -121,19 +172,26 @@ export const constantRoutes = [
     component: Layout,
     redirect: '/mapEdit/index',
     name: 'MapEdit',
-    meta: { title: '地图纠错', icon: 'el-icon-map-location' },
-    children: [
-      {
+    meta: {
+      title: '地图纠错',
+      icon: 'el-icon-map-location'
+    },
+    children: [{
         path: 'index',
         component: MapEdit,
         name: 'MapEditIndex',
-        meta: { title: '地图纠错' }
+        meta: {
+          title: '地图纠错'
+        }
       },
       {
         path: 'mapDetails',
         component: MapDetails,
         name: 'MapDetails',
-        meta: { title: '地图详情', activeMenu: '/mapEdit/index' },
+        meta: {
+          title: '地图详情',
+          activeMenu: '/mapEdit/index'
+        },
         hidden: true
       }
     ]
@@ -143,7 +201,9 @@ export const constantRoutes = [
 export const asyncRoutes = []
 
 const createRouter = () => new Router({
-  scrollBehavior: () => ({ y: 0 }),
+  scrollBehavior: () => ({
+    y: 0
+  }),
   routes: constantRoutes
 })
 
@@ -154,4 +214,4 @@ export function resetRouter() {
   router.matcher = newRouter.matcher // reset router
 }
 
-export default router
+export default router

+ 673 - 0
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/src/views/mechanism/Column.vue

@@ -0,0 +1,673 @@
+<template>
+    <div class="yxnaContent">
+        <!--操作栏-->
+        <div style="display: flex;justify-content: space-between;margin-bottom: 10px">
+            <el-button type="primary" class="add" @click="openAddWork">新增</el-button>
+            <div style="display: flex">
+                <label style="margin: auto; color: grey">栏目ID</label>
+                <el-input v-model.trim="query.chnlid" clearable placeholder="请输入栏目ID"
+                    style="margin: 0 10px;width: 200px" />
+                <label style="margin: auto; color: grey">栏目名称</label>
+                <el-input v-model.trim="query.chnlidName" clearable placeholder="请输入栏目名称"
+                    style="margin: 0 10px;width: 200px" />
+                <label style="margin: auto; color: grey">部门名称</label>
+                <el-input v-model.trim="query.deptName" clearable placeholder="请输入部门名称"
+                    style="margin: 0 10px;width: 200px" />
+                <el-button type="primary" class="search" @click="searchData">搜索</el-button>
+                <el-button type="primary" class="search" @click="reset" style="margin-left: 5px">重置</el-button>
+            </div>
+        </div>
+        <!--表格-->
+        <el-table :data="tableData" border ref='multipleTable' :height="tableH" stripe
+            :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }" :cell-style="tableStyle"
+            style="cursor: default">
+            <el-table-column width="50" label="序号">
+                <template slot-scope="scope">
+                    {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                </template>
+            </el-table-column>
+            <el-table-column prop="chnlid" label="栏目ID" />
+            <el-table-column prop="chnlidname" label="栏目名称" />
+            <el-table-column prop="deptid" label="部门ID" />
+            <el-table-column prop="deptname" label="部门名称" />
+            <el-table-column label="操作" prop="examineState,id" width="230" slot="default" fixed="right">
+                <template slot-scope="scope">
+                    <el-button class="but" type="primary" style="width: 60px" @click="openModifyWorkDialog(scope.row)">
+                        栏目迁移</el-button>
+                    <el-button class="but" type="danger" @click="handleDelete(scope.row.deptid, scope.$index)">删除
+                    </el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="block">
+            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                :current-page="sorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="sorts.limit"
+                layout="prev, pager,next,jumper,total,sizes" :total="total">
+            </el-pagination>
+        </div>
+        <!-- 新增/迁移栏目 -->
+        <el-dialog :visible.sync="workDialog" width="80%" class="detailDialog" :close-on-click-modal="false" top="40px">
+            <div slot="title">
+                <div class="addTitle">{{workTitle}}</div>
+            </div>
+            <div style="height:65vh;overflow: auto;padding-right: 20px">
+                <el-form :model="postManagement" label-width="140px">
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="栏目ID" prop="chnlid">
+                                <el-input v-model="postManagement.chnlid" disabled placeholder="请选择栏目ID">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6" style="margin-left: 10px" v-if="workTitle=='新增栏目'">
+                            <el-button type="primary" @click="columnInfo">选择栏目</el-button>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="栏目名称" prop="chnlidname">
+                                <el-input v-model="postManagement.chnlidname" disabled placeholder="请选择栏目名称">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门名称" prop="deptname">
+                                <el-input v-model="postManagement.deptname" disabled placeholder="请选择部门名称">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6" style="margin-left: 10px">
+                            <el-button type="primary" @click="deptInfo">选择部门</el-button>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" size="mini" @click="saveWork">提交</el-button>
+                <el-button @click="goBackyynn" size="mini">返回</el-button>
+            </div>
+        </el-dialog>
+        <!--栏目信息-->
+        <el-dialog :visible.sync="columnVisible" :append-to-body="true" style="margin: 10px auto!important" width="80%"
+            top="10px">
+            <div slot="title">
+                <div class="addTitle">栏目信息</div>
+            </div>
+            <div style="float: right;margin-bottom: 10px;margin-right: 10px">
+                <label>栏目ID</label>
+                <el-input v-model.trim="columnSorts.chnlid" clearable placeholder="请输入栏目ID"
+                    style="margin: 0 10px;width: 200px" />
+                <label>栏目名称</label>
+                <el-input v-model.trim="columnSorts.chnlidName" clearable placeholder="请输入栏目名称"
+                    style="margin: 0 10px;width: 200px" />
+                <el-button type="primary" class="search" @click="searchColumn">搜索</el-button>
+                <el-button type="primary" class="search" @click="resetColumn" style="margin-left: 5px">重置</el-button>
+            </div>
+            <el-table :data="columnData" border ref='columnTable' stripe :height="tableH"
+                :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }"
+                :cell-style="tableStyle" style="cursor: default">
+                <el-table-column width="50" label="序号">
+                    <template slot-scope="scope">
+                        {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="chnlid" label="栏目ID" />
+                <el-table-column prop="chnlidname" label="栏目名称" />
+                <el-table-column label="操作" prop="examineState,id" slot="default" width="100px" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button class="but" type="primary" @click="chooseColumn(scope.row)">选择</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="columnSizeChange" @current-change="columnCurrentChange"
+                    :current-page="columnSorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="columnSorts.limit"
+                    layout="prev, pager,next,jumper,total,sizes" :total="columnTotal">
+                </el-pagination>
+            </div>
+        </el-dialog>
+        <!--部门信息-->
+        <el-dialog :visible.sync="deptVisible" :append-to-body="true" style="margin: 10px auto!important" width="80%"
+            top="10px">
+            <div slot="title">
+                <div class="addTitle">部门信息</div>
+            </div>
+            <div style="float: right;margin-bottom: 10px;margin-right: 10px">
+                <label>部门名称</label>
+                <el-input v-model.trim="deptSorts.deptName" clearable placeholder="请输入部门名称"
+                    style="margin: 0 10px;width: 200px" />
+                <el-button type="primary" class="search" @click="searchDept">搜索</el-button>
+                <el-button type="primary" class="search" @click="resetDept" style="margin-left: 5px">重置</el-button>
+            </div>
+            <el-table :data="deptData" border ref='deptTable' stripe :height="tableH"
+                :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }"
+                :cell-style="tableStyle" style="cursor: default">
+                <el-table-column width="50" label="序号">
+                    <template slot-scope="scope">
+                        {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="deptname" label="部门名称" />
+                <el-table-column prop="deptUrl" label="部门网址" />
+                <el-table-column prop="sortid" label="部门分类" width="110">
+                    <template slot-scope="scope">
+                        {{scope.row.sortid ? '部门' : '街镇'}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" prop="examineState,id" slot="default" width="100px" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button class="but" type="primary" @click="chooseDept(scope.row)">选择</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="deptSizeChange" @current-change="deptCurrentChange"
+                    :current-page="deptSorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="deptSorts.limit"
+                    layout="prev, pager,next,jumper,total,sizes" :total="deptTotal">
+                </el-pagination>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import api from '../../api/index'
+
+    export default {
+        created() {
+            this.getData()
+        },
+        mounted() {},
+        data() {
+            return {
+                tableStyle: {
+                    textAlign: 'center',
+                },
+                tableH: 'calc(100vh - 230px)',
+                // 搜索参数
+                query: {
+                    deptName: '',
+                    chnlid: '',
+                    chnlidName: ''
+                },
+                // 列表数据
+                tableData: [],
+                // 未分配栏目信息数据
+                columnData: [],
+                // 部门信息数据
+                deptData: [],
+                // 总数
+                total: 0,
+                // 栏目总数
+                columnTotal: 0,
+                // 部门总数
+                deptTotal: 0,
+                // 栏目信息界面
+                columnVisible: false,
+                // 部门信息界面
+                deptVisible: false,
+                //新增/迁移栏目界面
+                workDialog: false,
+                //新增/迁移栏目标题
+                workTitle: '新增栏目',
+                // 新增/迁移表单
+                postManagement: {
+                    chnlid: '',
+                    deptid: '',
+                    chnlidname: '',
+                    deptname: ''
+                },
+                // 分页
+                sorts: {
+                    page: 1,
+                    limit: 10,
+                },
+                // 栏目信息分页
+                columnSorts: {
+                    page: 1,
+                    limit: 10,
+                    chnlid: '',
+                    chnlidName: ''
+                },
+                // 部门信息分页
+                deptSorts: {
+                    page: 1,
+                    limit: 10,
+                    deptName: ''
+                }
+            }
+        },
+        methods: {
+            //返回
+            goBackyynn() {
+                this.workDialog = false;
+            },
+            //打开新增栏目界面
+            openAddWork() {
+                this.postManagement = {
+                    deptname: '',
+                    sortid: '',
+                    baseScore: 0,
+                    deptUrl: '',
+                    shortName: '',
+                    leaderperson: '',
+                    leaderphone: '',
+                    workperson: '',
+                    workphone: '',
+                    mainLeader: '',
+                    mainLeaderPhone: ''
+                };
+                this.workTitle = '新增栏目'
+                this.workDialog = true;
+            },
+            //打开修改栏目界面
+            openModifyWorkDialog(data) {
+                this.workTitle = '栏目迁移';
+                this.postManagement = data;
+                this.workDialog = true;
+            },
+            //保存
+            saveWork() {
+                if (!this.postManagement.chnlid) {
+                    this.$message.error('请选择栏目!');
+                    return;
+                }
+                if (!this.postManagement.deptid) {
+                    this.$message.error('请选择部门!');
+                    return;
+                }
+                let fd = new FormData();
+                fd.append('chnlid', this.postManagement.chnlid);
+                fd.append('deptid', this.postManagement.deptid);
+                if (this.workTitle == '栏目迁移') {
+                    fd.append('id', this.postManagement.id);
+                    api.updateChnlidBelong(fd).then(r => {
+                        if (r.data.result) {
+                            this.$message.success('迁移成功');
+                            this.getData();
+                            this.workDialog = false;
+                        } else {
+                            this.$message.error("迁移失败");
+                        }
+                    }).catch(() => {
+                        this.$message.error("迁移失败");
+                    })
+                } else {
+                    api.saveChnlid(fd).then(r => {
+                        if (r.data.result) {
+                            this.$message.success('新增成功');
+                            this.getData();
+                            this.workDialog = false;
+                        } else {
+                            this.$message.error("新增失败");
+                        }
+                    }).catch(() => {
+                        this.$message.error("新增失败");
+                    })
+                }
+            },
+            //查看未分配栏目信息
+            columnInfo() {
+                this.columnVisible = true;
+                this.columnSorts.page = 1;
+                this.columnSorts.limit = 10;
+                this.columnSorts.chnlid = '';
+                this.columnSorts.chnlidName = '';
+                this.getColumnData();
+            },
+            // 搜索未分配栏目信息
+            searchColumn() {
+                this.columnSorts.page = 1;
+                this.getColumnData();
+            },
+            // 获取未分配栏目信息数据
+            getColumnData() {
+                let params = {
+                    page: this.columnSorts.page,
+                    limit: this.columnSorts.limit,
+                    chnlid: this.columnSorts.chnlid,
+                    chnlidName: this.columnSorts.chnlidName
+                }
+                api.getNotVestedChnlid({
+                    params
+                }).then(r => {
+                    this.columnTotal = r.data.count;
+                    this.columnData = r.data.data;
+                })
+            },
+            // 选择未分配栏目
+            chooseColumn(data) {
+                this.postManagement.chnlid = data.chnlid;
+                this.postManagement.chnlidname = data.chnlidname;
+                this.columnVisible = false;
+            },
+            //切换未分配栏目列表条数
+            columnSizeChange(pageSize) {
+                this.columnSorts.limit = pageSize
+                this.columnSorts.page = 1;
+                this.getColumnData();
+            },
+            //切换未分配栏目页码
+            columnCurrentChange(currentPage) {
+                this.$refs.columnTable.bodyWrapper.scrollTop = 0;
+                this.columnSorts.page = currentPage;
+                this.getColumnData();
+            },
+            // 清空未分配栏目输入框
+            resetColumn() {
+                this.columnSorts.chnlid = '';
+                this.columnSorts.chnlidName = '';
+                this.columnSorts.page = 1;
+                this.getColumnData()
+            },
+            // 查看部门信息
+            deptInfo() {
+                this.deptVisible = true;
+                this.deptSorts.page = 1;
+                this.deptSorts.limit = 10;
+                this.deptSorts.deptName = '';
+                this.getDeptData();
+            },
+            // 获取部门信息数据
+            getDeptData() {
+                let params = {
+                    page: this.deptSorts.page,
+                    limit: this.deptSorts.limit,
+                    deptName: this.deptSorts.deptName
+                }
+                api.getDeptPage({
+                    params
+                }).then(r => {
+                    this.deptTotal = r.data.data.count;
+                    this.deptData = r.data.data.data;
+                })
+            },
+            //切换部门条数
+            deptSizeChange(pageSize) {
+                this.deptSorts.limit = pageSize
+                this.deptSorts.page = 1;
+                this.getDeptData();
+            },
+            //切换部门页码
+            deptCurrentChange(currentPage) {
+                this.$refs.deptTable.bodyWrapper.scrollTop = 0;
+                this.deptSorts.page = currentPage;
+                this.getDeptData();
+            },
+            // 选择部门
+            chooseDept(data) {
+                this.postManagement.deptid = data.deptid;
+                this.postManagement.deptname = data.deptname;
+                this.deptVisible = false;
+            },
+            // 搜索部门信息
+            searchDept() {
+                this.deptSorts.page = 1;
+                this.getDeptData();
+            },
+            // 清空部门输入框
+            resetDept() {
+                this.deptSorts.deptName = '';
+                this.deptSorts.page = 1;
+                this.getDeptData()
+            },
+            //切换列表条数
+            handleSizeChange(pageSize) {
+                this.sorts.limit = pageSize
+                this.sorts.page = 1;
+                this.getData();
+            },
+            //切换页码
+            handleCurrentChange(currentPage) {
+                this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
+                this.sorts.page = currentPage;
+                this.getData();
+            },
+            //删除
+            handleDelete(id, index) {
+                this.$confirm("您确定要删除该数据吗?", "提示", {
+                    cancelButtonClass: "btn-custom-cancel",
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    let fd = new FormData();
+                    fd.append('id', id);
+                    api.deleteChnlidById(fd).then(res => {
+                        if (res.data.result) {
+                            this.$message({
+                                type: 'success',
+                                message: '删除成功!'
+                            });
+                            this.tableData.splice(index, 1);
+                            this.getData();
+                        } else {
+                            this.$message({
+                                type: 'info',
+                                message: '删除失败!'
+                            });
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });
+                })
+            },
+            // 获取列表数据
+            getData() {
+                let params = {
+                    page: this.sorts.page,
+                    limit: this.sorts.limit,
+                    deptName: this.query.deptName,
+                    chnlid: this.query.chnlid,
+                    chnlidName: this.query.chnlidName
+                }
+                api.getChnlidListPage({
+                    params
+                }).then(r => {
+                    this.total = r.data.data.count
+                    this.tableData = r.data.data.data
+                })
+            },
+            // 搜索
+            searchData() {
+                this.sorts.page = 1;
+                this.getData()
+            },
+            // 清空输入框
+            reset() {
+                this.query.deptName = '';
+                this.query.chnlid = '';
+                this.query.chnlidName = '';
+                this.sorts.page = 1;
+                this.getData()
+            },
+        },
+    }
+</script>
+
+<style scoped lang="less">
+    /* 禁用后的勾选*/
+    /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
+        border-color: #def5cb;
+    }
+
+    /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
+        background-color: #157de9;
+        border-color: #DCDFE6;
+    }
+
+    /deep/ [data-v-2cde7735] .el-upload-list--picture .el-upload-list__item-name {
+        display: block;
+        margin-top: 0px;
+        margin-left: -78px;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item {
+        display: flex;
+        flex-direction: column-reverse;
+        width: 100%;
+        height: 100%;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-name i {
+        display: none;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-name {
+        display: block;
+        margin-top: 0px;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-thumbnail {
+        width: 100%;
+        height: 100%;
+    }
+
+    /deep/ .el-dialog__body {
+        padding: 0 0 30px 20px;
+        color: #606266;
+        font-size: 14px;
+        word-break: break-all;
+    }
+
+    /deep/ .el-dialog {
+        margin: 0 auto 0;
+    }
+
+    /deep/ .el-form-item__label {
+        padding: 0;
+    }
+
+    .yxnaContent {
+        padding: 10px;
+    }
+
+    .addTitle {
+        font-size: 18px;
+        font-weight: bold;
+        margin-bottom: 10px;
+    }
+
+    /deep/ .btn-custom-cancel {
+        float: right !important;
+        margin-left: 10px !important;
+    }
+
+    .add {
+        width: 66px;
+        height: 38px;
+        margin-left: 0;
+    }
+
+    /deep/ .el-message-box__btns .el-button:nth-child(2) {
+        margin-right: 10px;
+        float: right;
+    }
+
+    /deep/ .el-col-12 {
+        width: 50%;
+        text-align: left;
+    }
+
+    .search {
+        width: 66px;
+        height: 38px;
+        margin-left: 0;
+    }
+
+    /deep/ .el-form-item__label {
+        height: 40px;
+        width: 110px;
+        background-color: #FAFAFA;
+        text-align: center;
+        border: 1px solid #DCDFE6;
+        border-radius: 2px 0 0 2px;
+    }
+
+    /deep/ .el-button.is-disabled {
+        color: #C0C4CC !important;
+    }
+
+    /deep/.el-button--primary.is-disabled {
+        color: #FFF !important;
+    }
+
+    /deep/ .el-input__inner {
+        border-radius: 2px 0 0 2px;
+    }
+
+    .el-select>.el-input {
+        width: 200px;
+    }
+
+    /deep/ .el-textarea__inner {
+        height: 100px;
+    }
+
+
+    /deep/ .el-dialog__title {
+        font-size: 14px;
+    }
+
+    /deep/ .el-pagination__total {
+        margin-left: 10px !important;
+    }
+
+    .el-pagination {
+        margin: 0;
+        margin-top: 10px;
+        /* position: fixed;
+        left: 13rem; */
+    }
+
+    /deep/ .el-table--scrollable-x .el-table__body-wrapper {
+        z-index: 2;
+    }
+
+    .imgBox {
+        width: 100%;
+        /*height: 55vh;*/
+        height: 100%;
+    }
+
+    .but {
+        width: 36px;
+        height: 22px;
+        padding: 0;
+        font-size: 12px;
+    }
+
+    .el-checkbox {
+        margin: 0;
+        margin-right: 10px;
+    }
+
+    /deep/ .bewrite>.el-form-item__label {
+        width: 100%;
+        text-align: left;
+        padding-left: 21px;
+    }
+
+    /deep/ .el-form--inline .el-form-item {
+        margin-right: 0px;
+    }
+
+    /deep/ [data-v-2cde7735] .el-form-item__label {
+        border: 1px solid #DCDFE6;
+        /*border-right: transparent;*/
+    }
+
+    /*    空白框*/
+    /deep/ .formTempBox {
+        height: 38px;
+        border: 1px solid #DCDFE6;
+        width: 100%;
+        border-left: transparent;
+        background-color: #FAFAFA;
+    }
+</style>

+ 1029 - 0
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/src/views/mechanism/Department.vue

@@ -0,0 +1,1029 @@
+<template>
+    <div class="yxnaContent">
+        <!--操作栏-->
+        <div style="display: flex;justify-content: space-between;margin-bottom: 10px">
+            <el-button type="primary" class="add" @click="openAddWork">新增</el-button>
+            <div style="display: flex">
+                <el-input v-model.trim="deptName" clearable placeholder="请输入部门名称" style="margin: 0 10px;width: 200px">
+                </el-input>
+                <el-button type="primary" class="search" @click="getData">搜索</el-button>
+                <el-button type="primary" class="search" @click="reset" style="margin-left: 5px">重置</el-button>
+            </div>
+        </div>
+        <!--表格-->
+        <el-table :data="tableData" border ref='multipleTable' :height="tableH" stripe
+            :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }" :cell-style="tableStyle"
+            style="cursor: default">
+            <el-table-column width="50" label="序号">
+                <template slot-scope="scope">
+                    {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                </template>
+            </el-table-column>
+            <el-table-column prop="deptname" label="部门名称" :show-overflow-tooltip="true" />
+            <el-table-column prop="shortName" label="简称" :show-overflow-tooltip="true" />
+            <el-table-column prop="deptUrl" label="部门网址" :show-overflow-tooltip="true" />
+            <el-table-column prop="baseScore" label="部门基础分值" width="110" />
+            <el-table-column prop="sortid" label="部门分类" width="110">
+                <template slot-scope="scope">
+                    {{scope.row.sortid ? '部门' : '街镇'}}
+                </template>
+            </el-table-column>
+            <el-table-column label="操作" prop="examineState,id" width="230" slot="default" fixed="right">
+                <template slot-scope="scope">
+                    <el-button class="but" type="primary" @click="openDialog(scope.row)">查看</el-button>
+                    <el-button class="but" type="primary" style="width: 60px" @click="columnInfo(scope.row.deptid)">
+                        栏目信息</el-button>
+                    <el-button class="but" type="primary" @click="openModifyWorkDialog(scope.row)">修改</el-button>
+                    <el-button class="but" type="danger" @click="handleDelete(scope.row.deptid, scope.$index)">删除
+                    </el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="block">
+            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                :current-page="sorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="sorts.limit"
+                layout="prev, pager,next,jumper,total,sizes" :total="total">
+            </el-pagination>
+        </div>
+        <!-- 新增/编辑机构 -->
+        <el-dialog :visible.sync="workDialog" width="80%" class="detailDialog" :close="closed()"
+            :close-on-click-modal="false" top="40px">
+            <div slot="title">
+                <div class="addTitle">{{workTitle}}</div>
+            </div>
+            <div style="height:65vh;overflow: auto;padding-right: 20px">
+                <el-form :model="postManagement" label-width="140px" ref="workForm" :rules="workFormRules">
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门名称" prop="deptname">
+                                <el-input v-model="postManagement.deptname" placeholder="请输入部门名称" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门分类名称" prop="sortid">
+                                <el-select v-model="postManagement.sortid" @change="handleSelectChange"
+                                    placeholder="请选择部门分类名称" style="width: 100%">
+                                    <el-option v-for="(el, index) in typeSelectData" :key="index" :label="el.label"
+                                        :value="el.value"></el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="基础积分" prop="baseScore">
+                                <el-input-number v-model="postManagement.baseScore" :min="0" :max="100" label="请输入基础积分">
+                                </el-input-number>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门网址" prop="deptUrl">
+                                <el-input v-model="postManagement.deptUrl" placeholder="请输入部门网址" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门简称" prop="shortName">
+                                <el-input v-model="postManagement.shortName" placeholder="请输入部门简称" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="主要领导" prop="mainLeader">
+                                <el-input v-model="postManagement.mainLeader" placeholder="请输入主要领导" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="主要领导电话" prop="mainLeaderPhone">
+                                <el-input v-model="postManagement.mainLeaderPhone" placeholder="请输入主要领导电话" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="分管领导" prop="leaderperson">
+                                <el-input v-model="postManagement.leaderperson" placeholder="分管领导" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="分管领导电话" prop="leaderphone">
+                                <el-input v-model="postManagement.leaderphone" placeholder="请输入分管领导电话" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工作人员" prop="workperson">
+                                <el-input v-model="postManagement.workperson" placeholder="请输入工作人员" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工作人员电话" prop="workphone">
+                                <el-input v-model="postManagement.workphone" placeholder="请输入工作人员电话" clearable>
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" size="mini" @click="saveWork">提交</el-button>
+                <el-button @click="goBackyynn" size="mini">返回</el-button>
+            </div>
+        </el-dialog>
+        <!--查看详细-->
+        <el-dialog :visible.sync="dialogTableVisible" :append-to-body="true" class="detailDialog" width="80%"
+            top="40px">
+            <div slot="title">
+                <div class="addTitle">查看机构详情</div>
+            </div>
+            <div style="height: 65vh;overflow: auto;padding-right: 20px">
+                <el-form :model="tableDetail" class="demo-form-inline" label-width="130px">
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门名称">
+                                <el-input disabled v-model="tableDetail.deptname" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门分类名称">
+                                <el-input disabled v-model="tableDetail.sortid ? '部门' : '街镇'" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="简称">
+                                <el-input disabled v-model="tableDetail.shortName" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="主要领导">
+                                <el-input disabled v-model="tableDetail.mainLeader" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="主要领导电话">
+                                <el-input disabled v-model="tableDetail.mainLeaderPhone" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="分管领导">
+                                <el-input disabled v-model="tableDetail.leaderperson" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="分管领导联系电话">
+                                <el-input disabled v-model="tableDetail.leaderphone" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工作人员">
+                                <el-input disabled v-model="tableDetail.workperson" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工作人员联系电话">
+                                <el-input disabled v-model="tableDetail.workphone" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门网址">
+                                <el-input disabled v-model="tableDetail.deptUrl" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门基础分值">
+                                <el-input disabled v-model="tableDetail.baseScore" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </div>
+        </el-dialog>
+        <!--栏目信息-->
+        <el-dialog :visible.sync="columnVisible" :append-to-body="true" style="margin: 10px auto!important" width="80%"
+            top="10px">
+            <div slot="title">
+                <div class="addTitle">栏目信息</div>
+            </div>
+            <el-table :data="columnData" border ref='columnTable' stripe :height="tableH"
+                :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }"
+                :cell-style="tableStyle" style="cursor: default">
+                <el-table-column width="50" label="序号">
+                    <template slot-scope="scope">
+                        {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="chnlid" label="栏目ID" />
+                <el-table-column prop="chnlidname" label="栏目名称" />
+                <el-table-column label="操作" prop="examineState,id" slot="default" width="200px" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button class="but" type="primary" style="width: 70px" @click="columnWorkDialog(scope.row)">
+                            栏目迁移</el-button>
+                        <el-button class="but" type="danger" @click="columnDelete(scope.row.id, scope.$index)">删除
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="columnSizeChange" @current-change="columnCurrentChange"
+                    :current-page="columnSorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="columnSorts.limit"
+                    layout="prev, pager,next,jumper,total,sizes" :total="columnTotal">
+                </el-pagination>
+            </div>
+        </el-dialog>
+        <!-- 栏目迁移 -->
+        <el-dialog :visible.sync="columnMigrationDialog" width="80%" class="detailDialog" :close-on-click-modal="false"
+            top="40px">
+            <div slot="title">
+                <div class="addTitle">栏目迁移</div>
+            </div>
+            <div style="height:65vh;overflow: auto;padding-right: 20px">
+                <el-form :model="migration" label-width="140px">
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="栏目ID" prop="chnlid">
+                                <el-input v-model="migration.chnlid" disabled placeholder="请选择栏目ID">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="栏目名称" prop="chnlidname">
+                                <el-input v-model="migration.chnlidname" disabled placeholder="请选择栏目名称">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="部门名称" prop="deptname">
+                                <el-input v-model="migration.deptname" disabled placeholder="请选择部门名称">
+                                </el-input>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="6" style="margin-left: 10px">
+                            <el-button type="primary" @click="deptInfo">选择部门</el-button>
+                        </el-col>
+                    </el-row>
+                </el-form>
+            </div>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" size="mini" @click="migrationColumn">提交</el-button>
+                <el-button @click="columnMigrationDialog = false" size="mini">返回</el-button>
+            </div>
+        </el-dialog>
+        <!--部门信息-->
+        <el-dialog :visible.sync="deptVisible" :append-to-body="true" style="margin: 10px auto!important" width="80%"
+            top="10px">
+            <div slot="title">
+                <div class="addTitle">部门信息</div>
+            </div>
+            <div style="float: right;margin-bottom: 10px;margin-right: 10px">
+                <label>部门名称</label>
+                <el-input v-model.trim="deptSorts.deptName" clearable placeholder="请输入部门名称"
+                    style="margin: 0 10px;width: 200px" />
+                <el-button type="primary" class="search" @click="searchDept">搜索</el-button>
+                <el-button type="primary" class="search" @click="resetDept" style="margin-left: 5px">重置</el-button>
+            </div>
+            <el-table :data="deptData" border ref='deptTable' stripe :height="tableH"
+                :header-cell-style="{ background: '#e5e8ed', color: '#666', textAlign: 'center' }"
+                :cell-style="tableStyle" style="cursor: default">
+                <el-table-column width="50" label="序号">
+                    <template slot-scope="scope">
+                        {{ (sorts.page - 1) * sorts.limit + scope.$index + 1 }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="deptname" label="部门名称" />
+                <el-table-column prop="deptUrl" label="部门网址" />
+                <el-table-column prop="sortid" label="部门分类" width="110">
+                    <template slot-scope="scope">
+                        {{scope.row.sortid ? '部门' : '街镇'}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" prop="examineState,id" slot="default" width="100px" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button class="but" type="primary" @click="chooseDept(scope.row)">选择</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="deptSizeChange" @current-change="deptCurrentChange"
+                    :current-page="deptSorts.page" :page-sizes="[10, 20, 30, 40, 50]" :page-size="deptSorts.limit"
+                    layout="prev, pager,next,jumper,total,sizes" :total="deptTotal">
+                </el-pagination>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import api from '../../api/index'
+
+    export default {
+        created() {
+            this.getData()
+        },
+        mounted() {},
+        data() {
+            return {
+                tableStyle: {
+                    textAlign: 'center',
+                },
+                tableH: 'calc(100vh - 230px)',
+                // 搜索参数
+                deptName: '',
+                // 列表数据
+                tableData: [],
+                // 栏目信息数据
+                columnData: [],
+                // 部门信息
+                deptData: [],
+                // 总数
+                total: 0,
+                // 信息栏目总数
+                columnTotal: 0,
+                // 信息栏目总数
+                deptTotal: 0,
+                // 查看详细界面
+                dialogTableVisible: false,
+                // 栏目信息界面
+                columnVisible: false,
+                //新增/编辑机构界面
+                workDialog: false,
+                //部门界面
+                deptVisible: false,
+                //新增/编辑机构标题
+                workTitle: '新增机构',
+                // 栏目迁移界面
+                columnMigrationDialog: false,
+                // 栏目迁移表单
+                migration: {
+                    chnlid: '',
+                    deptid: '',
+                    chnlidname: '',
+                    deptname: '',
+                    id: ''
+                },
+                // 新增/编辑表单
+                postManagement: {
+                    deptname: '',
+                    sortid: '',
+                    baseScore: 0,
+                    deptUrl: '',
+                    shortName: '',
+                    leaderperson: '',
+                    leaderphone: '',
+                    workperson: '',
+                    workphone: '',
+                    mainLeader: '',
+                    mainLeaderPhone: ''
+                },
+                // 新增/编辑校验规则
+                workFormRules: {
+                    mainLeaderPhone: [{
+                            min: 11,
+                            max: 11,
+                            message: '请输入11位主要领导电话',
+                            trigger: 'blur'
+                        },
+                        {
+                            pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
+                            message: '格式不正确',
+                            trigger: 'blur'
+                        }
+                    ],
+                    leaderphone: [{
+                            min: 11,
+                            max: 11,
+                            message: '请输入11位分管领导电话',
+                            trigger: 'blur'
+                        },
+                        {
+                            pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
+                            message: '格式不正确',
+                            trigger: 'blur'
+                        }
+                    ],
+                    workphone: [{
+                            min: 11,
+                            max: 11,
+                            message: '请输入11位工作人员电话',
+                            trigger: 'blur'
+                        },
+                        {
+                            pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
+                            message: '格式不正确',
+                            trigger: 'blur'
+                        }
+                    ]
+                },
+                // 类型选择框
+                typeSelectData: [{
+                        label: '街镇',
+                        value: '0'
+                    },
+                    {
+                        label: '部门',
+                        value: '1'
+                    }
+                ],
+                // 详细内容
+                tableDetail: {},
+                // 分页
+                sorts: {
+                    page: 1,
+                    limit: 10,
+                },
+                // 栏目信息分页
+                columnSorts: {
+                    page: 1,
+                    limit: 10,
+                },
+                // 部门信息分页
+                deptSorts: {
+                    page: 1,
+                    limit: 10,
+                    deptName: ''
+                },
+                // 栏目信息ID
+                deptId: '',
+            }
+        },
+        methods: {
+            // 处理回显问题
+            handleSelectChange() {
+                this.$forceUpdate()
+            },
+            // 处理校验问题
+            closed() {
+                if (this.$refs.workForm) {
+                    this.$refs.workForm.clearValidate();
+                }
+            },
+            //返回
+            goBackyynn() {
+                this.workDialog = false;
+                this.$nextTick(() => {
+                    if (this.$refs.workForm) {
+                        this.$refs.workForm.clearValidate();
+                    }
+                })
+            },
+            //打开新增机构界面
+            openAddWork() {
+                this.postManagement = {
+                    deptname: '',
+                    sortid: '',
+                    baseScore: 0,
+                    deptUrl: '',
+                    shortName: '',
+                    leaderperson: '',
+                    leaderphone: '',
+                    workperson: '',
+                    workphone: '',
+                    mainLeader: '',
+                    mainLeaderPhone: ''
+                };
+                this.workTitle = '新增机构'
+                this.workDialog = true;
+            },
+            //打开修改机构界面
+            openModifyWorkDialog(data) {
+                this.workTitle = '编辑机构';
+                this.postManagement = data;
+                this.postManagement.sortid = this.postManagement.sortid ? '1' : '0';
+                this.workDialog = true;
+            },
+            //保存
+            saveWork() {
+                if (!this.postManagement.deptname) {
+                    this.$message.error('请输入部门名称!');
+                    return;
+                }
+                if (!this.postManagement.sortid) {
+                    this.$message.error('请选择部门分类名称!');
+                    return;
+                }
+                if (!this.postManagement.deptUrl) {
+                    this.$message.error('请输入部门网址!');
+                    return;
+                }
+                if (!this.postManagement.shortName) {
+                    this.$message.error('请输入部门简称!');
+                    return;
+                }
+                if (!this.postManagement.mainLeader) {
+                    this.$message.error('请输入主要领导!');
+                    return;
+                }
+                if (!this.postManagement.mainLeaderPhone) {
+                    this.$message.error('请输入主要领导电话!');
+                    return;
+                }
+                if (!this.postManagement.leaderperson) {
+                    this.$message.error('请输入分管领导!');
+                    return;
+                }
+                if (!this.postManagement.leaderphone) {
+                    this.$message.error('请输入分管领导电话!');
+                    return;
+                }
+                if (!this.postManagement.workperson) {
+                    this.$message.error('请输入工作人员');
+                    return;
+                }
+                if (!this.postManagement.workphone) {
+                    this.$message.error('请输入工作人员电话!');
+                    return;
+                }
+                let fd = new FormData();
+                fd.append('deptname', this.postManagement.deptname);
+                fd.append('sortid', this.postManagement.sortid);
+                fd.append('baseScore', this.postManagement.baseScore);
+                fd.append('deptUrl', this.postManagement.deptUrl);
+                fd.append('shortName', this.postManagement.shortName);
+                fd.append('leaderperson', this.postManagement.leaderperson);
+                fd.append('leaderphone', this.postManagement.leaderphone);
+                fd.append('workperson', this.postManagement.workperson);
+                fd.append('workphone', this.postManagement.workphone);
+                fd.append('mainLeader', this.postManagement.mainLeader);
+                fd.append('mainLeaderPhone', this.postManagement.mainLeaderPhone);
+                this.$refs.workForm.validate(valid => {
+                    if (valid) {
+                        if (this.workTitle == '编辑机构') {
+                            fd.append('deptid', this.postManagement.deptid);
+                            api.updateDeptById(fd).then(r => {
+                                if (r.data.result) {
+                                    this.$message.success('修改成功');
+                                    this.getData();
+                                    this.workDialog = false;
+                                } else {
+                                    this.$message.error("修改失败");
+                                }
+                            }).catch(() => {
+                                this.$message.error("修改失败");
+                            })
+                        } else {
+                            api.saveDept(fd).then(r => {
+                                if (r.data.result) {
+                                    this.$message.success('新增成功');
+                                    this.getData();
+                                    this.workDialog = false;
+                                } else {
+                                    this.$message.error("新增失败");
+                                }
+                            }).catch(() => {
+                                this.$message.error("新增失败");
+                            })
+                        }
+                    } else {
+                        this.$message.error('信息有误')
+                    }
+                })
+            },
+            //查看栏目信息
+            columnInfo(id) {
+                this.deptId = id;
+                this.columnVisible = true;
+                this.columnSorts.page = 1;
+                this.columnSorts.limit = 10;
+                this.getColumnData();
+            },
+            // 获取栏目信息数据
+            getColumnData() {
+                let params = {
+                    page: this.columnSorts.page,
+                    limit: this.columnSorts.limit,
+                    deptid: this.deptId
+                }
+                api.getChnlidListByDeptid({
+                    params
+                }).then(r => {
+                    this.columnTotal = r.data.data.count;
+                    this.columnData = r.data.data.data;
+                })
+            },
+            // 打开栏目迁移界面
+            columnWorkDialog(data) {
+                this.migration.chnlid = data.chnlid;
+                this.migration.chnlidname = data.chnlidname;
+                this.migration.deptid = data.deptid;
+                this.migration.deptname = data.deptname;
+                this.migration.id = data.id;
+                this.columnMigrationDialog = true;
+            },
+            // 查看部门信息
+            deptInfo() {
+                this.deptVisible = true;
+                this.deptSorts.page = 1;
+                this.deptSorts.limit = 10;
+                this.deptSorts.deptName = '';
+                this.getDeptData();
+            },
+            // 获取部门信息数据
+            getDeptData() {
+                let params = {
+                    page: this.deptSorts.page,
+                    limit: this.deptSorts.limit,
+                    deptName: this.deptSorts.deptName
+                }
+                api.getDeptPage({
+                    params
+                }).then(r => {
+                    this.deptTotal = r.data.data.count;
+                    this.deptData = r.data.data.data;
+                })
+            },
+            //切换部门条数
+            deptSizeChange(pageSize) {
+                this.deptSorts.limit = pageSize
+                this.deptSorts.page = 1;
+                this.getDeptData();
+            },
+            //切换部门页码
+            deptCurrentChange(currentPage) {
+                this.$refs.deptTable.bodyWrapper.scrollTop = 0;
+                this.deptSorts.page = currentPage;
+                this.getDeptData();
+            },
+            // 选择部门
+            chooseDept(data) {
+                this.migration.deptid = data.deptid;
+                this.migration.deptname = data.deptname;
+                this.deptVisible = false;
+            },
+            // 搜索部门信息
+            searchDept() {
+                this.deptSorts.page = 1;
+                this.getDeptData();
+            },
+            // 清空部门输入框
+            resetDept() {
+                this.deptSorts.deptName = '';
+                this.deptSorts.page = 1;
+                this.getDeptData()
+            },
+            // 迁移栏目
+            migrationColumn() {
+                if (!this.migration.chnlid) {
+                    this.$message.error('请选择栏目!');
+                    return;
+                }
+                if (!this.migration.deptid) {
+                    this.$message.error('请选择部门!');
+                    return;
+                }
+                let fd = new FormData();
+                fd.append('deptid', this.migration.deptid);
+                fd.append('id', this.migration.id);
+                api.updateChnlidBelong(fd).then(r => {
+                    if (r.data.result) {
+                        this.$message.success('迁移成功');
+                        if (this.columnTotal % 10 == 1) {
+                            this.columnSorts.page--;
+                        }
+                        this.getColumnData();
+                        this.columnMigrationDialog = false;
+                    } else {
+                        this.$message.error("迁移失败");
+                    }
+                }).catch(() => {
+                    this.$message.error("迁移失败");
+                })
+
+            },
+            // 删除栏目
+            columnDelete(id, index) {
+                this.$confirm("您确定要删除该数据吗?", "提示", {
+                    cancelButtonClass: "btn-custom-cancel",
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    let fd = new FormData();
+                    fd.append('id', id);
+                    api.deleteChnlidById(fd).then(res => {
+                        if (res.data.result) {
+                            this.$message({
+                                type: 'success',
+                                message: '删除成功!'
+                            });
+                            this.columnData.splice(index, 1);
+                            this.getColumnData();
+                        } else {
+                            this.$message({
+                                type: 'info',
+                                message: '删除失败!'
+                            });
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });
+                })
+            },
+            //切换列表条数
+            columnSizeChange(pageSize) {
+                this.columnSorts.limit = pageSize
+                this.columnSorts.page = 1;
+                this.getColumnData();
+            },
+            //切换页码
+            columnCurrentChange(currentPage) {
+                this.$refs.columnTable.bodyWrapper.scrollTop = 0;
+                this.columnSorts.page = currentPage;
+                this.getColumnData();
+            },
+            //切换列表条数
+            handleSizeChange(pageSize) {
+                this.sorts.limit = pageSize
+                this.sorts.page = 1;
+                this.getData();
+            },
+            //切换页码
+            handleCurrentChange(currentPage) {
+                this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
+                this.sorts.page = currentPage;
+                this.getData();
+            },
+            //删除
+            handleDelete(id, index) {
+                this.$confirm("您确定要删除该数据吗?", "提示", {
+                    cancelButtonClass: "btn-custom-cancel",
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    let fd = new FormData();
+                    fd.append('deptid', id);
+                    api.deleteDeptById(fd).then(res => {
+                        if (res.data.result) {
+                            this.$message({
+                                type: 'success',
+                                message: '删除成功!'
+                            });
+                            this.tableData.splice(index, 1);
+                            this.getData();
+                        } else {
+                            this.$message({
+                                type: 'info',
+                                message: '删除失败!'
+                            });
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });
+                })
+            },
+            //查看
+            openDialog(data) {
+                this.dialogTableVisible = true;
+                this.tableDetail = data;
+            },
+            // 获取列表数据
+            getData() {
+                let params = {
+                    page: this.sorts.page,
+                    limit: this.sorts.limit,
+                    deptName: this.deptName
+                }
+                api.getDeptPage({
+                    params
+                }).then(r => {
+                    this.total = r.data.data.count
+                    this.tableData = r.data.data.data
+                })
+            },
+            // 清空输入框
+            reset() {
+                this.deptName = ''
+                this.sorts.page = 1;
+                this.getData()
+            }
+        },
+    }
+</script>
+
+<style scoped lang="less">
+    /* 禁用后的勾选*/
+    /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
+        border-color: #def5cb;
+    }
+
+    /deep/ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
+        background-color: #157de9;
+        border-color: #DCDFE6;
+    }
+
+    /deep/ [data-v-2cde7735] .el-upload-list--picture .el-upload-list__item-name {
+        display: block;
+        margin-top: 0px;
+        margin-left: -78px;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item {
+        display: flex;
+        flex-direction: column-reverse;
+        width: 100%;
+        height: 100%;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-name i {
+        display: none;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-name {
+        display: block;
+        margin-top: 0px;
+    }
+
+    /deep/ .el-upload-list--picture .el-upload-list__item-thumbnail {
+        width: 100%;
+        height: 100%;
+    }
+
+    /deep/ .el-dialog__body {
+        padding: 0 0 30px 20px;
+        color: #606266;
+        font-size: 14px;
+        word-break: break-all;
+    }
+
+    /deep/ .el-form-item__label {
+        padding: 0;
+    }
+
+    .yxnaContent {
+        padding: 10px;
+    }
+
+    .addTitle {
+        font-size: 18px;
+        font-weight: bold;
+        margin-bottom: 10px;
+    }
+
+    /deep/ .btn-custom-cancel {
+        float: right !important;
+        margin-left: 10px !important;
+    }
+
+    .add {
+        width: 66px;
+        height: 38px;
+        margin-left: 0;
+    }
+
+    /deep/ .el-message-box__btns .el-button:nth-child(2) {
+        margin-right: 10px;
+        float: right;
+    }
+
+    /deep/ .el-col-12 {
+        width: 50%;
+        text-align: left;
+    }
+
+    .search {
+        width: 66px;
+        height: 38px;
+        margin-left: 0;
+    }
+
+    /deep/ .el-form-item__label {
+        height: 40px;
+        width: 110px;
+        background-color: #FAFAFA;
+        text-align: center;
+        border: 1px solid #DCDFE6;
+        border-radius: 2px 0 0 2px;
+    }
+
+    /deep/ .el-button.is-disabled {
+        color: #C0C4CC !important;
+    }
+
+    /deep/.el-button--primary.is-disabled {
+        color: #FFF !important;
+    }
+
+    /deep/ .el-input__inner {
+        border-radius: 2px 0 0 2px;
+    }
+
+    .el-select>.el-input {
+        width: 200px;
+    }
+
+    /deep/ .el-textarea__inner {
+        height: 100px;
+    }
+
+
+    /deep/ .el-dialog__title {
+        font-size: 14px;
+    }
+
+    /deep/ .el-pagination__total {
+        margin-left: 10px !important;
+    }
+
+    .el-pagination {
+        margin: 0;
+        margin-top: 10px;
+        /* position: fixed;
+        left: 13rem; */
+    }
+
+    /deep/ .el-table--scrollable-x .el-table__body-wrapper {
+        z-index: 2;
+    }
+
+    .imgBox {
+        width: 100%;
+        /*height: 55vh;*/
+        height: 100%;
+    }
+
+    .but {
+        width: 36px;
+        height: 22px;
+        padding: 0;
+        font-size: 12px;
+    }
+
+    .el-checkbox {
+        margin: 0;
+        margin-right: 10px;
+    }
+
+    /deep/ .bewrite>.el-form-item__label {
+        width: 100%;
+        text-align: left;
+        padding-left: 21px;
+    }
+
+    /deep/ .el-form--inline .el-form-item {
+        margin-right: 0px;
+    }
+
+    /deep/ [data-v-2cde7735] .el-form-item__label {
+        border: 1px solid #DCDFE6;
+        /*border-right: transparent;*/
+    }
+
+    /*    空白框*/
+    /deep/ .formTempBox {
+        height: 38px;
+        border: 1px solid #DCDFE6;
+        width: 100%;
+        border-left: transparent;
+        background-color: #FAFAFA;
+    }
+</style>

+ 2 - 2
nngkxxdp/src/main/resources/static/naqwzsjtj/naqwzsjtj/vue.config.js

@@ -14,9 +14,9 @@ module.exports = {
         open: true,
         proxy: {
             '/': {
-                // target:'http://192.168.0.230:7777/',//开发
+                target:'http://192.168.0.230:7777/',//开发
                 // target:'http://192.168.0.7:7777/',//开发
-                target:'http://192.168.1.253:7777/',//测试
+                // target:'http://192.168.1.253:7777/',//测试
                 // target:'http://data.cqna.gov.cn/',//线上
                 changeOrigin: true,
                 pathRewrite: {