Browse Source

feat:改了点bug

xzh 4 years ago
parent
commit
b7015cdbe4

+ 1 - 1
config/index.js

@@ -12,7 +12,7 @@ module.exports = {
     proxyTable: {},
 
     // Various Dev Server settings
-    host: '192.168.0.172', // can be overwritten by process.env.HOST
+    host: '0.0.0.0', // can be overwritten by process.env.HOST
     port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     autoOpenBrowser: false,
     errorOverlay: true,

BIN
dist.rar


+ 418 - 57
package-lock.json

@@ -436,8 +436,8 @@
     },
     "async-validator": {
       "version": "1.8.5",
-      "resolved": "http://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz",
-      "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
       "requires": {
         "babel-runtime": "6.x"
       }
@@ -462,6 +462,38 @@
         "postcss-value-parser": "^3.2.3"
       }
     },
+    "axios": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
+      "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+          "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+          "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
+        }
+      }
+    },
     "babel-code-frame": {
       "version": "6.26.0",
       "resolved": "http://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz",
@@ -1388,6 +1420,11 @@
       "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=",
       "dev": true
     },
+    "basic-auth": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
+      "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
+    },
     "batch": {
       "version": "0.6.1",
       "resolved": "http://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
@@ -1408,8 +1445,7 @@
     "big.js": {
       "version": "3.2.0",
       "resolved": "http://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz",
-      "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
-      "dev": true
+      "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4="
     },
     "binary-extensions": {
       "version": "1.12.0",
@@ -2237,6 +2273,11 @@
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
       "dev": true
     },
+    "corser": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
+      "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c="
+    },
     "cosmiconfig": {
       "version": "4.0.0",
       "resolved": "http://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-4.0.0.tgz",
@@ -2692,8 +2733,7 @@
     "deep-equal": {
       "version": "1.0.1",
       "resolved": "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz",
-      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
-      "dev": true
+      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
     },
     "deep-is": {
       "version": "0.1.3",
@@ -2703,8 +2743,8 @@
     },
     "deepmerge": {
       "version": "1.5.2",
-      "resolved": "http://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz",
-      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
     },
     "define-properties": {
       "version": "1.1.3",
@@ -2924,6 +2964,14 @@
         }
       }
     },
+    "dom7": {
+      "version": "3.0.0-alpha.9",
+      "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0-alpha.9.tgz",
+      "integrity": "sha512-wTxPe1vJqLAy2PzAROh/n1PsRF/ZklAJyRIn9shm2dAQjP4JhjsgDKQ1YTbuzf1KVlqOlqYPmwupQExcB9jOUg==",
+      "requires": {
+        "ssr-window": "^3.0.0-alpha.1"
+      }
+    },
     "domain-browser": {
       "version": "1.2.0",
       "resolved": "http://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz",
@@ -2973,6 +3021,32 @@
         "stream-shift": "^1.0.0"
       }
     },
+    "echarts": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz",
+      "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
+      "requires": {
+        "zrender": "4.3.2"
+      }
+    },
+    "ecstatic": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz",
+      "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==",
+      "requires": {
+        "he": "^1.1.1",
+        "mime": "^1.6.0",
+        "minimist": "^1.1.0",
+        "url-join": "^2.0.5"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+        }
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
@@ -2992,9 +3066,9 @@
       "dev": true
     },
     "element-ui": {
-      "version": "2.4.9",
-      "resolved": "http://registry.npm.taobao.org/element-ui/download/element-ui-2.4.9.tgz",
-      "integrity": "sha1-t8nJbaBvGCxqT+f1CLjI7xpRZzI=",
+      "version": "2.13.2",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz",
+      "integrity": "sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==",
       "requires": {
         "async-validator": "~1.8.1",
         "babel-helper-vue-jsx-merge-props": "^2.0.0",
@@ -3022,8 +3096,7 @@
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "http://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
-      "dev": true
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
     },
     "encodeurl": {
       "version": "1.0.2",
@@ -3062,7 +3135,6 @@
       "version": "0.1.7",
       "resolved": "http://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
       "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
-      "dev": true,
       "requires": {
         "prr": "~1.0.1"
       }
@@ -3732,8 +3804,7 @@
     "extend": {
       "version": "3.0.2",
       "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
-      "dev": true
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
     },
     "extend-shallow": {
       "version": "3.0.2",
@@ -3856,6 +3927,11 @@
       "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
       "dev": true
     },
+    "fast-diff": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
+      "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
+    },
     "fast-json-stable-stringify": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
@@ -4056,7 +4132,6 @@
       "version": "1.5.9",
       "resolved": "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.9.tgz",
       "integrity": "sha1-ye2ddIuBSjlTVxblMbkZaoRdicY=",
-      "dev": true,
       "requires": {
         "debug": "=3.1.0"
       },
@@ -4065,7 +4140,6 @@
           "version": "3.1.0",
           "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
           "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
-          "dev": true,
           "requires": {
             "ms": "2.0.0"
           }
@@ -4194,7 +4268,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -4215,12 +4290,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -4235,17 +4312,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4362,7 +4442,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -4374,6 +4455,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -4388,6 +4470,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -4395,12 +4478,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
@@ -4419,6 +4504,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -4499,7 +4585,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -4511,6 +4598,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -4596,7 +4684,8 @@
         "safe-buffer": {
           "version": "5.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -4632,6 +4721,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -4651,6 +4741,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -4694,12 +4785,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -4833,8 +4926,7 @@
     "graceful-fs": {
       "version": "4.1.15",
       "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz",
-      "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=",
-      "dev": true
+      "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
     },
     "growly": {
       "version": "1.3.0",
@@ -4949,8 +5041,7 @@
     "he": {
       "version": "1.2.0",
       "resolved": "http://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
-      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
-      "dev": true
+      "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8="
     },
     "hmac-drbg": {
       "version": "1.0.1",
@@ -5241,6 +5332,94 @@
         }
       }
     },
+    "http-server": {
+      "version": "0.12.3",
+      "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz",
+      "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==",
+      "requires": {
+        "basic-auth": "^1.0.3",
+        "colors": "^1.4.0",
+        "corser": "^2.0.1",
+        "ecstatic": "^3.3.2",
+        "http-proxy": "^1.18.0",
+        "minimist": "^1.2.5",
+        "opener": "^1.5.1",
+        "portfinder": "^1.0.25",
+        "secure-compare": "3.0.1",
+        "union": "~0.5.0"
+      },
+      "dependencies": {
+        "async": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+          "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+          "requires": {
+            "lodash": "^4.17.14"
+          }
+        },
+        "colors": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+          "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
+        },
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "eventemitter3": {
+          "version": "4.0.7",
+          "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+          "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+        },
+        "http-proxy": {
+          "version": "1.18.1",
+          "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+          "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+          "requires": {
+            "eventemitter3": "^4.0.0",
+            "follow-redirects": "^1.0.0",
+            "requires-port": "^1.0.0"
+          }
+        },
+        "lodash": {
+          "version": "4.17.20",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+        },
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        },
+        "portfinder": {
+          "version": "1.0.28",
+          "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+          "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+          "requires": {
+            "async": "^2.6.2",
+            "debug": "^3.1.1",
+            "mkdirp": "^0.5.5"
+          }
+        }
+      }
+    },
     "https-browserify": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz",
@@ -5289,6 +5468,12 @@
       "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
       "dev": true
     },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "optional": true
+    },
     "import-cwd": {
       "version": "2.1.0",
       "resolved": "http://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
@@ -5738,6 +5923,11 @@
       "integrity": "sha1-dIkR+wT0imDEdxs3XKxFqA3xHAM=",
       "dev": true
     },
+    "js-cookie": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
+      "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
+    },
     "js-tokens": {
       "version": "3.0.2",
       "resolved": "http://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz",
@@ -5793,8 +5983,7 @@
     "json5": {
       "version": "0.5.1",
       "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
-      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
-      "dev": true
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
     },
     "killable": {
       "version": "1.0.1",
@@ -5836,6 +6025,61 @@
         "invert-kv": "^1.0.0"
       }
     },
+    "less": {
+      "version": "3.12.2",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz",
+      "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==",
+      "requires": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "native-request": "^1.0.5",
+        "source-map": "~0.6.0",
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+          "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+          "optional": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "pify": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
+      "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^4.0.1"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        },
+        "pify": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+        }
+      }
+    },
     "levn": {
       "version": "0.3.0",
       "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
@@ -5927,7 +6171,6 @@
       "version": "1.1.0",
       "resolved": "http://registry.npm.taobao.org/loader-utils/download/loader-utils-1.1.0.tgz",
       "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
-      "dev": true,
       "requires": {
         "big.js": "^3.1.3",
         "emojis-list": "^2.0.0",
@@ -6267,8 +6510,7 @@
     "mime": {
       "version": "1.6.0",
       "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
-      "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
-      "dev": true
+      "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE="
     },
     "mime-db": {
       "version": "1.37.0",
@@ -6383,8 +6625,7 @@
     "ms": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
     "multicast-dns": {
       "version": "6.2.3",
@@ -6442,6 +6683,12 @@
         }
       }
     },
+    "native-request": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz",
+      "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==",
+      "optional": true
+    },
     "natural-compare": {
       "version": "1.4.0",
       "resolved": "http://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
@@ -6716,8 +6963,7 @@
     "opener": {
       "version": "1.5.1",
       "resolved": "http://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz",
-      "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=",
-      "dev": true
+      "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0="
     },
     "opn": {
       "version": "5.4.0",
@@ -6864,6 +7110,11 @@
         "no-case": "^2.2.0"
       }
     },
+    "parchment": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
+      "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
+    },
     "parse-asn1": {
       "version": "5.1.1",
       "resolved": "http://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.1.tgz",
@@ -9195,8 +9446,7 @@
     "prr": {
       "version": "1.0.1",
       "resolved": "http://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
     },
     "pseudomap": {
       "version": "1.0.2",
@@ -9254,8 +9504,7 @@
     "qs": {
       "version": "6.5.2",
       "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
-      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
-      "dev": true
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
     },
     "query-string": {
       "version": "4.3.4",
@@ -9285,6 +9534,41 @@
       "integrity": "sha1-fe2N+/eHncxg0KZErGdUsoOtF+8=",
       "dev": true
     },
+    "quill": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
+      "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
+      "requires": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        },
+        "eventemitter3": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+          "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
+        }
+      }
+    },
+    "quill-delta": {
+      "version": "3.6.3",
+      "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
+      "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
+      "requires": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      }
+    },
     "randomatic": {
       "version": "3.1.1",
       "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz",
@@ -9652,13 +9936,12 @@
     "requires-port": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
     },
     "resize-observer-polyfill": {
-      "version": "1.5.0",
-      "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.0.tgz",
-      "integrity": "sha1-Zg/x2XEqI4K6osrUUKRxYgn5ymk="
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
     },
     "resolve": {
       "version": "1.8.1",
@@ -9811,6 +10094,11 @@
         "ajv": "^5.0.0"
       }
     },
+    "secure-compare": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
+      "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM="
+    },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
@@ -9829,8 +10117,7 @@
     "semver": {
       "version": "5.6.0",
       "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.6.0.tgz",
-      "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ=",
-      "dev": true
+      "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ="
     },
     "send": {
       "version": "0.16.2",
@@ -10150,6 +10437,11 @@
         "is-plain-obj": "^1.0.0"
       }
     },
+    "sortablejs": {
+      "version": "1.11.2-alpha.3",
+      "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.11.2-alpha.3.tgz",
+      "integrity": "sha512-sX/cttekU7IQDvUGNsRIKDB1MXhd0OfR2OOsluusrZHIPwAKS8OSeGlNXONjcd3vsc3o6t8VakT0KpwnKMm6PQ=="
+    },
     "source-list-map": {
       "version": "2.0.1",
       "resolved": "http://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
@@ -10159,8 +10451,7 @@
     "source-map": {
       "version": "0.6.1",
       "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
-      "dev": true
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
     },
     "source-map-resolve": {
       "version": "0.5.2",
@@ -10274,6 +10565,11 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
+    "ssr-window": {
+      "version": "3.0.0-alpha.4",
+      "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0-alpha.4.tgz",
+      "integrity": "sha512-+dBRP/pZ+VyITxTzD0lMDzDwN/BmfUl8xi2e6t5Nz4+FqUphfcBLB1OOUSYCRNFB25rD3c8AJRYpY5rHTbL+kg=="
+    },
     "ssri": {
       "version": "5.3.0",
       "resolved": "http://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz",
@@ -10457,6 +10753,15 @@
         "whet.extend": "~0.9.9"
       }
     },
+    "swiper": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.2.0.tgz",
+      "integrity": "sha512-lOQeWRAHXwWPDu6k5cJYkf/eVRq2IUiHpMSGS143PVBg91J+2ZCXwM+Uv2sUckrZn3AMGcpcpnEBqD8Rwz9XGQ==",
+      "requires": {
+        "dom7": "^3.0.0-alpha.7",
+        "ssr-window": "^3.0.0-alpha.4"
+      }
+    },
     "table": {
       "version": "4.0.2",
       "resolved": "http://registry.npm.taobao.org/table/download/table-4.0.2.tgz",
@@ -10485,8 +10790,8 @@
     },
     "throttle-debounce": {
       "version": "1.1.0",
-      "resolved": "http://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz",
-      "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
     },
     "through": {
       "version": "2.3.8",
@@ -10601,6 +10906,11 @@
       "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
       "dev": true
     },
+    "tslib": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+      "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
+    },
     "tty-browserify": {
       "version": "0.0.0",
       "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
@@ -10723,6 +11033,14 @@
         }
       }
     },
+    "union": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
+      "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
+      "requires": {
+        "qs": "^6.4.0"
+      }
+    },
     "union-value": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/union-value/download/union-value-1.0.0.tgz",
@@ -10879,6 +11197,11 @@
         }
       }
     },
+    "url-join": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
+      "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg="
+    },
     "url-loader": {
       "version": "0.5.9",
       "resolved": "http://registry.npm.taobao.org/url-loader/download/url-loader-0.5.9.tgz",
@@ -10982,6 +11305,16 @@
       "resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
       "integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
     },
+    "vue-awesome-swiper": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-4.1.1.tgz",
+      "integrity": "sha512-50um10t6N+lJaORkpwSi1wWuMmBI1sgFc9Znsi5oUykw2cO5DzLaBHcO2JNX21R+Ue4TGoIJDhhxjBHtkFrTEQ=="
+    },
+    "vue-cropper": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/vue-cropper/-/vue-cropper-0.5.5.tgz",
+      "integrity": "sha512-5mGaBlS1EwLxUFwHHX2Q8zOZSiVfBUjOfolR+ZNKwu7Rh3u+GhwHYOyFkgZHhhoQBBNdyVB28O6W+MpMimhCbA=="
+    },
     "vue-eslint-parser": {
       "version": "2.0.3",
       "resolved": "http://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz",
@@ -11112,6 +11445,29 @@
       "integrity": "sha1-3EJpcTMwLOMBdSQ1amxht7abShg=",
       "dev": true
     },
+    "vue2-editor": {
+      "version": "2.10.2",
+      "resolved": "https://registry.npmjs.org/vue2-editor/-/vue2-editor-2.10.2.tgz",
+      "integrity": "sha512-sjHTPdRoiB9VK9HLSOjFgubxBWHxRydvykqBCNaX7Sv+2KpdWu6AoyguvP5tyEp4ECX7z6PnbBluyD5M57QOng==",
+      "requires": {
+        "quill": "^1.3.6"
+      }
+    },
+    "vuedraggable": {
+      "version": "2.24.1",
+      "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.1.tgz",
+      "integrity": "sha512-G1fxO1oshx+WLdieSGl6jSJdlHOQFga1FpjuUpgXldbpKNzxpjsGn4xYNnRHVrOAqm8aG5FfpdQlh5LHesxCeA==",
+      "requires": {
+        "sortablejs": "^1.10.1"
+      },
+      "dependencies": {
+        "sortablejs": {
+          "version": "1.10.2",
+          "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+          "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+        }
+      }
+    },
     "watchpack": {
       "version": "1.6.0",
       "resolved": "http://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz",
@@ -11748,6 +12104,11 @@
           "dev": true
         }
       }
+    },
+    "zrender": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz",
+      "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g=="
     }
   }
 }

+ 5 - 2
package.json

@@ -8,16 +8,19 @@
     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
     "start": "npm run dev",
     "lint": "eslint --ext .js,.vue src",
-    "build": "node build/build.js"
+    "build": "node build/build.js",
+    "preview": "http-server -p 3000 ./dist"
   },
   "dependencies": {
     "axios": "^0.18.0",
     "echarts": "^4.2.1",
-    "element-ui": "^2.4.9",
+    "element-ui": "^2.13.2",
+    "http-server": "^0.12.3",
     "js-cookie": "^2.2.0",
     "less": "^3.9.0",
     "less-loader": "^5.0.0",
     "qs": "^6.5.2",
+    "sortablejs": "^1.11.2-alpha.3",
     "swiper": "^6.2.0",
     "vue": "^2.5.2",
     "vue-awesome-swiper": "^4.1.1",

BIN
src/assets/img/down-arrow.png


BIN
src/assets/img/up-arrow.png


+ 0 - 1
src/configue/http.js

@@ -60,7 +60,6 @@ axios.interceptors.response.use(
       case 0:
         break
     }
-    // tryHideFullScreenLoading()
     return data
   },
   error => {

+ 1 - 1
src/main.js

@@ -32,7 +32,7 @@ Vue.prototype.vLoading = {
 }
 
 /* eslint-disable no-new */
-new Vue({
+window.$app = new Vue({
   el: '#app',
   router,
   components: { App },

+ 7 - 6
src/pages/cultural-relic/index.vue

@@ -123,16 +123,17 @@ export default {
       }).then(() => {
         this.$http.post('/collection/deleteCollection', data).then(res => {
           if (res.code === 0) {
-            this.$alert('删除成功', '提示', {
-              confirmButtonText: '确定',
-              callback: action => {
-                this.refresh()
-              }
+            this.$notify.success({
+              title: '提示',
+              message: '删除成功',
+              duration: 2000
             })
+            this.refresh()
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })

+ 4 - 2
src/pages/device/index.vue

@@ -196,7 +196,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -249,7 +250,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })

+ 9 - 7
src/pages/display/index.vue

@@ -134,7 +134,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -158,16 +159,17 @@ export default {
       }).then(() => {
         this.$http.post('/exhibition/deleteExhibition', data).then(res => {
           if (res.code === 0) {
-            this.$alert('删除成功', '提示', {
-              confirmButtonText: '确定',
-              callback: action => {
-                this.refresh()
-              }
+            this.$notify.success({
+              title: '提示',
+              message: '删除成功',
+              duration: 2000
             })
+            this.refresh()
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })

+ 59 - 17
src/pages/editPages/cultural-relic/index.vue

@@ -3,22 +3,24 @@
   <div  v-loading.fullscreen.lock="loading"
     element-loading-text="拼命加载中"
     element-loading-spinner="el-icon-loading"
+    class="edit-cultural-relic"
     element-loading-background="rgba(0, 0, 0, 0.8)">
     <main-top :crumb="crumbData"></main-top>
     <div class="table-interface">
       <div class="top-body">
         <div class="top-title">文物信息:</div>
         <div class="form-con">
-          <el-form ref="form" :model="form" label-width="120px">
-            <el-form-item :rules="[
-              { required: true, message: '文物名称不能为空'}
-            ]" label="文物名称:" style="width:318px;">
+          <el-form ref="form"  :rules="rules" status-icon  :model="form" label-width="120px">
+            <el-form-item prop="name" label="文物名称:" style="width:318px;">
               <el-input v-model="form.name" placeholder="请输入文物名称"></el-input>
             </el-form-item>
-
-            <el-form-item label="文物类别:" :rules="[
-              { required: true}
-            ]">
+            <el-form-item prop="verticalName" label="竖排文物名">
+              <el-input type="textarea" v-model="form.verticalName" class="verticla-input" />
+              <!-- <textarea rows="10" >
+                在w3school,你可以找到你所需要的所有的网站建设教程。
+                </textarea> -->
+            </el-form-item>
+            <el-form-item label="文物类别:">
               <el-select v-model="form.typeId" placeholder="请选择文物类别">
                   <el-option v-for="(item,i) in plist" :key="i" :label="item.name" :value="item.id"></el-option>
               </el-select>
@@ -39,7 +41,9 @@
             <el-form-item label="文物介绍:">
                 <vue-editor v-model="form.description" />
             </el-form-item>
-
+            <el-form-item label="文物介绍预览:">
+                <el-input type="textarea" v-model="form.description1" disabled />
+            </el-form-item>
             <el-form-item label="出土信息:" style="width:100%;">
               <el-input v-model="form.venue" maxlength="50" show-word-limit placeholder="请输入出土信息"></el-input>
             </el-form-item>
@@ -193,7 +197,7 @@
                     <em>点击上传</em>
                   </div>
                 </div>
-                <div class="el-upload__tip" slot="tip">支持视频动画格式:.wma, .wav, .mp4</div>
+                <div class="el-upload__tip" slot="tip">支持视频动画格式:.wmv, .wav, .mp4</div>
               </el-upload>
             </el-form-item>
             <el-form-item label="二维码信息:">
@@ -272,6 +276,10 @@ export default {
       loading: false,
       contentUrlList: [],
       unityUrlList: [],
+      rules: {
+        name: [{ required: true, message: '请输入文物名称', trigger: 'blur' }],
+        verticalName: [{ required: true, message: '请输入竖排文物名', trigger: 'blur' }]
+      },
       form: {
         name: '',
         typeId: 2,
@@ -295,7 +303,8 @@ export default {
         state: 0,
         texture: '',
         type: '2D',
-        typeImages: ''
+        typeImages: '',
+        verticalName: ''
       },
       plist: [],
       tlist: [],
@@ -306,7 +315,9 @@ export default {
     }
   },
   watch: {
-
+    'form.description' (val) {
+      this.form.description1 = val.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g, '').replace(/&nbsp/g, '').replace(/<\/\w*>/g, '\n')
+    }
   },
   methods: {
     delUploadItem (i) {
@@ -332,7 +343,7 @@ export default {
       this.loading = false
       this.uploadList.push(data.data)
     },
-    onSubmit () {
+    async onSubmit () {
       let {name,
         typeId,
         type,
@@ -355,12 +366,30 @@ export default {
         state,
         remarks,
         description,
+        verticalName,
         id} = this.form
+      if (!name) {
+        this.$notify.error({
+          title: '错误',
+          message: '请输入文物名称',
+          duration: 2000
+        })
+        return
+      }
+      if (!verticalName) {
+        this.$notify.error({
+          title: '错误',
+          message: '请输入竖排文物名称',
+          duration: 2000
+        })
+        return
+      }
       contentUrl = this.contentUrlList[0] ? this.contentUrlList[0].url : ''
       unityUrl = this.unityUrlList[0] ? this.unityUrlList[0].url : ''
       if (type === '2D') {
         typeImages = this.uploadList
       }
+      description = this.form.description1
       let data = {name,
         typeId,
         timeId,
@@ -382,6 +411,7 @@ export default {
         qrCode,
         contentUrl,
         state,
+        verticalName,
         description}
       if (this.type) {
         data['id'] = id
@@ -397,7 +427,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -438,11 +469,11 @@ export default {
 
     beforeUpload (file) {
       this.loading = true
-      let typeArr = ['wma', 'wav', 'mp4']
+      let typeArr = ['wmv', 'wav', 'mp4']
       let type = this.isTypeBySend(file.name, typeArr)
       if (!type) {
         this.loading = false
-        this.$message.error('支持视频动画格式:.wma, .wav, .mp4')
+        this.$message.error('支持视频动画格式:.wmv, .wav, .mp4')
         return type
       }
     },
@@ -564,7 +595,7 @@ export default {
 @import './style.less';
 </style>
 
-<style>
+<style  lang='less'>
 .ql-picker-label {
   line-height: 1;
   overflow: hidden;
@@ -624,4 +655,15 @@ export default {
   display: block;
 }
 
+.edit-cultural-relic {
+  .verticla-input {
+    height: 200px;
+    width: 40px;
+    textarea {
+      height: 100% !important;
+      resize: none;
+    }
+  }
+}
+
 </style>

+ 2 - 1
src/pages/editPages/cultural-relic/style.less

@@ -50,4 +50,5 @@
       }
     }
   }
-}
+}
+

+ 115 - 18
src/pages/editPages/display/index.vue

@@ -10,7 +10,7 @@
         <div class="top-title">方案信息:</div>
         <div class="form-con">
           <el-form ref="form" :model="form" label-width="100px">
-            <el-form-item label="方案名称:" style="width:318px;">
+            <el-form-item label="方案名称:" required="" style="width:318px;">
               <el-input v-model="form.name"></el-input>
             </el-form-item>
 
@@ -23,14 +23,14 @@
         </div>
         <div class="top-title">展示信息:</div>
         <div class="form-con">
-          <el-form ref="form" :model="form" label-width="100px">
+          <el-form ref="form" :model="form" label-width="140px">
             <el-form-item label="展示类别:" style="width:318px;">
               <el-select v-model="form.typeId" placeholder="请选择文物类别">
                 <el-option v-for="(item,i) in exhibitionlist" :key="i" :label="item.name" :value="item.id"></el-option>
               </el-select>
             </el-form-item>
 
-            <el-form-item label="展示封面:">
+            <el-form-item label="展示封面(深色):">
                <el-upload
                 class="avatar-uploader"
                 :action="uploadUrl"
@@ -46,9 +46,24 @@
               </el-upload>
 
             </el-form-item>
+            <el-form-item label="展示封面(浅色):">
+               <el-upload
+                class="avatar-uploader"
+                :action="uploadUrl"
+                :headers="{
+                  token,
+                }"
+                :show-file-list="false"
+                :before-upload="beforeUpload"
+                :on-success="upload_avatar_success2"
+                >
+                <img v-if="form.webUrl2" :src="form.webUrl2" class="avatar">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
 
-            <el-form-item label="展示文物:">
-              <el-table :data="tableData" v-if="tableData.length>0" style="width: 100%">
+            </el-form-item>
+            <el-form-item label="展示文物:" required="">
+              <el-table ref="dragTable" :data="tableData" v-if="tableData.length>0" style="width: 100%">
                 <el-table-column
                   v-for="(item, idx) in data"
                   :key="idx"
@@ -61,6 +76,12 @@
                 </el-table-column>
                 <el-table-column label="操作">
                   <template slot-scope="scope">
+                    <a href="javascript:;" @click="up(scope.row, scope.$index)">
+                      <img class="icon" src="@/assets/img/up-arrow.png" alt="">
+                    </a>
+                    <a href="javascript:;"  @click="down(scope.row, scope.$index)">
+                      <img class="icon" src="@/assets/img/down-arrow.png" alt="">
+                    </a>
                     <span class="o-span" @click="del(scope.row)">删除</span>
                   </template>
                 </el-table-column>
@@ -129,6 +150,7 @@
 import MainTop from '@/components/main-top'
 import SearchBar from '@/components/search-bar'
 import Cropper from '@/components/cropper'
+import Sortable from 'sortablejs'
 
 import { VueEditor } from 'vue2-editor'
 
@@ -193,9 +215,12 @@ export default {
         equipmentId: 1,
         state: 0,
         description: '',
-        webUrl: ''
+        webUrl: '',
+        webUrl2: ''
       },
       tableData: [],
+      oldList: [],
+      newList: [],
       collectList: [],
       timelist: [],
       typeId: '',
@@ -226,7 +251,10 @@ export default {
       this.loading = false
       this.form.webUrl = data.data
     },
-
+    upload_avatar_success2 (data) {
+      this.loading = false
+      this.form.webUrl2 = data.data
+    },
     refresh () {
       this.loading = true
       this.getInformation()
@@ -273,6 +301,9 @@ export default {
       })
 
       this.tableData = result.data
+      this.$nextTick(() => {
+        this.setSort()
+      })
       console.log('tableData', result.data)
 
       this.tableData.forEach((item, i) => {
@@ -291,8 +322,24 @@ export default {
       return false
     },
     onSubmit () {
-      let { name, id, typeId, equipmentId, state, description, webUrl } = this.form
-      let data = { name, typeId, equipmentId, state, description, webUrl }
+      let { name, id, typeId, equipmentId, state, description, webUrl, webUrl2 } = this.form
+      let data = { name, typeId, equipmentId, state, description, webUrl, webUrl2 }
+      if (!name) {
+        this.$notify.error({
+          title: '错误',
+          message: '请填写方案名称',
+          duration: 2000
+        })
+        return
+      }
+      if (this.tableData.length < 1) {
+        this.$notify.error({
+          title: '错误',
+          message: '请选择展示文物',
+          duration: 2000
+        })
+        return
+      }
       if (this.type) {
         data['id'] = id
       }
@@ -321,14 +368,16 @@ export default {
             } else {
               this.$notify.error({
                 title: '错误',
-                message: res.message
+                message: res.message,
+                duration: 2000
               })
             }
           })
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -344,14 +393,18 @@ export default {
       this.tableData.push(item)
     },
     del (item) {
-      let arr = []
-      this.tableData.forEach(sub => {
-        if (sub.id !== item.id) {
-          arr.push(sub)
+      this.$alert('是否删除该文物', {
+        callback: () => {
+          let arr = []
+          this.tableData.forEach(sub => {
+            if (sub.id !== item.id) {
+              arr.push(sub)
+            }
+          })
+
+          this.tableData = arr
         }
       })
-
-      this.tableData = arr
     },
     async getInformation () {
       this.showSelect = true
@@ -388,6 +441,47 @@ export default {
 
       this.form = result.data
       this.tableData = result.data.collectionList
+      this.oldList = this.tableData.map(v => v.id)
+      this.newList = this.oldList.slice()
+      this.$nextTick(() => {
+        // this.setSort()
+      })
+    },
+    setSort () {
+      const el = this.$refs.dragTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
+      this.sortable = Sortable.create(el, {
+        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
+        setData: function (dataTransfer) {
+          // to avoid Firefox bug
+          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
+          dataTransfer.setData('Text', '')
+        },
+        onEnd: evt => {
+          console.log(evt)
+          const targetRow = this.tableData.splice(evt.oldIndex, 1)[0]
+          console.log(targetRow)
+          this.tableData.splice(evt.newIndex, 0, targetRow)
+          // for show the changes, you can delete in you code
+          const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]
+          this.newList.splice(evt.newIndex, 0, tempIndex)
+        }
+      })
+    },
+    up (row, index) {
+      if (index < 1) {
+        return
+      }
+      const targetRow = this.tableData.splice(index, 1)[0]
+      index--
+      this.tableData.splice(index, 0, targetRow)
+    },
+    down (row, index) {
+      if (index > this.tableData.length - 1) {
+        return
+      }
+      const targetRow = this.tableData.splice(index, 1)[0]
+      index++
+      this.tableData.splice(index, 0, targetRow)
     }
   },
 
@@ -438,5 +532,8 @@ export default {
   height: 178px;
   display: block;
 }
-
+.icon {
+  width: 20px;
+  vertical-align: middle;
+}
 </style>

+ 4 - 3
src/pages/editPages/message/index.vue

@@ -98,7 +98,7 @@
                   </div>
                 </div>
                 <div class="el-upload__tip" slot="tip">
-                  支持扩展名:.wma, .rmvb, .rm, .flash, .mp4
+                  支持扩展名:.wmv, .rmvb, .rm, .flash, .mp4
                 </div>
               </el-upload>
             </el-form-item>
@@ -265,7 +265,7 @@ export default {
         'vqf'
       ]
       var v = ['jpg', 'jpgc', 'png']
-      var m = ['wma', 'rmvb', 'rm', 'flash', 'mp4']
+      var m = ['wmv', 'rmvb', 'rm', 'flash', 'mp4']
 
       for (var i in a) {
         if (a[i] === type.toLowerCase()) return 'audio'
@@ -320,7 +320,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })

+ 2 - 1
src/pages/editPages/role/index.vue

@@ -260,7 +260,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: result.msg
+              message: result.msg,
+              duration: 2000
             })
           }
         }

+ 9 - 7
src/pages/information/index.vue

@@ -152,7 +152,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -201,16 +202,17 @@ export default {
       }).then(() => {
         this.$http.post('/information/deleteInformation', data).then(res => {
           if (res.code === 0) {
-            this.$alert('删除成功', '提示', {
-              confirmButtonText: '确定',
-              callback: action => {
-                this.refresh()
-              }
+            this.$notify.success({
+              title: '提示',
+              message: '删除成功',
+              duration: 2000
             })
+            this.refresh()
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })

+ 5 - 5
src/pages/layout/aside.vue

@@ -2,11 +2,11 @@
 <template>
 <div class="aside">
   <div class="aside-list">
-    <div class="aside-item">
+    <!-- <div class="aside-item">
       <div :class="{active:activeIdx === -1}" @click="go(-1,'/')"><img :src="require('@/assets/img/01jk.png')" >首页</div>
-      <!-- <div @click="go(0,'/message')" :class="{active:activeIdx === 0}">消息管理</div> -->
+      <div @click="go(0,'/message')" :class="{active:activeIdx === 0}">消息管理</div>
       <div @click="go(1,'/user-analysis')" :class="{active:activeIdx === 1}">数据统计</div>
-    </div>
+    </div> -->
     <div class="aside-item">
       <div><img :src="require('@/assets/img/02fb.png')">工作管理</div>
       <!-- <div @click="go(2,'/information')" :class="{active:activeIdx === 2}">资讯管理</div> -->
@@ -21,11 +21,11 @@
       <div @click="go(7,'/work-log')" :class="{active:activeIdx === 7}">工作日志</div>
       <div @click="go(8,'/modify')" :class="{active:activeIdx === 8}">密码修改</div>
     </div>
-    <div class="aside-item" >
+    <!-- <div class="aside-item" >
       <div><img :src="require('@/assets/img/04fb.png')">高级管理</div>
       <div @click="go(9,'/role')" :class="{active:activeIdx === 9}">角色管理</div>
       <div @click="go(10,'/device')" :class="{active:activeIdx === 10}">设备管理</div>
-    </div>
+    </div> -->
   </div>
 </div>
 </template>

+ 8 - 6
src/pages/layout/head.vue

@@ -6,9 +6,9 @@
     <!-- <span>大屏后台管理系统</span> -->
   </div>
   <div class="header-user">
-    <div class="avatar">
-      <img :src="head" alt="">
-      <span>高级管理员</span>
+    <div class="1">
+      <!-- <img :src="head" alt=""> -->
+      <span>{{ userName }}</span>
     </div>
     <div  @click="logout" class="logout"><img src="@/assets/img/logout.png" alt="">退出</div>
   </div>
@@ -24,7 +24,8 @@ export default {
   components: {},
   data () {
     return {
-      head: ''
+      head: '',
+      userName: ''
     }
   },
   // 监控data中的数据变化
@@ -48,9 +49,10 @@ export default {
     if (userInfo) {
       tmp = JSON.parse(userInfo)
     }
-
+    console.log(tmp, 'userInfo')
     if (tmp) {
-      this.head = userInfo.head
+      this.head = tmp.user.head
+      this.userName = tmp.user.userName
     }
     // this.updateInfo()
   },

+ 4 - 3
src/pages/login/index.vue

@@ -40,8 +40,8 @@ export default {
         return callback(new Error('用户名不能为空'))
       }
       setTimeout(() => {
-        if (value.length > 10) {
-          callback(new Error('用户名字符不能大于10位'))
+        if (value.length > 20) {
+          callback(new Error('用户名字符不能大于20位'))
         } else {
           callback()
         }
@@ -92,7 +92,8 @@ export default {
             } else {
               this.$notify.error({
                 title: '错误',
-                message: res.msg
+                message: res.msg,
+                duration: 2000
               })
             }
           })

+ 47 - 10
src/pages/modify/index.vue

@@ -6,18 +6,18 @@
       <div class="top-body">
         <div class="body-middle">
           <el-form :rules="ruleForget" status-icon :model="formForget" ref="formForget">
-            <el-form-item prop="newPassword">
-              <el-input v-model="formForget.oldPass" placeholder="当前密码" type="password"></el-input>
+            <el-form-item prop="password">
+              <el-input v-model="formForget.password" placeholder="当前密码" type="password"></el-input>
             </el-form-item>
             <el-form-item prop="newPassword">
               <el-input v-model="formForget.newPassword" placeholder="新密码" type="password"></el-input>
             </el-form-item>
-            <el-form-item prop="comfirm">
-              <el-input v-model="formForget.comfirm" placeholder="重复新密码" type="password"></el-input>
+            <el-form-item prop="repeatPassword">
+              <el-input v-model="formForget.repeatPassword" placeholder="重复新密码" type="password"></el-input>
             </el-form-item>
             <el-form-item>
-              <el-button type="primary">确定</el-button>
-              <el-button>取消</el-button>
+              <el-button style="width:100%" type="primary" @click="handleSubmitClick">确定</el-button>
+              <!-- <el-button>取消</el-button> -->
             </el-form-item>
           </el-form>
         </div>
@@ -68,16 +68,53 @@ export default {
     return {
       crumbData,
       formForget: {
-        oldPass: '',
+        password: '',
         newPassword: '',
-        comfirm: ''
-
+        repeatPassword: '',
+        id: ''
       },
       ruleForget: {
+        password: [{ required: true, message: '请输入当前密码', trigger: 'blur' }],
         newPassword: [{ validator: validatePass, trigger: 'blur' }],
-        comfirm: [{ validator: validatePass2, trigger: 'blur' }]
+        repeatPassword: [{ validator: validatePass2, trigger: 'blur' }]
       }
     }
+  },
+  mounted () {
+    let userInfo = window.localStorage.getItem('userInfo') || ''
+    let tmp = ''
+    if (userInfo) {
+      tmp = JSON.parse(userInfo)
+      this.formForget.id = tmp.user.id
+    }
+  },
+  methods: {
+    handleSubmitClick () {
+      this.$http({
+        url: '/user/updatePassword',
+        method: 'post',
+        data: this.formForget
+      }).then(res => {
+        if (res.code === 0) {
+          this.$notify.success({
+            title: '提示',
+            message: '修改成功',
+            duration: 2000,
+            onClose: () => {
+              window.localStorage.setItem('userInfo', '')
+              window.localStorage.setItem('token', '')
+              this.$router.push({name: 'login'})
+            }
+          })
+        } else {
+          this.$notify.error({
+            title: '错误',
+            message: res.msg,
+            duration: 2000
+          })
+        }
+      })
+    }
   }
 }
 </script>

+ 8 - 4
src/pages/role/index.vue

@@ -141,7 +141,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })
@@ -180,7 +181,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })
@@ -207,7 +209,8 @@ export default {
         } else {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: res.message,
+            duration: 2000
           })
         }
       })
@@ -252,7 +255,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })

+ 78 - 41
src/pages/user/index.vue

@@ -48,38 +48,37 @@
               <span class="o-span" @click="del(scope.row)">注销</span>
             </template>
           </el-table-column>
-          <div class="e-pagination">
+        </el-table>
+         <div class="e-pagination">
             <el-pagination @current-change="handleCurrentChange" :current-page.sync="currentPage" :page-size="size" layout="prev, pager, next, jumper" :total="total">
             </el-pagination>
           </div>
-        </el-table>
       </div>
     </div>
     <el-dialog :title="editTitle" :visible.sync="dialogFormVisible" width="40%">
       <div class="add-con">
         <div class="add-left">
-          <el-form :model="form">
-            <el-form-item label="用户账号:" :label-width="formLabelWidth">
+          <el-form :model="form" :rules="rules" ref="form">
+            <el-form-item required prop="userName" label="用户账号:" :label-width="formLabelWidth">
               <el-input :disabled="type==='edit'" v-model="form.userName" autocomplete="off"></el-input>
             </el-form-item>
-            <el-form-item label="用户角色:" :label-width="formLabelWidth">
+            <el-form-item required label="用户角色:" :label-width="formLabelWidth">
               <el-select v-model="form.roleId" placeholder="请选择角色">
-                <el-option label="普通管理员" :value="0"></el-option>
-                <el-option label="高级管理员" :value="1"></el-option>
+                <el-option v-for="item in roleList" :label="item.roleName" :key="item.id" :value="item.id"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="手机号码:" :label-width="formLabelWidth">
+            <el-form-item required label="手机号码:" :label-width="formLabelWidth" prop="phone">
               <el-input v-model="form.phone" autocomplete="off"></el-input>
             </el-form-item>
             <el-form-item label="是否启用:" :label-width="formLabelWidth">
                <el-radio-group v-model="form.state">
-                <el-radio :label="0" >是</el-radio>
-                <el-radio :label="1" >否</el-radio>
+                <el-radio :label="0">是</el-radio>
+                <el-radio :label="1">否</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-form>
         </div>
-        <div class="add-right">
+        <!-- <div class="add-right">
           <el-upload
             class="avatar-uploader"
             :action='uploadUrl'
@@ -96,7 +95,7 @@
           <div class="avatar-img">
             <el-button v-if="type==='edit'" @click="reset">重置密码</el-button>
           </div>
-        </div>
+        </div> -->
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="save">保 存</el-button>
@@ -145,15 +144,11 @@ export default {
         label: '序号'
       },
       {
-        prop: 'head',
-        label: '用户头像'
-      },
-      {
         prop: 'userName',
         label: '账号'
       },
       {
-        prop: 'role',
+        prop: 'roleName',
         label: '角色'
       },
       {
@@ -176,22 +171,34 @@ export default {
       dialogFormVisible: false,
       form: {
         userName: '',
-        roleId: 0,
+        roleId: 16,
         phone: '',
         head: '',
         password: '',
-        repeatPassword: ''
+        repeatPassword: '',
+        state: 0
       },
+      total: 0,
       inputKey: '',
       currentPage: 1,
       size: 10,
-      total: 0,
       formLabelWidth: '120px',
       imageUrl: '',
       type: 'add',
       editTitle: '新增用户',
       uploadUrl: `${this.$serverName}/user/uploadHead`,
-      token: window.localStorage.getItem('token')
+      token: window.localStorage.getItem('token'),
+      roleList: [],
+      rules: {
+        userName: [
+          { required: true, message: '用户账号不能为空' },
+          { max: 20, message: '用户账号不能大于20个字符' }
+        ],
+        phone: [
+          { required: true, message: '手机号不能为空' },
+          { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号' }
+        ]
+      }
     }
   },
   watch: {
@@ -205,6 +212,7 @@ export default {
       this.refresh()
     },
     inputKey () {
+      this.currentPage = 1
       this.refresh()
     },
     type (newVal) {
@@ -213,6 +221,7 @@ export default {
   },
   mounted () {
     this.refresh()
+    this.getRole()
   },
   methods: {
     reset () {
@@ -234,7 +243,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })
@@ -281,7 +291,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })
@@ -293,24 +304,33 @@ export default {
       })
     },
     save () {
-      let {userName, roleId, phone, head, state} = this.form
-      let data = {userName, roleId, phone, head, state}
+      this.$refs['form'].validate().then(res => {
+        let {userName, roleId, phone, head, state} = this.form
+        let data = {userName, roleId, phone, head, state}
 
-      this.$http.post(urlType[this.type], data).then(res => {
-        if (res.code === 0) {
-          this.$alert('操作成功', '提示', {
-            confirmButtonText: '确定',
-            callback: action => {
-              this.dialogFormVisible = false
-              this.refresh()
-            }
-          })
-        } else {
+        this.$http.post(urlType[this.type], data).then(res => {
+          if (res.code === 0) {
+            this.$alert('操作成功', '提示', {
+              confirmButtonText: '确定',
+              callback: action => {
+                this.dialogFormVisible = false
+                this.refresh()
+              }
+            })
+          } else {
+            this.$notify.error({
+              title: '错误',
+              message: res.message,
+              duration: 2000
+            })
+          }
+        }).catch(() => {
           this.$notify.error({
             title: '错误',
-            message: res.message
+            message: '添加失败',
+            duration: 2000
           })
-        }
+        })
       })
     },
 
@@ -319,11 +339,12 @@ export default {
       this.type = type
       this.form = {
         userName: '',
-        roleId: 0,
+        roleId: 16,
         phone: '',
         head: '',
         password: '',
-        repeatPassword: ''
+        repeatPassword: '',
+        state: 0
       }
 
       if (type === 'edit') {
@@ -353,7 +374,8 @@ export default {
           } else {
             this.$notify.error({
               title: '错误',
-              message: res.msg
+              message: res.msg,
+              duration: 2000
             })
           }
         })
@@ -388,8 +410,23 @@ export default {
         item['date'] = this.$base.timestampToTime(item['startTime']) + '至' + this.$base.timestampToTime(item['endTime'])
         item['role'] = juese[item['roleId']]
         item['qiyong'] = zt[item['state']]
-        item['idx'] = i + 1
+        item['idx'] = i + 1 + (this.currentPage - 1) * this.size
+      })
+    },
+    // 获取角色列表
+    async getRole () {
+      let res = await this.$http({
+        method: 'post',
+        data: {
+          state: 1
+        },
+        url: '/user/roleList'
       })
+      this.roleList = res.data.filter(item => item.roleName !== '超级管理员')
+    },
+    handleSearchBtnClick () {
+      this.params.pageNum = 1
+      // this.getLogs()
     }
   }
 }

+ 51 - 20
src/pages/work-log/index.vue

@@ -6,25 +6,24 @@
       <div class="top-body">
         <div class="info-top">
           <div class="info-left">
-            <span>按用户操作查看:</span>
-            <el-select style="width:100px;" v-model="region" placeholder="请选择">
+            <!-- <span>按用户操作查看:</span> -->
+            <!-- <el-select style="width:100px;" v-model="region" placeholder="请选择">
               <el-option label="全部" value="all"></el-option>
               <el-option label="发布" value="fb"></el-option>
               <el-option label="编辑" value="bj"></el-option>
               <el-option label="删除" value="sc"></el-option>
               <el-option label="排序" value="px"></el-option>
-            </el-select>
+            </el-select> -->
             <span style="margin-left:20px;">按操作模块查看:</span>
-            <el-select style="width:100px;" v-model="region1" placeholder="请选择">
-              <el-option label="全部" value="all"></el-option>
-              <el-option label="资讯管理" value="zx"></el-option>
-              <el-option label="文物管理" value="ww"></el-option>
-              <el-option label="问卷管理" value="wj"></el-option>
-              <el-option label="用户管理" value="yh"></el-option>
-              <el-option label="密码修改" value="xg"></el-option>
+            <el-select style="width:120px;" v-model="params.type" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="展览管理" value="展览管理"></el-option>
+              <el-option label="文物库" value="文物库"></el-option>
+              <el-option label="日志管理" value="日志管理"></el-option>
+              <el-option label="用户管理" value="用户管理"></el-option>
             </el-select>
-            <el-input style="width:220px;margin:0 20px;" v-model="infoName" placeholder="请输入操作事件内容"></el-input>
-            <el-button type="primary" >查找</el-button>
+            <el-input style="width:220px;margin:0 20px;" v-model="params.description" placeholder="请输入操作事件内容"></el-input>
+            <el-button type="primary" @click="handleSearchBtnClick">查找</el-button>
             <el-button>重置</el-button>
           </div>
         </div>
@@ -40,6 +39,10 @@
           </template>
           </el-table-column>
         </el-table>
+        <div class="e-pagination">
+          <el-pagination @current-change="handleCurrentChange" :current-page.sync="params.pageNum" :page-size="params.pageSize" layout="prev, pager, next, jumper" :total="total">
+          </el-pagination>
+        </div>
       </div>
     </div>
   </div>
@@ -76,20 +79,16 @@ export default {
         label: '账号'
       },
       {
-        prop: 'module',
+        prop: 'type',
         label: '操作模块'
       },
       {
-        prop: 'event',
+        prop: 'description',
         label: '操作事件'
       },
       {
-        prop: 'date',
+        prop: 'createTime',
         label: '操作时间'
-      },
-      {
-        prop: 'status',
-        label: '状态'
       }
     ]
 
@@ -99,7 +98,39 @@ export default {
       region: 'all',
       region1: 'all',
       infoName: '',
-      tableData: []
+      tableData: [],
+      params: {
+        pageNum: 1,
+        description: '',
+        pageSize: 20,
+        type: ''
+      },
+      total: 0
+    }
+  },
+  mounted () {
+    this.getModuleList()
+    this.getLogs()
+  },
+  methods: {
+    getModuleList () {
+      this.$http.post('/resource/find').then(res => {
+        console.log(res, '/resource/find')
+      })
+    },
+    getLogs () {
+      this.$http.post('/log/list', this.params).then(res => {
+        console.log(res)
+        this.tableData = res.data.list
+        this.total = res.data.total
+      })
+    },
+    handleCurrentChange () {
+      this.getLogs()
+    },
+    handleSearchBtnClick () {
+      this.params.pageNum = 1
+      this.getLogs()
     }
   }
 }

+ 1 - 1
src/router/index.js

@@ -28,7 +28,7 @@ import Home from '@/pages/home'
 Vue.use(Router)
 const originalPush = Router.prototype.push
 Router.prototype.push = function push (location) {
-  return originalPush.call(this, location).catch(err => err)
+  return originalPush.call(this, location)
 }
 
 export default new Router({