mall_client/zyhs3_uniapp/store/index.js

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