租房小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

86 lines
1.8 KiB

import Vue from 'vue'
import Vuex from 'vuex'
import { getConfig, getInfo } from "@/common/api.js"
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
token:"",
userInfo : {}, //用户信息
vipInfo : {},
configList : {},
},
mutations: {
// 初始化配置
initConfig(state){
console.log('initConfig 开始执行')
if (!uni.$uv || !uni.$uv.http) {
console.error('uni.$uv.http 未初始化,请检查 uvUI 配置')
return
}
getConfig({}).then(res=>{
console.log('getConfig 请求成功:', res)
uni.setStorageSync('configList', res.result)
const configList = {
...state.configList,
}
if (res.code == 200) {
res.result.forEach(n => {
configList[n.keyName] = n.keyContent;
configList[n.keyName + '_keyValue'] = n.keyValue;
});
}
state.configList = configList
uni.$emit('initConfig', state.configList)
console.log('配置初始化完成:', state.configList)
}).catch(error=>{
console.error('getConfig 请求失败:', error)
})
},
setUserInfo(state,obj){
state.userInfo = obj.userInfo
state.token = obj.token
},
getUserInfo(state, fn){
if(!uni.getStorageSync('token')){
return
}
getInfo({}).then(result=>{
state.userInfo = result.result.member || {}
state.vipInfo = result.result.vipInfo || {}
if(!result.result.member.nickName){
uni.navigateTo({
url:"/pages/login/index"
})
}
})
},
logout(state){
uni.showModal({
title: '确认退出登录吗',
success(r) {
if(r.confirm){
state.userInfo = {}
state.token = ""
uni.removeStorageSync('token')
uni.redirectTo({
url: '/pages/index/index'
})
}
}
})
},
},
})
export default store