Files
2026-06-02 15:28:25 +08:00

114 lines
2.7 KiB
JavaScript

export default {
namespaced: true,
state: {
loading: {
show: false,
text: '加载中...'
},
settings: {
autoSync: true,
syncInterval: 5, // 分钟
scanContinuous: true,
scanBeep: true,
scanVibrate: true
},
systemInfo: null,
appVersion: '1.0.0'
},
mutations: {
SET_LOADING(state, { show, text }) {
state.loading.show = show
if (text) {
state.loading.text = text
}
},
SET_SETTINGS(state, settings) {
state.settings = { ...state.settings, ...settings }
},
SET_SYSTEM_INFO(state, info) {
state.systemInfo = info
}
},
actions: {
async initAppData({ commit, dispatch }) {
try {
// 初始化系统信息
await dispatch('loadSystemInfo')
// 初始化设置
await dispatch('initSettings')
} catch (error) {
console.error('初始化应用数据失败:', error)
throw error
}
},
async loadSystemInfo({ commit }) {
try {
const systemInfo = uni.getSystemInfoSync()
commit('SET_SYSTEM_INFO', systemInfo)
return systemInfo
} catch (error) {
console.error('获取系统信息失败:', error)
return null
}
},
async initSettings({ commit, state }) {
try {
// 从本地存储加载设置
const savedSettings = uni.getStorageSync('appSettings')
if (savedSettings) {
commit('SET_SETTINGS', savedSettings)
} else {
// 保存默认设置
uni.setStorageSync('appSettings', state.settings)
}
} catch (error) {
console.error('初始化设置失败:', error)
}
},
async saveSettings({ commit, state }, settings) {
try {
commit('SET_SETTINGS', settings)
uni.setStorageSync('appSettings', state.settings)
return true
} catch (error) {
console.error('保存设置失败:', error)
return false
}
},
async logError({ }, errorInfo) {
try {
const errorLog = {
...errorInfo,
timestamp: new Date().toISOString(),
deviceId: this.state.app.systemInfo?.deviceId || 'unknown'
}
const logs = uni.getStorageSync('errorLogs') || []
logs.unshift(errorLog)
// 只保留最近100条错误日志
if (logs.length > 100) {
logs.splice(100)
}
uni.setStorageSync('errorLogs', logs)
} catch (error) {
console.error('记录错误日志失败:', error)
}
}
},
getters: {
isLoading: state => state.loading.show,
loadingText: state => state.loading.text,
appSettings: state => state.settings
}
}