114 lines
2.7 KiB
JavaScript
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
|
|
}
|
|
} |