Files
Yi.Framework/Yi.Vue2.x/src/store/modules/user.js
2022-05-22 20:58:17 +08:00

182 lines
5.0 KiB
JavaScript

import { getPer, setPer, getToken, setToken, getUser, setUser, removeToken } from '../../util/usertoken'
import accountApi from "@/api/accountApi"
//再导入axion请求
const state = { //状态
per: getPer(),
token: getToken(),
user: getUser(),
dark: false,
drawer: {
image: 0,
gradient: 1,
mini: false,
},
gradients: [
'rgba(0, 0, 0, .7), rgba(0, 0, 0, .7)',
'rgba(228, 226, 226, 1), rgba(255, 255, 255, 0.7)',
'rgba(244, 67, 54, .8), rgba(244, 67, 54, .8)',
],
images: [
'https://s1.ax1x.com/2022/03/26/qdNnbD.jpg',
'https://s1.ax1x.com/2022/03/26/qdNMUH.jpg',
'https://s1.ax1x.com/2022/03/26/qdNKVe.jpg',
'https://s1.ax1x.com/2022/03/26/qdNmDO.jpg'
],
notifications: [],
rtl: false
}
const mutations = { //变化//载荷
SET_PER(state, per) {
state.per = per
setPer(per)
},
SET_TOKEN(state, token) {
state.token = token
setToken(token)
},
SET_USER(state, user) {
state.user = user
setUser(user)
},
SET_NEW_USER(state, userInfo) {
state.user.user = userInfo
setUser(state.user)
},
SetGradient(state, gradient) {
state.drawer.gradient = gradient
},
SetImage(state, image) {
state.drawer.image = image
}
}
//在action中可以配合axios进行权限判断
const actions = { //动作
SetIcon({ commit, state }, icon) {
state.user.icon = icon
commit('SET_USER', state.user)
},
// qqUpdate({ state }, openid) {
// return new Promise((resolv, reject) => {
// qqApi.qqupdate(openid, state.user.id).then(resp => {
// resolv(resp)
// }).catch(error => {
// reject(error)
// })
// })
// },
// qqLogin({ commit }, openid) {
// return new Promise((resolv, reject) => {
// qqApi.qqlogin(openid).then(resp => {
// if (resp.status) {
// commit('SET_TOKEN', resp.data.token)
// commit('SET_USER', resp.data.user)
// }
// resolv(resp)
// }).catch(error => {
// reject(error)
// })
// })
// },
Login({ commit }, form) {
return new Promise((resolv, reject) => {
accountApi.login(form.username.trim(), form.password.trim()).then(resp => {
if (resp.status) {
commit('SET_TOKEN', resp.data.token)
accountApi.getUserAllInfo().then(resp2=>{
commit('SET_USER', resp2.data)
var code=[];
resp2.data.menus.forEach(element => {
if(element.permissionCode!="")
{
code.push(element.permissionCode)
}
});
commit('SET_PER', code)
resolv(resp)
})
}
else
{
resolv(resp)
}
}).catch(error => {
reject(error)
})
})
},
Register({ commit }, form) {
return new Promise((resolv, reject) => {
accountApi.register(form.username.trim(), form.password.trim(), form.email.trim(), form.code.trim()).then(resp => {
resolv(resp)
}).catch(error => {
reject(error)
})
})
},
Logged({ commit }) {
return new Promise((resolv, reject) => {
accountApi.logged().then(resp => {
resolv(resp)
}).catch(error => {
reject(error)
})
})
},
// GetUserInfo({ commit, state }) {
// return new Promise((resolv, reject) => {
// // getUserInfo(state.token).then(response => {
// // commit('SET_USER', response.data)
// // resolve(response)
// // }).catch(error=>{
// // reject(error)
// // })
// })
// },
Logout({ commit, state }) {
return new Promise((resolv, reject) => {
accountApi.logout().then(response => {
commit('SET_TOKEN', '')
commit('SET_USER', null)
removeToken()
resolv(response)
}).catch(error => {
reject(error)
})
})
}
}
const getters = { //类似与计算属性 派生属性
dark: (state, getters) => {
return (
state.dark ||
getters.gradient.indexOf('255, 255, 255') === -1
)
},
gradient: state => {
return state.gradients[state.drawer.gradient]
},
image: state => {
return state.drawer.image === '' ? state.drawer.image : state.images[state.drawer.image]
}
}
export default { state, mutations, actions, getters }