|  | @@ -1,170 +1,185 @@
 | 
	
		
			
				|  |  | -import { login, logout, getInfo } from '@/api/user'
 | 
	
		
			
				|  |  | -import { getToken, setToken, removeToken } from '@/utils/auth'
 | 
	
		
			
				|  |  | -import router, { resetRouter } from '@/router'
 | 
	
		
			
				|  |  | -// refreshtoken
 | 
	
		
			
				|  |  | -const state = {
 | 
	
		
			
				|  |  | -  token: getToken(),
 | 
	
		
			
				|  |  | -  name: '',
 | 
	
		
			
				|  |  | -  avatar: '',
 | 
	
		
			
				|  |  | -  introduction: '',
 | 
	
		
			
				|  |  | -  roles: [],
 | 
	
		
			
				|  |  | -  permissions: [],
 | 
	
		
			
				|  |  | -  permisaction: []
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -const mutations = {
 | 
	
		
			
				|  |  | -  SET_TOKEN: (state, token) => {
 | 
	
		
			
				|  |  | -    state.token = token
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_INTRODUCTION: (state, introduction) => {
 | 
	
		
			
				|  |  | -    state.introduction = introduction
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_NAME: (state, name) => {
 | 
	
		
			
				|  |  | -    state.name = name
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_USERID: (state, userId) => {
 | 
	
		
			
				|  |  | -    state.userId = userId
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_AVATAR: (state, avatar) => {
 | 
	
		
			
				|  |  | -    if (avatar.indexOf('http') !== -1) {
 | 
	
		
			
				|  |  | -      state.avatar = avatar
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -      state.avatar = process.env.VUE_APP_BASE_API + avatar
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_ROLES: (state, roles) => {
 | 
	
		
			
				|  |  | -    state.roles = roles
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_PERMISSIONS: (state, permisaction) => {
 | 
	
		
			
				|  |  | -    state.permisaction = permisaction
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_REFRESH_TOKEN: (state, refreshToken) => {
 | 
	
		
			
				|  |  | -    state.refreshToken = refreshToken
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  SET_EXPIRES_IN: (state, expiresIn) => {
 | 
	
		
			
				|  |  | -    state.expiresIn = expiresIn
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -const actions = {
 | 
	
		
			
				|  |  | -  // user login
 | 
	
		
			
				|  |  | -  login({ commit }, userInfo) {
 | 
	
		
			
				|  |  | -    const { username, password } = userInfo
 | 
	
		
			
				|  |  | -    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | -      login({ username: username.trim(), password: password, clientId: 'system', clientSecret: 'system' }).then(response => {
 | 
	
		
			
				|  |  | -        const { data } = response
 | 
	
		
			
				|  |  | -        if (response.code == 200) {
 | 
	
		
			
				|  |  | -          console.log(data)
 | 
	
		
			
				|  |  | -          const token = data.authentication.access_token
 | 
	
		
			
				|  |  | -          commit('SET_REFRESH_TOKEN', data.authentication.refresh_token)
 | 
	
		
			
				|  |  | -          commit('SET_EXPIRES_IN', data.authentication.expires_in)
 | 
	
		
			
				|  |  | -          commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | -          setToken(token)
 | 
	
		
			
				|  |  | -          resolve()
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        // const { token } = response
 | 
	
		
			
				|  |  | -      }).catch(error => {
 | 
	
		
			
				|  |  | -        reject(error)
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // get user info
 | 
	
		
			
				|  |  | -  getInfo({ commit, state }) {
 | 
	
		
			
				|  |  | -    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | -      getInfo().then(response => {
 | 
	
		
			
				|  |  | -        if (!response || !response.data) {
 | 
	
		
			
				|  |  | -          commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | -          removeToken()
 | 
	
		
			
				|  |  | -          resolve()
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const { userId, roles, name, avatar, introduction, permissions } = response.data
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // roles must be a non-empty array
 | 
	
		
			
				|  |  | -        if (!roles || roles.length <= 0) {
 | 
	
		
			
				|  |  | -          reject('getInfo: roles must be a non-null array!')
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        commit('SET_PERMISSIONS', permissions)
 | 
	
		
			
				|  |  | -        commit('SET_ROLES', roles)
 | 
	
		
			
				|  |  | -        commit('SET_NAME', name)
 | 
	
		
			
				|  |  | -        commit('SET_USERID', userId)
 | 
	
		
			
				|  |  | -        commit('SET_AVATAR', avatar)
 | 
	
		
			
				|  |  | -        commit('SET_INTRODUCTION', introduction)
 | 
	
		
			
				|  |  | -        resolve(response)
 | 
	
		
			
				|  |  | -      }).catch(() => {
 | 
	
		
			
				|  |  | -        commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | -        setToken('')
 | 
	
		
			
				|  |  | -        router.push({ path: '/' })
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  // 退出系统
 | 
	
		
			
				|  |  | -  LogOut({ commit, state }) {
 | 
	
		
			
				|  |  | -    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | -      logout(state.token).then(() => {
 | 
	
		
			
				|  |  | -        commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | -        commit('SET_ROLES', [])
 | 
	
		
			
				|  |  | -        commit('SET_PERMISSIONS', [])
 | 
	
		
			
				|  |  | -        removeToken()
 | 
	
		
			
				|  |  | -        resolve()
 | 
	
		
			
				|  |  | -      }).catch(error => {
 | 
	
		
			
				|  |  | -        reject(error)
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  // 刷新token
 | 
	
		
			
				|  |  | -  // refreshToken({ commit, state }) {
 | 
	
		
			
				|  |  | -  //   return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | -  //     refreshtoken({ token: state.token }).then(response => {
 | 
	
		
			
				|  |  | -  //       const { token } = response
 | 
	
		
			
				|  |  | -  //       commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | -  //       setToken(token)
 | 
	
		
			
				|  |  | -  //       resolve()
 | 
	
		
			
				|  |  | -  //     }).catch(error => {
 | 
	
		
			
				|  |  | -  //       reject(error)
 | 
	
		
			
				|  |  | -  //     })
 | 
	
		
			
				|  |  | -  //   })
 | 
	
		
			
				|  |  | -  // },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // remove token
 | 
	
		
			
				|  |  | -  resetToken({ commit }) {
 | 
	
		
			
				|  |  | -    return new Promise(resolve => {
 | 
	
		
			
				|  |  | -      commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | -      removeToken()
 | 
	
		
			
				|  |  | -      resolve()
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // dynamically modify permissions
 | 
	
		
			
				|  |  | -  changeRoles({ commit, dispatch }, role) {
 | 
	
		
			
				|  |  | -    return new Promise(async resolve => {
 | 
	
		
			
				|  |  | -      const token = role + '-token'
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | -      setToken(token)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      const { roles } = await dispatch('getInfo')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      resetRouter()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // generate accessible routes map based on roles
 | 
	
		
			
				|  |  | -      const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // dynamically add accessible routes
 | 
	
		
			
				|  |  | -      router.addRoutes(accessRoutes)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // reset visited views and cached views
 | 
	
		
			
				|  |  | -      dispatch('tagsView/delAllViews', null, { root: true })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      resolve()
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default {
 | 
	
		
			
				|  |  | -  namespaced: true,
 | 
	
		
			
				|  |  | -  state,
 | 
	
		
			
				|  |  | -  mutations,
 | 
	
		
			
				|  |  | -  actions
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +import { login, logout, getInfo } from '@/api/user'
 | 
	
		
			
				|  |  | +import { initData } from '@/api/dashboard'
 | 
	
		
			
				|  |  | +import { getToken, setToken, removeToken } from '@/utils/auth'
 | 
	
		
			
				|  |  | +import { initNumberHtml } from '@/utils/costum'
 | 
	
		
			
				|  |  | +import router, { resetRouter } from '@/router'
 | 
	
		
			
				|  |  | +// refreshtoken
 | 
	
		
			
				|  |  | +const state = {
 | 
	
		
			
				|  |  | +  token: getToken(),
 | 
	
		
			
				|  |  | +  name: '',
 | 
	
		
			
				|  |  | +  avatar: '',
 | 
	
		
			
				|  |  | +  introduction: '',
 | 
	
		
			
				|  |  | +  roles: [],
 | 
	
		
			
				|  |  | +  permissions: [],
 | 
	
		
			
				|  |  | +  permisaction: []
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const mutations = {
 | 
	
		
			
				|  |  | +  SET_TOKEN: (state, token) => {
 | 
	
		
			
				|  |  | +    state.token = token
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_INTRODUCTION: (state, introduction) => {
 | 
	
		
			
				|  |  | +    state.introduction = introduction
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_NAME: (state, name) => {
 | 
	
		
			
				|  |  | +    state.name = name
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_USERID: (state, userId) => {
 | 
	
		
			
				|  |  | +    state.userId = userId
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_AVATAR: (state, avatar) => {
 | 
	
		
			
				|  |  | +    if (avatar.indexOf('http') !== -1) {
 | 
	
		
			
				|  |  | +      state.avatar = avatar
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      state.avatar = process.env.VUE_APP_BASE_API + avatar
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_ROLES: (state, roles) => {
 | 
	
		
			
				|  |  | +    state.roles = roles
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_PERMISSIONS: (state, permisaction) => {
 | 
	
		
			
				|  |  | +    state.permisaction = permisaction
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_REFRESH_TOKEN: (state, refreshToken) => {
 | 
	
		
			
				|  |  | +    state.refreshToken = refreshToken
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  SET_EXPIRES_IN: (state, expiresIn) => {
 | 
	
		
			
				|  |  | +    state.expiresIn = expiresIn
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const actions = {
 | 
	
		
			
				|  |  | +  // user login
 | 
	
		
			
				|  |  | +  login({ commit }, userInfo) {
 | 
	
		
			
				|  |  | +    const { username, password } = userInfo
 | 
	
		
			
				|  |  | +    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +      login({ username: username.trim(), password: password, clientId: 'system', clientSecret: 'system' }).then(response => {
 | 
	
		
			
				|  |  | +        const { data } = response
 | 
	
		
			
				|  |  | +        if (response.code == 200) {
 | 
	
		
			
				|  |  | +          console.log(data)
 | 
	
		
			
				|  |  | +          const token = data.authentication.access_token
 | 
	
		
			
				|  |  | +          commit('SET_REFRESH_TOKEN', data.authentication.refresh_token)
 | 
	
		
			
				|  |  | +          commit('SET_EXPIRES_IN', data.authentication.expires_in)
 | 
	
		
			
				|  |  | +          commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | +          setToken(token)
 | 
	
		
			
				|  |  | +          resolve()
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // const { token } = response
 | 
	
		
			
				|  |  | +      }).catch(error => {
 | 
	
		
			
				|  |  | +        reject(error)
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // get user info
 | 
	
		
			
				|  |  | +  getInfo({ commit, state }) {
 | 
	
		
			
				|  |  | +    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +      getInfo().then(response => {
 | 
	
		
			
				|  |  | +        if (!response || !response.data) {
 | 
	
		
			
				|  |  | +          commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | +          removeToken()
 | 
	
		
			
				|  |  | +          resolve()
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const { userId, roles, name, avatar, introduction, permissions } = response.data
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // roles must be a non-empty array
 | 
	
		
			
				|  |  | +        if (!roles || roles.length <= 0) {
 | 
	
		
			
				|  |  | +          reject('getInfo: roles must be a non-null array!')
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        commit('SET_PERMISSIONS', permissions)
 | 
	
		
			
				|  |  | +        commit('SET_ROLES', roles)
 | 
	
		
			
				|  |  | +        commit('SET_NAME', name)
 | 
	
		
			
				|  |  | +        commit('SET_USERID', userId)
 | 
	
		
			
				|  |  | +        commit('SET_AVATAR', avatar)
 | 
	
		
			
				|  |  | +        commit('SET_INTRODUCTION', introduction)
 | 
	
		
			
				|  |  | +        resolve(response)
 | 
	
		
			
				|  |  | +      }).catch(() => {
 | 
	
		
			
				|  |  | +        commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | +        setToken('')
 | 
	
		
			
				|  |  | +        router.push({ path: '/' })
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  getInitData({ commit, state }) {
 | 
	
		
			
				|  |  | +    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +      initData().then(response => {
 | 
	
		
			
				|  |  | +        const result = response.data
 | 
	
		
			
				|  |  | +        // 添加我的代办显示数据
 | 
	
		
			
				|  |  | +        if(result.count.upcoming && result.count.upcoming > 0) {
 | 
	
		
			
				|  |  | +          initNumberHtml(result.count.upcoming)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      resolve(response)
 | 
	
		
			
				|  |  | +    }).catch(() => {
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  // 退出系统
 | 
	
		
			
				|  |  | +  LogOut({ commit, state }) {
 | 
	
		
			
				|  |  | +    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +      logout(state.token).then(() => {
 | 
	
		
			
				|  |  | +        commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | +        commit('SET_ROLES', [])
 | 
	
		
			
				|  |  | +        commit('SET_PERMISSIONS', [])
 | 
	
		
			
				|  |  | +        removeToken()
 | 
	
		
			
				|  |  | +        resolve()
 | 
	
		
			
				|  |  | +      }).catch(error => {
 | 
	
		
			
				|  |  | +        reject(error)
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  // 刷新token
 | 
	
		
			
				|  |  | +  // refreshToken({ commit, state }) {
 | 
	
		
			
				|  |  | +  //   return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +  //     refreshtoken({ token: state.token }).then(response => {
 | 
	
		
			
				|  |  | +  //       const { token } = response
 | 
	
		
			
				|  |  | +  //       commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | +  //       setToken(token)
 | 
	
		
			
				|  |  | +  //       resolve()
 | 
	
		
			
				|  |  | +  //     }).catch(error => {
 | 
	
		
			
				|  |  | +  //       reject(error)
 | 
	
		
			
				|  |  | +  //     })
 | 
	
		
			
				|  |  | +  //   })
 | 
	
		
			
				|  |  | +  // },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // remove token
 | 
	
		
			
				|  |  | +  resetToken({ commit }) {
 | 
	
		
			
				|  |  | +    return new Promise(resolve => {
 | 
	
		
			
				|  |  | +      commit('SET_TOKEN', '')
 | 
	
		
			
				|  |  | +      removeToken()
 | 
	
		
			
				|  |  | +      resolve()
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // dynamically modify permissions
 | 
	
		
			
				|  |  | +  changeRoles({ commit, dispatch }, role) {
 | 
	
		
			
				|  |  | +    return new Promise(async resolve => {
 | 
	
		
			
				|  |  | +      const token = role + '-token'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      commit('SET_TOKEN', token)
 | 
	
		
			
				|  |  | +      setToken(token)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const { roles } = await dispatch('getInfo')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      resetRouter()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // generate accessible routes map based on roles
 | 
	
		
			
				|  |  | +      const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // dynamically add accessible routes
 | 
	
		
			
				|  |  | +      router.addRoutes(accessRoutes)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // reset visited views and cached views
 | 
	
		
			
				|  |  | +      dispatch('tagsView/delAllViews', null, { root: true })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      resolve()
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  namespaced: true,
 | 
	
		
			
				|  |  | +  state,
 | 
	
		
			
				|  |  | +  mutations,
 | 
	
		
			
				|  |  | +  actions
 | 
	
		
			
				|  |  | +}
 |