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) } }) }, } })