2025-04-09 14:59:26 +08:00

106 lines
3.3 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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