90 lines
2.1 KiB
JavaScript
90 lines
2.1 KiB
JavaScript
// 应用状态管理
|
|
import { defineStore } from 'pinia'
|
|
|
|
export const useAppStore = defineStore('app', {
|
|
state: () => ({
|
|
// 登录状态
|
|
isLoggedIn: !!uni.getStorageSync('token'),
|
|
|
|
// 连接状态
|
|
isOnline: true,
|
|
|
|
// 同步状态
|
|
syncStatus: 'synced', // synced, syncing, syncFailed
|
|
|
|
// 离线模式
|
|
isOfflineMode: false,
|
|
|
|
// 最后同步时间
|
|
lastSyncTime: uni.getStorageSync('lastSyncTime') || null
|
|
}),
|
|
|
|
getters: {
|
|
// 检查是否为离线用户
|
|
isOfflineUser: (state) => {
|
|
const userInfo = uni.getStorageSync('userInfo') || {}
|
|
return userInfo.isOffline === true || userInfo.userId === 'local_user'
|
|
},
|
|
|
|
// 检查OCR功能是否可用
|
|
isOcrAvailable: (state) => {
|
|
return !state.isOfflineMode && state.isOnline
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
// 设置登录状态
|
|
setLoggedIn(status) {
|
|
this.isLoggedIn = status
|
|
},
|
|
|
|
// 设置连接状态
|
|
setOnline(status) {
|
|
this.isOnline = status
|
|
},
|
|
|
|
// 设置同步状态
|
|
setSyncStatus(status) {
|
|
this.syncStatus = status
|
|
},
|
|
|
|
// 设置离线模式
|
|
setOfflineMode(status) {
|
|
this.isOfflineMode = status
|
|
},
|
|
|
|
// 设置最后同步时间
|
|
setLastSyncTime(time) {
|
|
this.lastSyncTime = time
|
|
uni.setStorageSync('lastSyncTime', time)
|
|
},
|
|
|
|
// 初始化应用状态
|
|
initAppStatus() {
|
|
// 检查登录状态
|
|
this.isLoggedIn = !!uni.getStorageSync('token')
|
|
|
|
// 检查是否为离线用户
|
|
const userInfo = uni.getStorageSync('userInfo') || {}
|
|
this.isOfflineMode = userInfo.isOffline === true || userInfo.userId === 'local_user'
|
|
|
|
// 检查网络状态
|
|
uni.getNetworkType({
|
|
success: (res) => {
|
|
this.isOnline = res.networkType !== 'none'
|
|
},
|
|
fail: () => {
|
|
this.isOnline = false
|
|
}
|
|
})
|
|
},
|
|
|
|
// 监听网络状态变化
|
|
watchNetworkStatus() {
|
|
uni.onNetworkStatusChange((res) => {
|
|
this.isOnline = res.isConnected
|
|
})
|
|
}
|
|
}
|
|
})
|