import Vue from 'vue' import Vuex from 'vuex' import { getSystemConfig } from '@/api/sysConfig' Vue.use(Vuex) const PRIVACY_KEY = 'store_privacyMobileMask' export default new Vuex.Store({ state: { user: JSON.parse(localStorage.getItem('store_user') || 'null'), storeInfo: JSON.parse(localStorage.getItem('store_info') || 'null'), token: localStorage.getItem('store_token') || '', scheduleDialogVisible: false, scheduleDialogMode: 'view', /** 手机号脱敏:1=开启,0=明文(默认) */ privacyMobileMask: Number(localStorage.getItem(PRIVACY_KEY)) === 1 ? 1 : 0 }, getters: { isLoggedIn: state => !!state.token, userName: state => state.user?.userName || state.user?.realName || '', userInfo: state => state.user || {}, storeInfo: state => state.storeInfo || {}, privacyMobileMask: state => state.privacyMobileMask }, mutations: { SET_USER(state, user) { state.user = user if (user) localStorage.setItem('store_user', JSON.stringify(user)) else localStorage.removeItem('store_user') }, SET_STORE(state, store) { state.storeInfo = store if (store) localStorage.setItem('store_info', JSON.stringify(store)) else localStorage.removeItem('store_info') }, SET_TOKEN(state, token) { state.token = token if (token) localStorage.setItem('store_token', token) else localStorage.removeItem('store_token') }, SET_PRIVACY_MOBILE_MASK(state, value) { const v = Number(value) === 1 ? 1 : 0 state.privacyMobileMask = v localStorage.setItem(PRIVACY_KEY, String(v)) }, LOGOUT(state) { state.user = null state.storeInfo = null state.token = '' state.privacyMobileMask = 0 localStorage.removeItem('store_token') localStorage.removeItem('store_user') localStorage.removeItem('store_info') localStorage.removeItem(PRIVACY_KEY) }, SET_SCHEDULE_DIALOG(state, visible) { state.scheduleDialogVisible = visible }, SET_SCHEDULE_DIALOG_MODE(state, mode) { state.scheduleDialogMode = mode || 'view' } }, actions: { /** 登录后 / 布局初始化拉取脱敏开关 */ loadPrivacyMobileMask({ commit }) { return getSystemConfig() .then(res => { const data = (res && res.data) || {} const value = data.privacyMobileMask == null ? 0 : data.privacyMobileMask commit('SET_PRIVACY_MOBILE_MASK', value) return Number(value) === 1 ? 1 : 0 }) .catch(() => { return Number(localStorage.getItem(PRIVACY_KEY)) === 1 ? 1 : 0 }) } } })