215 lines
5.3 KiB
JavaScript
215 lines
5.3 KiB
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
Vue.use(Vuex)
|
|
|
|
import url from "@/common/http/url.js"
|
|
import { sendRequest } from "@/common/http/api.js"
|
|
import user from '@/store/modules/user'
|
|
// import getters from './getters'
|
|
import { logout } from '@/api/login.js';
|
|
|
|
export default new Vuex.Store({
|
|
state: {
|
|
// imDemo
|
|
isLogin: false,
|
|
imToken: "",
|
|
imUserInfo: "",
|
|
// imDemo
|
|
|
|
token: "",
|
|
userInfo: uni.getStorageSync("userInfo") || {},
|
|
imClient: null,
|
|
isOtherOnline: true, // 默认在线
|
|
unReadNum: 0, // 未读消息数量
|
|
isHandNewMsg: false, // 是否有新消息
|
|
receiveMessage: {}, // 接收新消息
|
|
interactionOnlineStatus: {}, // 互动页面专用,用户是否在线
|
|
reminderStatus: uni.getStorageSync("reminderStatus") || ['voice'], // 新消息提醒 voice-声音 shock-震动
|
|
locationObj: uni.getStorageSync("locationObj") || null,
|
|
myAsset: uni.getStorageSync("myAsset") || [],
|
|
sysTem: {},
|
|
isLogin: uni.getStorageSync("userInfo") ? true : false
|
|
},
|
|
modules: {
|
|
user
|
|
},
|
|
getters:{
|
|
imClient: state => state.imClient,
|
|
// 是否登录 imDemo
|
|
hasLogin(state) {
|
|
return !!state.imToken;
|
|
},
|
|
token: state => state.user.token,
|
|
avatar: state => state.user.avatar,
|
|
name: state => state.user.name,
|
|
roles: state => state.user.roles,
|
|
permissions: state => state.user.permissions,
|
|
userInfo: state => state.user.userInfo
|
|
},
|
|
mutations: {
|
|
setToken(state, val){
|
|
state.token = val
|
|
uni.setStorageSync("token", val)
|
|
},
|
|
setUserInfo(state, val) {
|
|
state.userInfo = val;
|
|
uni.setStorageSync("userInfo", val)
|
|
},
|
|
async getMyAsset (state) {
|
|
await this.$http("GET", url.user.getMyAsset).then(res =>{
|
|
let { code, data } = res;
|
|
console.log('res', res)
|
|
if (code == 200) {
|
|
state.myAsset = data;
|
|
}
|
|
})
|
|
},
|
|
async logout(state) {
|
|
|
|
// try{
|
|
// #ifdef APP-PLUS
|
|
// getApp().globalData.socket.sendSocketMessage({cmd: 14, userId: state.userInfo.imAccount})
|
|
// getApp().closeSocket()
|
|
// getApp().closeInterval()
|
|
// #endif
|
|
|
|
uni.reLaunch({
|
|
url: "/pages/login/login"
|
|
})
|
|
await sendRequest("POST", url.login.logout);
|
|
await logout();
|
|
state.userInfo = {};
|
|
state.token = "";
|
|
state.imClient = null;
|
|
|
|
let accountList = uni.getStorageSync('accountList');
|
|
uni.clearStorageSync();
|
|
uni.setStorageSync("agreePrivacy", true) // 隐私协议不清除
|
|
uni.setStorageSync("accountList", accountList)
|
|
|
|
|
|
|
|
// }catch(err){
|
|
// // 聊天退出
|
|
// uni.$TUIKit.logout().then(()=>{
|
|
// uni.reLaunch({
|
|
// url: "/pages/login/index"
|
|
// })
|
|
// })
|
|
// }
|
|
|
|
},
|
|
setImClient(state, data){
|
|
state.imClient = data
|
|
},
|
|
// 更新对方在线状态
|
|
setOtherOnlineStatus(state, data) {
|
|
state.isOtherOnline = data
|
|
},
|
|
setUnReadNum(state, data) {
|
|
state.unReadNum = data
|
|
},
|
|
setHandNewMsg(state, data) {
|
|
state.isHandNewMsg = data
|
|
},
|
|
// 赋值接收到的消息
|
|
setReceiveMessage(state, data) {
|
|
state.receiveMessage = data;
|
|
},
|
|
// 设置互动页面用户在线
|
|
setInteractionOnlineStatus(state, data) {
|
|
state.interactionOnlineStatus = data;
|
|
},
|
|
// 设置新消息提醒状态
|
|
setReminderStatus(state, data) {
|
|
state.reminderStatus = data;
|
|
uni.setStorageSync("reminderStatus", data)
|
|
},
|
|
// 设置定位经纬度信息
|
|
setLocation (state, data) {
|
|
state.locationObj = data;
|
|
uni.setStorageSync("locationObj", data)
|
|
},
|
|
// 设置资产信息
|
|
setAsset (state, data) {
|
|
state.myAsset = data;
|
|
uni.setStorageSync('myAsset', data);
|
|
},
|
|
// 设置系统信息
|
|
setSysTem (state, data) {
|
|
state.sysTem = data;
|
|
},
|
|
|
|
|
|
|
|
// imDemo start
|
|
imLogin(state, val) {
|
|
state.isLogin = true;
|
|
},
|
|
//更新token
|
|
setImToken(state, data) {
|
|
const { imToken, imUserInfo, uid, userID, userSig } = data;
|
|
state.isLogin = true;
|
|
state.imToken = imToken;
|
|
state.imUserInfo = imUserInfo;
|
|
|
|
// uni.setStorageSync("imToken", imToken);
|
|
// uni.setStorageSync("imUserInfo", imUserInfo);
|
|
uni.setStorageSync("userID", userID);
|
|
uni.setStorageSync("userSig", userSig);
|
|
this.dispatch("getUserInfo"); //更新用户信息
|
|
},
|
|
//退出登录
|
|
imLogout(state) {
|
|
state.imToken = "";
|
|
state.imUserInfo = "";
|
|
state.isLogin = false;
|
|
|
|
setTimeout(() => {
|
|
state.imUserInfo = {};
|
|
}, 1100);
|
|
},
|
|
//更新state的数据
|
|
setStateAttr(state, param) {
|
|
if (param instanceof Array) {
|
|
for (let item of param) {
|
|
state[item.key] = item.val;
|
|
}
|
|
} else {
|
|
state[param.key] = param.val;
|
|
}
|
|
},
|
|
//更新state obj对象的数据
|
|
setStateObj(state, param) {
|
|
for (let item of param) {
|
|
state[item.obj][item.key] = item.val;
|
|
}
|
|
},
|
|
setIsLogin(state, data) {
|
|
state.isLogin = data;
|
|
}
|
|
// imDemo end
|
|
},
|
|
actions: {
|
|
//更新用户信息 getUserInfo imDemo
|
|
async getUserInfo({ state, commit }) {},
|
|
//更新用户信息 getUserInfo imDemo
|
|
setIMClient({ commit }, data) {
|
|
commit("setImClient", data)
|
|
},
|
|
getMyAsset ({ commit, state }) {
|
|
sendRequest("GET", url.user.getMyAsset).then(res =>{
|
|
let { code, data } = res;
|
|
console.log('res', res)
|
|
data.forEach((item) => {
|
|
if (item.assetAccount == null) item.assetAccount = 0;
|
|
})
|
|
if (code == 200) {
|
|
// state.myAsset = data;
|
|
commit("setAsset", data)
|
|
}
|
|
})
|
|
},
|
|
}
|
|
|
|
}) |