first
This commit is contained in:
15
store/index.js
Normal file
15
store/index.js
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* 简单的响应式状态管理
|
||||
* 基于 Vue 3 reactive API
|
||||
*/
|
||||
|
||||
import { reactive, ref } from 'vue';
|
||||
import userStore from './modules/user.js';
|
||||
|
||||
// 创建全局状态
|
||||
const globalStore = reactive({
|
||||
user: userStore
|
||||
});
|
||||
|
||||
export default globalStore;
|
||||
export { userStore };
|
||||
435
store/modules/user.js
Normal file
435
store/modules/user.js
Normal file
@@ -0,0 +1,435 @@
|
||||
/**
|
||||
* 用户状态管理模块
|
||||
*/
|
||||
|
||||
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;
|
||||
Reference in New Issue
Block a user