/** * 用户状态管理模块 */ import { reactive, computed } from 'vue'; import userApi from '@/api/user.js'; // 用户状态数据 const state = reactive({ userInfo: { nickname: '单卡用户', // 昵称 avatar: 'https://img1.baidu.com/it/u=2462918877,1866131262&fm=253&fmt=auto&app=138&f=JPEG?w=506&h=500', // 头像 deviceId: '' // 设备ID }, // 用户信息 isLoggedIn: false, // 登录状态 error: null // 错误信息 }); // 计算属性 const getters = { // 是否已登录 isLoggedIn: computed(() => state.isLoggedIn && !!state.userInfo.deviceId), // 用户信息 userInfo: computed(() => state.userInfo) }; // 操作方法 const actions = { // 获取Cookies async getCookie() { try { return userApi.getCookie(); } catch (error) { console.error('获取微信授权失败:', error); state.error = error.message; throw error; } }, // 登录 async login(iccidMark) { try { // 调用login接口 const result = await userApi.login(iccidMark); // 如果登录成功,设置登录状态和用户信息 if (!result.system_result_message_key) { state.isLoggedIn = true; state.userInfo.deviceId = iccidMark; // 同步到本地存储 uni.setStorageSync('device_id', iccidMark); uni.setStorageSync('isLoggedIn', true); console.log('登录成功,已设置登录状态'); } return result; } catch (error) { console.error('登录失败:', error); state.error = error.message; state.isLoggedIn = false; throw error; } }, // 获取用户实名信息 async getRealNameInfo() { try { return userApi.getRealNameInfo(); } catch (error) { console.error('获取用户实名信息失败:', error); state.error = error.message; throw error; } }, // 获取用户信息 async getUserInfo() { try { const result = await userApi.getUserInfo(); if (result?.entity) { state.userInfo.avatar = result.entity.headimgurl state.userInfo.nickname = result.entity.nickname } else { const result_once = await userApi.getUserInfo(); if (result_once?.entity) { state.userInfo.avatar = result_once.entity.headimgurl state.userInfo.nickname = result_once.entity.nickname } } return result } catch (error) { console.error('获取用户信息失败:', error); state.error = error.message; throw error; } }, // 获取wxUrl async getWxUrl() { try { return userApi.getWxUrl(); } catch (error) { console.error('获取获取wxUrl失败:', error); state.error = error.message; throw error; } }, // 获取getOpenId async getOpenId() { try { return userApi.getOpenId(); } catch (error) { console.error('获取获取getOpenId失败:', error); state.error = error.message; throw error; } }, // 微信授权 async getAuthorize(code) { try { return userApi.getAuthorize(code); } catch (error) { console.error('获取微信授权失败:', error); state.error = error.message; throw error; } }, // 获取微信支付签名 async getWxPaySign() { try { return userApi.getWxPaySign(); } catch (error) { console.error('获取微信支付签名失败:', error); state.error = error.message; throw error; } }, // 恢复出厂设置 async restDevice(deviceId) { try { return userApi.restDevice(deviceId); } catch (error) { console.error('恢复出厂设置失败:', error); state.error = error.message; throw error; } }, // 重启设备 async restartDevice(deviceId) { try { return userApi.restartDevice(deviceId); } catch (error) { console.error('重启设备失败:', error); state.error = error.message; throw error; } }, // 获取设备信息 async getCardInfo() { try { return userApi.getCardInfo(); } catch (error) { console.error('获取设备信息失败:', error); state.error = error.message; throw error; } }, // 获取设备信息(管理平台) async getDeviceInfoAdmin(device_id) { try { return userApi.getDeviceInfoAdmin(device_id); } catch (error) { console.error('获取设备信息(管理平台)', error); state.error = error.message; throw error; } }, // 获取首页信息-设备列表 async getSwitchCardList() { try { return userApi.getSwitchCardList(); } catch (error) { console.error('获取首页信息-设备列表失败:', error); state.error = error.message; throw error; } }, // 修改WiFi async modifyWifi(data) { try { return userApi.modifyWifi(data); } catch (error) { console.error('修改WiFi失败:', error); state.error = error.message; throw error; } }, // 获取套餐列表 async getPackageList() { try { return userApi.getPackageList(); } catch (error) { console.error('获取套餐列表失败:', error); state.error = error.message; throw error; } }, // 智能诊断 async intelligentDiagnosis() { try { return userApi.intelligentDiagnosis(); } catch (error) { console.error('智能诊断失败:', error); state.error = error.message; throw error; } }, // 获取绑定手机号 async getDeviceBindPhone() { try { return userApi.getDeviceBindPhone(); } catch (error) { console.error('获取绑定手机号失败:', error); state.error = error.message; throw error; } }, // 获取验证码 async getSmsNumber(mobile) { try { return userApi.getSmsNumber(mobile); } catch (error) { console.error('获取验证码失败:', error); state.error = error.message; throw error; } }, // 绑定手机号 async bindCardPhone(mobile, code) { try { return userApi.bindCardPhone(mobile, code); } catch (error) { console.error('绑定手机号失败:', error); state.error = error.message; throw error; } }, // 是否显示主号 async getIsOnlyMainCard(iccid) { try { return userApi.getIsOnlyMainCard(iccid); } catch (error) { console.error('是否显示主号失败:', error); state.error = error.message; throw error; } }, // 获取实名地址 async getRealNameAddress(iccid) { try { return userApi.getRealNameAddress(iccid); } catch (error) { console.error('获取实名地址失败:', error); state.error = error.message; throw error; } }, // 切换运营商 async changeOperator(esim, iccid) { try { return userApi.changeOperator(esim, iccid); } catch (error) { console.error('切换运营商失败:', error); state.error = error.message; throw error; } }, // 1. checkHasGzhOpenId 判断当前用户是否已经绑定了微信公众号的 async checkHasGzhOpenId() { try { return userApi.checkHasGzhOpenId(); } catch (error) { console.error('checkHasGzhOpenId 失败:', error); state.error = error.message; throw error; } }, // 2. checkYgosWxInfo 检查当前用户是否具有与微信支付相关的特定信息 async checkYgosWxInfo() { try { return userApi.checkYgosWxInfo(); } catch (error) { console.error('checkYgosWxInfo 失败:', error); state.error = error.message; throw error; } }, // 3. checkXwzfWxInfo 检查当前用户是否具有与微信支付相关的特定信息 async checkXwzfWxInfo() { try { return userApi.checkXwzfWxInfo(); } catch (error) { console.error('checkXwzfWxInfo 失败:', error); state.error = error.message; throw error; } }, // 4. 获取支付列表 async getPayList(mealId) { try { return userApi.getPayList(mealId); } catch (error) { console.error('获取支付列表失败:', error); state.error = error.message; throw error; } }, // 5. createOrder 创建订单 并拉起支付 这个会返回微信支付参数 async createOrder(data) { try { return userApi.createOrder(data); } catch (error) { console.error('createOrder 失败:', error); state.error = error.message; throw error; } }, // 登出(清除Cookie和状态) async logout() { try { await userApi.logout(); // 重置状态 state.isLoggedIn = false; state.userInfo = { nickname: '', avatar: '', deviceId: '' }; state.error = null; // 清除本地存储 uni.removeStorageSync('device_id'); uni.removeStorageSync('isLoggedIn'); console.log('退出登录成功,已清除登录状态'); // 跳转到登录页 uni.redirectTo({ url: '/pages/login/login' }); } catch (error) { console.error('登出失败:', error); state.error = error.message; // 即使服务端退出失败,也要清除本地状态 state.isLoggedIn = false; state.userInfo = { nickname: '', avatar: '', deviceId: '' }; uni.removeStorageSync('device_id'); uni.removeStorageSync('isLoggedIn'); // 跳转到登录页 uni.redirectTo({ url: '/pages/login/login' }); } }, // 重置错误状态 clearError() { state.error = null; }, // 初始化登录状态(从本地存储恢复) initLoginState() { try { const deviceId = uni.getStorageSync('device_id'); const isLoggedIn = uni.getStorageSync('isLoggedIn'); if (deviceId && isLoggedIn) { state.isLoggedIn = true; state.userInfo.deviceId = deviceId; console.log('从本地存储恢复登录状态:', deviceId); } else { state.isLoggedIn = false; state.userInfo.deviceId = ''; console.log('未找到有效的登录状态'); } } catch (error) { console.error('初始化登录状态失败:', error); state.isLoggedIn = false; state.userInfo.deviceId = ''; } }, }; // 创建用户store const userStore = { state, getters, actions }; export default userStore;