|
@@ -0,0 +1,189 @@
|
|
|
+import Vue from 'vue'
|
|
|
+import Vuex from 'vuex'
|
|
|
+import getters from './getters'
|
|
|
+import app from './modules/app'
|
|
|
+import settings from './modules/settings'
|
|
|
+import user from './modules/user'
|
|
|
+import { login, logout, getInfo } from '@/api/user'
|
|
|
+import { getToken, setToken, removeToken } from '@/utils/auth'
|
|
|
+import router from '../router/index'
|
|
|
+/* Layout */
|
|
|
+import Layout from '@/layout'
|
|
|
+
|
|
|
+Vue.use(Vuex)
|
|
|
+
|
|
|
+
|
|
|
+const getDefaultState = () => {
|
|
|
+ return {
|
|
|
+ token: getToken(),
|
|
|
+ name: '',
|
|
|
+ avatar: '',
|
|
|
+ routes: []
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const state = getDefaultState()
|
|
|
+
|
|
|
+const mutations = {
|
|
|
+ RESET_STATE: (state) => {
|
|
|
+ Object.assign(state, getDefaultState())
|
|
|
+ },
|
|
|
+ SET_TOKEN: (state, token) => {
|
|
|
+ state.token = token
|
|
|
+ },
|
|
|
+ SET_NAME: (state, name) => {
|
|
|
+ state.name = name
|
|
|
+ },
|
|
|
+ SET_AVATAR: (state, avatar) => {
|
|
|
+ state.avatar = avatar
|
|
|
+ },
|
|
|
+ // 移除用户
|
|
|
+ REMOVE: (state) => {
|
|
|
+ state.name = ''
|
|
|
+ state.addRoutes = []
|
|
|
+ //退出后,改变还原静态路由
|
|
|
+ removeArrayData(constantRoutes)
|
|
|
+ },
|
|
|
+ ADD_ROUTES: (state, routes) => {
|
|
|
+ state.addRoutes = routes
|
|
|
+ routes.forEach((i, index) => {
|
|
|
+ // 从第3+index个位置插入
|
|
|
+ constantRoutes.splice(3 + index, 0, i)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ SET_MENULIST: (state, menuList) => {
|
|
|
+ console.log(state.menuList = menuList)
|
|
|
+ state.menuList = menuList
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const actions = {
|
|
|
+ // user login
|
|
|
+ login({ commit }, userInfo) {
|
|
|
+ const { username, password } = userInfo
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ login({ username: username.trim(), password: password }).then(response => {
|
|
|
+ var time = new Date().getTime()
|
|
|
+ if (response.flag == true) {
|
|
|
+ var data = {
|
|
|
+ token: time
|
|
|
+ }
|
|
|
+ commit('SET_TOKEN', data.token)
|
|
|
+ setToken(data.token)
|
|
|
+ resolve()
|
|
|
+ } else {
|
|
|
+ reject("输入的账号密码有误!")
|
|
|
+ }
|
|
|
+ }).catch(error => {
|
|
|
+ reject(error)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // get user info
|
|
|
+ getInfo({ commit, state }, data) {
|
|
|
+ const { parentId, userId } = data
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ getInfo({ parentId: parentId, userId: userId }).then(response => {
|
|
|
+ // console.log(response)
|
|
|
+ var arrayList = [];
|
|
|
+ for (let i = 0; i < response.length; i++) {
|
|
|
+ arrayList.push({
|
|
|
+ path: response[i].path,
|
|
|
+ component: Layout,
|
|
|
+ redirect: response[i].url,
|
|
|
+ name: response[i].name,
|
|
|
+ meta: {
|
|
|
+ title: response[i].title,
|
|
|
+ icon: response[i].icon
|
|
|
+ },
|
|
|
+ children: []
|
|
|
+ })
|
|
|
+ for (let j = 0; j < response[i].children.length; j++) {
|
|
|
+ var new_response = response[i].children[j]
|
|
|
+ var url = new_response.url
|
|
|
+ arrayList[i].children.push({
|
|
|
+ path: new_response.path,
|
|
|
+ name: new_response.name,
|
|
|
+ component: (resolve) => require([`@/views` + `${url}`], resolve),
|
|
|
+ meta: {
|
|
|
+ title: new_response.title,
|
|
|
+ icon: new_response.icon
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // console.log(arrayList)
|
|
|
+
|
|
|
+ var List = [
|
|
|
+ {
|
|
|
+ path: '/index',
|
|
|
+ component: () =>
|
|
|
+ import ('@/views/index/index'),
|
|
|
+ hidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '/',
|
|
|
+ component: Layout,
|
|
|
+ redirect: '/index',
|
|
|
+ children: [{
|
|
|
+ path: 'index',
|
|
|
+ name: 'index',
|
|
|
+ component: () =>
|
|
|
+ import ('@/views/index/index'),
|
|
|
+ meta: { title: '首页', icon: 'home' }
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ path: '*',
|
|
|
+ redirect: '/404',
|
|
|
+ hidden: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ router.options.routes = arrayList
|
|
|
+ state.app.routes = router.options.routes
|
|
|
+ router.addRoutes(List)
|
|
|
+
|
|
|
+ }).catch(error => {
|
|
|
+ reject(error)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // user logout
|
|
|
+ logout({ commit, state }) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ logout().then((response) => {
|
|
|
+ removeToken() // must remove token first
|
|
|
+ // resetRouter()
|
|
|
+ commit('RESET_STATE')
|
|
|
+ resolve()
|
|
|
+ }).catch(error => {
|
|
|
+ reject(error)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // remove token
|
|
|
+ resetToken({ commit }) {
|
|
|
+ return new Promise(resolve => {
|
|
|
+ removeToken() // must remove token first
|
|
|
+ commit('RESET_STATE')
|
|
|
+ resolve()
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const store = new Vuex.Store({
|
|
|
+ modules: {
|
|
|
+ app,
|
|
|
+ settings,
|
|
|
+ user
|
|
|
+ },
|
|
|
+ getters,
|
|
|
+ actions,
|
|
|
+ state,
|
|
|
+ mutations,
|
|
|
+ router
|
|
|
+})
|
|
|
+
|
|
|
+export default store
|