Files
xiaozhi-esp32-server/main/manager-web/src/store/index.js
T

77 lines
1.8 KiB
JavaScript

import { goToPage } from "@/utils";
import Vue from 'vue';
import Vuex from 'vuex';
import Api from '../apis/api';
import Constant from '../utils/constant';
Vue.use(Vuex)
export default new Vuex.Store({
state: {
token: '',
userInfo: {}, // 添加用户信息存储
pubConfig: { // 添加公共配置存储
version: '',
beianIcpNum: 'null',
beianGaNum: 'null',
allowUserRegister: false,
sm2PublicKey: ''
}
},
getters: {
getToken(state) {
if (!state.token) {
state.token = localStorage.getItem('token')
}
return state.token
},
getUserInfo(state) {
return state.userInfo
},
getPubConfig(state) {
return state.pubConfig
}
},
mutations: {
setToken(state, token) {
state.token = token
localStorage.setItem('token', token)
},
setUserInfo(state, userInfo) {
state.userInfo = userInfo
localStorage.setItem('userInfo', JSON.stringify(userInfo))
},
setPubConfig(state, config) {
state.pubConfig = config
localStorage.setItem('pubConfig', JSON.stringify(config))
},
clearAuth(state) {
state.token = ''
state.userInfo = {}
localStorage.removeItem('token')
localStorage.removeItem('userInfo')
}
},
actions: {
// 添加 logout action
logout({ commit }) {
return new Promise((resolve) => {
commit('clearAuth')
goToPage(Constant.PAGE.LOGIN, true);
})
},
// 添加获取公共配置的 action
fetchPubConfig({ commit }) {
return new Promise((resolve) => {
Api.user.getPubConfig(({ data }) => {
if (data.code === 0) {
commit('setPubConfig', data.data);
}
resolve();
});
});
}
},
modules: {
}
})