import { reactive, ref, watch } from 'vue'; import { storage } from '../utils/storage'; // 定义应用的全局状态 export const store = reactive({ // 用户信息 userInfo: storage.get('userInfo') || null, // 应用设置 settings: storage.get('settings') || { theme: 'light', language: 'zh-CN', notifications: true }, // 系统信息 systemInfo: { statusBarHeight: 0, windowHeight: 0, windowWidth: 0 }, // 账单列表 billList: storage.get('bill_list') || [], }); // 定义操作方法 export const useStore = () => { // 用户相关操作 const setUserInfo = (userInfo) => { store.userInfo = userInfo; }; const clearUserInfo = () => { store.userInfo = null; }; // 设置相关操作 const updateSettings = (settings) => { store.settings = { ...store.settings, ...settings }; }; // 账单相关操作 const addBill = (bill) => { store.billList.unshift(bill); return bill; }; const updateBill = (id, updates) => { const index = store.billList.findIndex(bill => bill.id === id); if (index !== -1) { store.billList[index] = { ...store.billList[index], ...updates }; return store.billList[index]; } return null; }; const deleteBill = (id) => { const index = store.billList.findIndex(bill => bill.id === id); if (index !== -1) { store.billList.splice(index, 1); return true; } return false; }; const getBillList = () => { return store.billList } // 数据持久化 // 监听store变化,自动保存到本地存储 watch( () => store.userInfo, (newValue) => storage.set('userInfo', newValue), { deep: true } ); watch( () => store.settings, (newValue) => storage.set('settings', newValue), { deep: true } ); watch( () => store.billList, (newValue) => storage.set('bill_list', newValue), { deep: true } ); // 获取系统信息 const getSystemInfo = () => { uni.getSystemInfo({ success: (res) => { store.systemInfo.statusBarHeight = res.statusBarHeight || 0; store.systemInfo.windowHeight = res.windowHeight || 0; store.systemInfo.windowWidth = res.windowWidth || 0; }, fail: (err) => { console.error('获取系统信息失败:', err); } }); }; return { store, setUserInfo, clearUserInfo, updateSettings, addBill, updateBill, deleteBill, getBillList, getSystemInfo }; };