diff --git a/package-lock.json b/package-lock.json index 5ed25d77..336caeac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,10 @@ "license": "MIT", "dependencies": { "element-plus": "^1.0.2-beta.46", + "es6-promise": "^4.2.8", "vue": "^3.0.5", - "vue-router": "^4.0.8" + "vue-router": "^4.0.8", + "vuex": "^4.0.1" }, "devDependencies": { "@vitejs/plugin-vue": "^1.2.3", @@ -1128,6 +1130,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, "node_modules/esbuild": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.5.tgz", @@ -4026,6 +4033,17 @@ "vue": "^3.0.0" } }, + "node_modules/vuex": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.1.tgz", + "integrity": "sha512-MddakQTAnImDkK1YhEESowKSU5KcjqHH3L1ScPx1lj6NzDDX0FuRBZqJoME5O7/nvj9puudDf6xnWU2w/cqI7g==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.0.2" + } + }, "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -4944,6 +4962,11 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, "esbuild": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.5.tgz", @@ -7185,6 +7208,14 @@ "@vue/devtools-api": "^6.0.0-beta.10" } }, + "vuex": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.1.tgz", + "integrity": "sha512-MddakQTAnImDkK1YhEESowKSU5KcjqHH3L1ScPx1lj6NzDDX0FuRBZqJoME5O7/nvj9puudDf6xnWU2w/cqI7g==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", diff --git a/package.json b/package.json index 704a9fa9..f967892a 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,10 @@ }, "dependencies": { "element-plus": "^1.0.2-beta.46", + "es6-promise": "^4.2.8", "vue": "^3.0.5", - "vue-router": "^4.0.8" + "vue-router": "^4.0.8", + "vuex": "^4.0.1" }, "devDependencies": { "@vitejs/plugin-vue": "^1.2.3", diff --git a/src/main.js b/src/main.js index ad6883a4..634c2622 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,13 @@ import { createApp } from 'vue' import ElementPlus from 'element-plus'; import 'element-plus/lib/theme-chalk/index.css'; +import 'es6-promise/auto' +import Store from "./store" import Router from "./router"; import App from './App.vue' createApp(App) +.use(Store) .use(Router) .use(ElementPlus) .mount('#app') diff --git a/src/store/action.js b/src/store/action.js new file mode 100644 index 00000000..c3fa6f86 --- /dev/null +++ b/src/store/action.js @@ -0,0 +1,7 @@ +const actions = (r => { + return r.keys().map(key => r(key).actionTypes) +})(require.context('./module/', true, /^\.\/([\s\S])+\/index\.js$/)) + +const newActions = Object.assign({}, ...actions) + +export default newActions diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 00000000..6ec6c14b --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,22 @@ +import { createStore } from 'vuex' + + +const modules = (r => { + return r.keys().map(key => { + return { + name: key.match(/^\.\/([\s\S]+)\/index\.js$/)[1], + module: r(key).default + } + }) +})(require.context('./module/', true, /^\.\/([\s\S])+\/index\.js$/)) + +let modulesObj = {} + +modules.forEach(item => { + modulesObj[item.name] = item.module +}) + +export default createStore({ + modules: modulesObj, + strict: process.env.NODE_ENV !== 'production' +}) diff --git a/src/store/module/user/index.js b/src/store/module/user/index.js new file mode 100644 index 00000000..073e351b --- /dev/null +++ b/src/store/module/user/index.js @@ -0,0 +1,33 @@ +import storage from '@/config/storage' + +const actionTypes = {} + +const mutationTypes = {} + +const state = ()=>{ + return { + user: null, + } +} + +const getters = { + +} + +const actions = {} + +const mutations = { + +} + +export { + actionTypes, + mutationTypes +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/mutation.js b/src/store/mutation.js new file mode 100644 index 00000000..812e8391 --- /dev/null +++ b/src/store/mutation.js @@ -0,0 +1,7 @@ +const mutations = (r => { + return r.keys().map(key => r(key).mutationTypes) +})(require.context('./module/', true, /^\.\/([\s\S])+\/index\.js$/)) + +const newMutations = Object.assign({}, ...mutations) + +export default newMutations