106 lines
3.3 KiB
TypeScript
Raw Permalink Normal View History

2025-04-09 14:59:26 +08:00
import { defineStore, createPinia } from 'pinia'
import { ProductInfo } from '~/types/order'
import { createPersistedState } from 'pinia-plugin-persistedstate'
import { ApplicationDataQuery } from '~/types/merchant'
import { globalConfigApi } from '~/server/userApi'
import { GlobalDatas } from '~/types/user'
const pinia = createPinia()
interface AppSate {
stateEvaluationInfo: ProductInfo | null
stateApplicationData: ApplicationDataQuery | null
stateCarNumber: number
stateisShowHeaderMenu: boolean
stateFooterIsIntersecting: boolean
stateIsHomePage: boolean
stateRoutePath: string
stateMerId: number
stateExpressAll: any
stateGlobalData: GlobalDatas
}
export const useAppStore = defineStore({
id: 'appStore',
state: (): AppSate => ({
stateEvaluationInfo: null, //评价商品信息
stateApplicationData: null, //商户入驻申请数据
stateCarNumber: 0, //购物车数量
stateisShowHeaderMenu: true, //是否展示头部导航
stateFooterIsIntersecting: true, //底部导航是否出现在可视区域内
stateIsHomePage: false, //是否是首页
stateRoutePath: '', //路由地址
stateMerId: 0, //商户id
stateExpressAll: [], //全部物流公司
stateGlobalData: {
changeColorConfig: '',
copyrightCompanyImage: '',
frontDomain: '',
imageDomain: '',
paidMemberPriceDisplay: '',
userIsPaidMember: false,
siteName: '',
}, //全局配置
}),
persist: process.client && {
// 仅在客户端使用
storage: localStorage, // localStorage 本地存储可替换sessionStorage
},
getters: {
evaluationInfo: (state) => state.stateEvaluationInfo,
applicationData: (state) => state.stateApplicationData,
carNumber: (state) => state.stateCarNumber,
isShowHeaderMenu: (state) => state.stateisShowHeaderMenu,
footerIsIntersecting: (state) => state.stateFooterIsIntersecting,
isHomePage: (state) => state.stateIsHomePage,
routePath: (state) => state.stateRoutePath,
pcMerId: (state) => state.stateMerId,
expressAll: (state) => state.stateExpressAll,
globalData: (state) => state.stateGlobalData,
},
actions: {
//评价商品信息
getEvaluationInfo(info: ProductInfo) {
this.stateEvaluationInfo = info
},
//商户入驻申请数据
getApplicationData(info: ApplicationDataQuery) {
this.stateApplicationData = info
},
//购物车数量
getCarNumber(num: number) {
this.stateCarNumber = num
},
//头部是否展示菜单
getIsShowHeaderMenu(bool: boolean) {
this.stateisShowHeaderMenu = bool
},
// 底部导航是否出现在可视区域内
getFooterIsIntersecting(bool: boolean) {
this.stateFooterIsIntersecting = bool
},
//是否是首页
setIsHomePage(bool: boolean) {
this.stateIsHomePage = bool
},
//获取路由地址
getRoutePath(path: string) {
this.stateRoutePath = path
},
// 商户id
getMerId(merId: number) {
this.stateMerId = merId
},
getExpressList(express: any) {
this.stateExpressAll = express
},
//获取全局配置
async getGlobalConfig() {
this.stateGlobalData = await globalConfigApi()
},
},
})
// 添加持久化插件到Pinia中
pinia.use(createPersistedState())
export default pinia