import { createStore } from 'vuex' import { IHttpResponse, IObject } from '@/types/interface' import { removeCache, getCache } from '@/utils/cache' import { dictApi } from '@/api/common' import { getMySystem, getUserInfoApi } from '@/api/system/login' import BaseService from '@/utils/baseService' import { ElMessage } from 'element-plus' export default createStore({ //存放的属性(数据变量)。 state: { initStatus: false, //开启vuex 缓存 menuList: [] as IObject[], dictData: sessionStorage.getItem('dictData') ?? {}, mySystemList: [] as IObject[], userInfo: { name: '', mobile: '' }, realNameAuthentication: sessionStorage.getItem('realNameAuthentication') ?? '', // 强制实名验证(0-已实名,1-未实名) needChangePasswordNow: sessionStorage.getItem('needChangePasswordNow') ?? '', // 强制修改密码(0-不需要提醒用户修改密码,1-需要提醒用户去修改密码) }, //从基本数据(state)派生的数据,相当于state的计算属性。 getters: { userName: (state) => { // 用户名 return state.userInfo.name }, }, actions: { updateMenu(context, value) { //声明变量的值,所传内容的值 context.commit('UpdateMenu', value) }, loginOut(context, value) { context.commit('LoginOut', value) context.commit('RealNameAuthentication', '') context.commit('NeedChangePasswordNow', '' ) }, backIndexClear(context, value) { context.commit('BackIndexClear', value) }, // 字典 dictData(context, value) { if(sessionStorage.getItem('dictData') && sessionStorage.getItem('dictData')[context]){ return } //字典全量接口 BaseService.post('/userw/dict/itemGetAll').then((res: any) => { if (res && res.code === 0) { let bizContent = res.data let data = bizContent.dictTypeAndItem || {} console.log(data,'dictTypeAndItem') let newData = {} for (let key in data) { let valList = data[key] let newList: any = [] valList.map((item) => { let tem = { ...item, } tem.label = item.name tem.value = item.code newList.push(tem) }) newData[key] = newList } sessionStorage.setItem('dictData', JSON.stringify(newData)) context.commit('DictData', newData) } }) }, // 授权的系统 getMySystem(context) { let cacheAccessToken = getCache( 'cacheAccessToken', { isSessionStorage: false }, {} ) let openId = cacheAccessToken['openId'] let params = { openId: openId, } // 根据用户标识返回其可访问的所有系统类型)iaw/rbac/systemTypeByAccountRole BaseService.post('/userw/rbac/systemTypeByAccountRole', params).then((res: any) => { if (res && res.statusCode === 0) { let bizContent = res.data console.log('可访问的系统',bizContent,'请求参数',bizContent); let systemTypeList = bizContent.list || [] context.commit('MysystemList', systemTypeList) } }) }, // 获取用户信息 getUserInfo(context) { let cacheAccessToken = getCache( 'cacheAccessToken', { isSessionStorage: false }, {} ) let openId = cacheAccessToken['openId'] let params = { openId: openId, } // // 根据用户标识返回其可访问的所有系统类型) // BaseService.post('/userw/staff/getinfobyopenid', params).then((res: any) => { // if (res && res.statusCode === 0) { // console.log(res); // let bizContent = res.data // context.commit('setUserInfo', { // name: bizContent.staffName, // mobile: bizContent.mobile, // }) // } else { // ElMessage.error(res.message) // } // }) }, realNameAuthentication(context, value) { context.commit('RealNameAuthentication', value) }, needChangePasswordNow(context, value) { context.commit('NeedChangePasswordNow', value) }, initData(context) { //初始化数据 // sessionStorage.clear() //清除所有 session context.dispatch('dictData') //获取枚举 context.dispatch('getMySystem') //根据用户标识返回其可访问的所有系统类型 context.dispatch('getUserInfo') //根据用户标识获取用户信息 context.commit('InitUpdate', true) //初始化更新类型 }, }, //每个mutations都有一个字符串的事件类型(type)和一个回调函数(hander)。 mutations: { UpdateMenu(state, value) { state.menuList = value }, LoginOut(state, value) { state.menuList = [] sessionStorage.clear(); //清除所有 session removeCache('selectedCodeCatch', true) removeCache('cacheAccessToken', true) removeCache('cacheUser', true) }, BackIndexClear(state, value) { //清除索引 state.initStatus = false state.menuList = [] state.dictData = { statusLis: [], } state.mySystemList = [] removeCache('selectedCodeCatch', true) }, DictData(state, value) { state.dictData = value }, setUserInfo(state, value) { state.userInfo = value }, MysystemList(state, value) { state.mySystemList = value }, InitUpdate(state, value) { state.initStatus = value }, RealNameAuthentication(state, value) { sessionStorage.setItem('realNameAuthentication', value) state.realNameAuthentication = value }, NeedChangePasswordNow(state, value) { sessionStorage.setItem('needChangePasswordNow', value) state.needChangePasswordNow = value }, }, modules: {}, })