diff --git a/.env.development b/.env.development
index 313590e..211305e 100644
--- a/.env.development
+++ b/.env.development
@@ -1,3 +1,3 @@
VUE_APP_TITLE = 'DEV标题'
VUE_APP_BASE_URL = '/'
-VUE_APP_API_URL = '/api'
+VUE_APP_API_BASE_URL = '/api'
diff --git a/.env.production b/.env.production
index f18997c..ba33f4d 100644
--- a/.env.production
+++ b/.env.production
@@ -1,3 +1,3 @@
VUE_APP_TITLE = '标题'
VUE_APP_BASE_URL = './'
-VUE_APP_API_URL = '/api'
+VUE_APP_API_BASE_URL = '/api'
diff --git a/babel.config.js b/babel.config.js
index c1b783e..232f1f4 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,3 +1,12 @@
module.exports = {
presets: ['@vue/cli-plugin-babel/preset'],
+ plugins: [
+ [
+ 'component',
+ {
+ libraryName: 'element-ui',
+ styleLibraryName: 'theme-chalk',
+ },
+ ],
+ ],
}
diff --git a/package-lock.json b/package-lock.json
index 76869a3..329c0d4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"axios": "^1.6.2",
"core-js": "^3.8.3",
+ "element-ui": "^2.15.14",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
@@ -22,6 +23,7 @@
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
+ "babel-plugin-component": "^1.1.1",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
@@ -3424,6 +3426,14 @@
"lodash": "^4.17.14"
}
},
+ "node_modules/async-validator": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
+ "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+ "dependencies": {
+ "babel-runtime": "6.x"
+ }
+ },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
@@ -3471,6 +3481,11 @@
"proxy-from-env": "^1.1.0"
}
},
+ "node_modules/babel-helper-vue-jsx-merge-props": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+ "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+ },
"node_modules/babel-loader": {
"version": "8.3.0",
"resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz",
@@ -3504,6 +3519,36 @@
"node": ">=8.9.0"
}
},
+ "node_modules/babel-plugin-component": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
+ "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "7.0.0-beta.35"
+ }
+ },
+ "node_modules/babel-plugin-component/node_modules/@babel/helper-module-imports": {
+ "version": "7.0.0-beta.35",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+ "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "7.0.0-beta.35",
+ "lodash": "^4.2.0"
+ }
+ },
+ "node_modules/babel-plugin-component/node_modules/@babel/types": {
+ "version": "7.0.0-beta.35",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
+ "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.2.0",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
"node_modules/babel-plugin-dynamic-import-node": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
@@ -3552,6 +3597,27 @@
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "dependencies": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "node_modules/babel-runtime/node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "hasInstallScript": true
+ },
+ "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -4633,7 +4699,6 @@
"version": "1.5.2",
"resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
"integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4981,6 +5046,22 @@
"integrity": "sha512-dM8BMtXtlH237ecSMnYdYuCkib2QHq0kpWfUnavjdYsyr/6OsAwg5ZGUfnQ9KD1Ga4QgB2sqXlB2NT8zy2GnVg==",
"dev": true
},
+ "node_modules/element-ui": {
+ "version": "2.15.14",
+ "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
+ "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
+ "dependencies": {
+ "async-validator": "~1.8.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.0",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1"
+ },
+ "peerDependencies": {
+ "vue": "^2.5.17"
+ }
+ },
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -7762,6 +7843,11 @@
"node": ">=10"
}
},
+ "node_modules/normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+ },
"node_modules/npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -9147,6 +9233,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
+ "node_modules/resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
@@ -10087,6 +10178,14 @@
"node": ">= 10.13.0"
}
},
+ "node_modules/throttle-debounce": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+ "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
@@ -13767,6 +13866,14 @@
"lodash": "^4.17.14"
}
},
+ "async-validator": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
+ "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+ "requires": {
+ "babel-runtime": "6.x"
+ }
+ },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
@@ -13802,6 +13909,11 @@
"proxy-from-env": "^1.1.0"
}
},
+ "babel-helper-vue-jsx-merge-props": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+ "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+ },
"babel-loader": {
"version": "8.3.0",
"resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz",
@@ -13827,6 +13939,38 @@
}
}
},
+ "babel-plugin-component": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
+ "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0-beta.35"
+ },
+ "dependencies": {
+ "@babel/helper-module-imports": {
+ "version": "7.0.0-beta.35",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+ "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.35",
+ "lodash": "^4.2.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.0.0-beta.35",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
+ "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.2.0",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
"babel-plugin-dynamic-import-node": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
@@ -13866,6 +14010,27 @@
"@babel/helper-define-polyfill-provider": "^0.4.4"
}
},
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ }
+ }
+ },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -14740,8 +14905,7 @@
"deepmerge": {
"version": "1.5.2",
"resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
- "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
- "dev": true
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
},
"default-gateway": {
"version": "6.0.3",
@@ -15018,6 +15182,19 @@
"integrity": "sha512-dM8BMtXtlH237ecSMnYdYuCkib2QHq0kpWfUnavjdYsyr/6OsAwg5ZGUfnQ9KD1Ga4QgB2sqXlB2NT8zy2GnVg==",
"dev": true
},
+ "element-ui": {
+ "version": "2.15.14",
+ "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
+ "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
+ "requires": {
+ "async-validator": "~1.8.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.0",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1"
+ }
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -17229,6 +17406,11 @@
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
"dev": true
},
+ "normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+ },
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -18257,6 +18439,11 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
+ "resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
"resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
@@ -19010,6 +19197,11 @@
}
}
},
+ "throttle-debounce": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+ "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+ },
"thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
diff --git a/package.json b/package.json
index 29ee7e9..a498100 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"dependencies": {
"axios": "^1.6.2",
"core-js": "^3.8.3",
+ "element-ui": "^2.15.14",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
@@ -23,6 +24,7 @@
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
+ "babel-plugin-component": "^1.1.1",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
diff --git a/public/api/test.json b/public/api/test.json
new file mode 100644
index 0000000..436759c
--- /dev/null
+++ b/public/api/test.json
@@ -0,0 +1,7 @@
+{
+ "code": 200,
+ "msg": "成功",
+ "data": {
+ "test": "测试"
+ }
+}
diff --git a/src/api/test.js b/src/api/test.js
new file mode 100644
index 0000000..44d89b6
--- /dev/null
+++ b/src/api/test.js
@@ -0,0 +1,11 @@
+import http from '@/utils/http'
+
+export function getTest() {
+ return http({
+ url: '/test.json',
+ method: 'get',
+ params: {
+ test: Date.now(),
+ },
+ })
+}
diff --git a/src/main.js b/src/main.js
index d14ee2f..9e291fe 100644
--- a/src/main.js
+++ b/src/main.js
@@ -3,6 +3,13 @@ import App from './App.vue'
import router from './router'
import store from './store'
+// import { Button, Select, Message, Notification } from 'element-ui'
+
+// Vue.use(Button)
+// Vue.use(Select)
+// Vue.use(Message)
+// Vue.use(Notification)
+
Vue.config.productionTip = false
Vue.prototype.$bus = new Vue() // 定义全局事件总线,便于组件之间通讯
diff --git a/src/router/index.js b/src/router/index.js
index bb92953..7826ae4 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -9,4 +9,14 @@ const router = new VueRouter({
routes,
})
+// 路由守卫
+router.beforeEach((to, from, next) => {
+ // console.log('beforeEach')
+ next() // 放行,进入下一个路由守卫或者路由组件中。
+})
+
+router.afterEach((to) => {
+ document.title = `${process.env.VUE_APP_TITLE} | ${to.meta.title || ''}`
+})
+
export default router
diff --git a/src/router/routes.js b/src/router/routes.js
index 708b197..6aeac7a 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -4,9 +4,17 @@ const routes = [
{
path: '/',
name: 'home',
+ meta: {
+ title: '首页',
+ keepAlive: true,
+ },
component: HomeView,
},
- { path: '*', component: () => import('@/views/404View.vue') },
+ {
+ path: '*',
+ name: '404',
+ component: () => import('@/views/404View.vue'),
+ },
]
export default routes
diff --git a/src/store/index.js b/src/store/index.js
index 6d85852..1271a08 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1,6 +1,8 @@
import Vue from 'vue'
import Vuex from 'vuex'
+import test from './modules/test'
+
Vue.use(Vuex)
export default new Vuex.Store({
@@ -8,5 +10,7 @@ export default new Vuex.Store({
getters: {},
mutations: {},
actions: {},
- modules: {},
+ modules: {
+ test,
+ },
})
diff --git a/src/store/modules/test.js b/src/store/modules/test.js
new file mode 100644
index 0000000..d32a5d5
--- /dev/null
+++ b/src/store/modules/test.js
@@ -0,0 +1,10 @@
+const test = {
+ state: {
+ testToken: '',
+ },
+ getters: {},
+ mutations: {},
+ actions: {},
+}
+
+export default test
diff --git a/src/utils/http.js b/src/utils/http.js
new file mode 100644
index 0000000..1477eb9
--- /dev/null
+++ b/src/utils/http.js
@@ -0,0 +1,41 @@
+import axios from 'axios'
+import { Message } from 'element-ui'
+
+const http = axios.create({
+ baseURL: process.env.VUE_APP_API_BASE_URL,
+ timeout: 30 * 1000,
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ // 不携带cookie
+ withCredentials: false,
+})
+
+http.interceptors.request.use(
+ (config) => {
+ // 在此处配置token保证更新token后能正常请求
+ config.headers['Authorization'] = `Bearer ${
+ localStorage.getItem('token') || 'NoToken'
+ }`
+ return config
+ },
+ (error) => {
+ return Promise.reject(error)
+ }
+)
+
+http.interceptors.response.use(
+ (response) => {
+ return response.data
+ },
+ (error) => {
+ Message({
+ type: 'error',
+ message: error.message,
+ duration: 3 * 1000,
+ })
+ Promise.reject(error)
+ }
+)
+
+export default http
diff --git a/src/views/404View.vue b/src/views/404View.vue
index f23b634..97cf80d 100644
--- a/src/views/404View.vue
+++ b/src/views/404View.vue
@@ -1,5 +1,8 @@
-
+
+
Not Found
+ 404
+