import storage from '@/utils/storage' import constant from '@/utils/constant' import { login, logout, getInfo } from '@/api/login' import { getToken, setToken, removeToken } from '@/utils/auth' import { UserState, UserForm } from '@/types/store' import { Module } from 'vuex' const user: Module = { state: { token: getToken(), name: storage.get(constant.name), avatar: storage.get(constant.avatar), roles: storage.get(constant.roles), permissions: storage.get(constant.permissions), userOrWorker: storage.get(constant.userOrWorker), nickName: storage.get(constant.nickName), userId: storage.get(constant.userId), messageCount: 0, wsManager: null, addressInfo: { name: '重庆市永川区', latitude: 29.333000000000002, longitude: 105.94909000000001, cityCode: { code: [500000, 500100, 500118], data: ['重庆市', '重庆市', '永川区'], index: [21, 0, 17], }, } }, mutations: { SET_TOKEN: (state, token: string) => { state.token = token }, SET_NAME: (state, name: string) => { state.name = name storage.set(constant.name, name) }, SET_AVATAR: (state, avatar: string) => { state.avatar = avatar storage.set(constant.avatar, avatar) }, SET_ROLES: (state, roles: Array) => { state.roles = roles storage.set(constant.roles, roles) }, SET_PERMISSIONS: (state, permissions: Array) => { state.permissions = permissions storage.set(constant.permissions, permissions) }, SET_USERORWORKER: (state, userOrWorker: Array) => { state.userOrWorker = userOrWorker storage.set(constant.userOrWorker, userOrWorker) }, SET_NICKNAME: (state, nickName: String) => { state.nickName = nickName storage.set(constant.nickName, nickName) }, SET_USERID: (state, id: String) => { state.userId = id }, SET_MESSAGECOUNT: (state, num: Number) => { console.log("TCL: num", num) state.messageCount = num }, SET_MESSAGE: (state, ms: any) => { state.wsManager = ms }, SET_ADDRESSINFO: (state, data: any) => { state.addressInfo = data }, }, actions: { // 登录 Login({ commit }, userInfo: UserForm) { const username = userInfo.username const password = userInfo.password const code = userInfo.code const uuid = userInfo.uuid const referrerType = userInfo.referrerType const referrerId = userInfo.referrerId // 确保经纬度保留6位小数 - 直接使用字符串格式 const latitude = typeof userInfo.latitude === 'number' ? userInfo.latitude.toFixed(6) : (userInfo.latitude?.toString() || "0.000000") const longitude = typeof userInfo.longitude === 'number' ? userInfo.longitude.toFixed(6) : (userInfo.longitude?.toString() || "0.000000") console.log('Store发送经纬度字符串格式:', latitude, longitude) return new Promise((resolve, reject) => { login(username, password, code, uuid, referrerType, referrerId, latitude, longitude).then((res: any) => { setToken(res.token) commit('SET_TOKEN', res.token) resolve(res) }).catch(error => { reject(error) }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then((res: any) => { const user = res.user const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "/static/serverImg/mine/user.png" : user.avatar const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName if (res.roles && res.roles.length > 0) { commit('SET_ROLES', res.roles) commit('SET_PERMISSIONS', res.permissions) } else { commit('SET_ROLES', ['ROLE_DEFAULT']) } console.log(res.user.userOrWorker, '>>>>>>res.user.userOrWorker'); if (res.user) commit('SET_USERORWORKER', res.user.userOrWorker) console.log(state.userOrWorker, '>>>>>>'); commit('SET_NAME', username) commit('SET_AVATAR', avatar) commit('SET_NICKNAME', res.user.nickName) commit('SET_USERID', res.user.userId) uni.$u.connectSoket(res.user.userId); resolve(res) }).catch(error => { reject(error) }) }) }, // 退出系统 LogOut({ commit, state }) { return new Promise((resolve, reject) => { logout().then((res) => { commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) removeToken() //清除soket uni.$u.closeSoket(); uni.setStorageSync('userType', 1) // uni.setStorageSync('userId', null) uni.removeStorageSync('userId') storage.clean() resolve(res) }).catch(error => { reject(error) }) }) }, handleMessageCount({ commit, state }, count) { commit('SET_MESSAGECOUNT', count); }, handleSoket({ commit, state }, ms) { commit('SET_MESSAGE', ms); }, handlerAddress({ commit, state }, address) { commit('SET_ADDRESSINFO', address); }, // 退出系统 ClearUserInfo({ commit, state }) { console.log('ClearUserInfo'); return new Promise((resolve, reject) => { commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) removeToken() uni.$u.closeSoket(); uni.removeStorageSync('userId') storage.clean() }) }, } } export default user