import { defineStore } from 'pinia'; import { defaultMusicList, defaultImageList, defaultPatternList } from './data' import { IMusic, IImage } from '@/types/storeType'; import i18n,{browserLanguage} from '@/locales/i18n' // import { IPrizeConfig } from '@/types/storeType'; export const useGlobalConfig = defineStore('global', { state() { return { globalConfig: { rowCount: 17, isSHowPrizeList: true, topTitle: i18n.global.t('data.defaultTitle'), language:browserLanguage, theme: { name: 'dracula', detail: { primary: '#0f5fd3' }, cardColor: '#ff79c6', cardWidth: 140, cardHeight: 200, textColor: '#ffffff', luckyCardColor: '#ECB1AC', textSize: 30, patternColor: '#1b66c9', patternList: defaultPatternList as number[], }, musicList: defaultMusicList as IMusic[], imageList: defaultImageList as IImage[], }, currentMusic: { item: defaultMusicList[0], paused: true, }, }; }, getters: { // 获取全部配置 getGlobalConfig(state) { return state.globalConfig; }, // 获取标题 getTopTitle(state) { return state.globalConfig.topTitle; }, // 获取行数 getRowCount(state) { return state.globalConfig.rowCount; }, // 获取主题 getTheme(state) { return state.globalConfig.theme; }, // 获取卡片颜色 getCardColor(state) { return state.globalConfig.theme.cardColor; }, // 获取中奖颜色 getLuckyColor(state) { return state.globalConfig.theme.luckyCardColor; }, // 获取文字颜色 getTextColor(state) { return state.globalConfig.theme.textColor; }, // 获取卡片宽高 getCardSize(state) { return { width: state.globalConfig.theme.cardWidth, height: state.globalConfig.theme.cardHeight } }, // 获取文字大小 getTextSize(state) { return state.globalConfig.theme.textSize; }, // 获取图案颜色 getPatterColor(state) { return state.globalConfig.theme.patternColor; }, // 获取图案列表 getPatternList(state) { return state.globalConfig.theme.patternList; }, // 获取音乐列表 getMusicList(state) { return state.globalConfig.musicList; }, // 获取当前音乐 getCurrentMusic(state) { return state.currentMusic; }, // 获取图片列表 getImageList(state) { return state.globalConfig.imageList; }, // 获取是否显示奖品列表 getIsShowPrizeList(state) { return state.globalConfig.isSHowPrizeList; }, // 获取当前语言 getLanguage(state) { return state.globalConfig.language; } }, actions: { // 设置rowCount setRowCount(rowCount: number) { this.globalConfig.rowCount = rowCount; }, // 设置标题 setTopTitle(topTitle: string) { this.globalConfig.topTitle = topTitle; }, // 设置主题 setTheme(theme: any) { const { name, detail } = theme; this.globalConfig.theme.name = name; this.globalConfig.theme.detail = detail; }, // 设置卡片颜色 setCardColor(cardColor: string) { this.globalConfig.theme.cardColor = cardColor; }, // 设置中奖颜色 setLuckyCardColor(luckyCardColor: string) { this.globalConfig.theme.luckyCardColor = luckyCardColor; }, // 设置文字颜色 setTextColor(textColor: string) { this.globalConfig.theme.textColor = textColor; }, // 设置卡片宽高 setCardSize(cardSize: { width: number, height: number }) { this.globalConfig.theme.cardWidth = cardSize.width; this.globalConfig.theme.cardHeight = cardSize.height; }, // 设置文字大小 setTextSize(textSize: number) { this.globalConfig.theme.textSize = textSize; }, // 设置图案颜色 setPatterColor(patterColor: string) { this.globalConfig.theme.patternColor = patterColor; }, // 设置图案列表 setPatternList(patternList: number[]) { this.globalConfig.theme.patternList = patternList; }, // 重置图案列表 resetPatternList() { this.globalConfig.theme.patternList = defaultPatternList; }, // 添加音乐 addMusic(music: IMusic) { // 验证音乐是否已存在,看name字段 for (let i = 0; i < this.globalConfig.musicList.length; i++) { if (this.globalConfig.musicList[i].name === music.name) { return; } } this.globalConfig.musicList.push(music); }, // 删除音乐 removeMusic(musicId: string) { for (let i = 0; i < this.globalConfig.musicList.length; i++) { if (this.globalConfig.musicList[i].id === musicId) { this.globalConfig.musicList.splice(i, 1); break; } } }, // 设置当前播放音乐 setCurrentMusic(musicItem: IMusic, paused: boolean = true) { this.currentMusic = { item: musicItem, paused: paused, } }, // 重置音乐列表 resetMusicList() { this.globalConfig.musicList = defaultMusicList as IMusic[]; }, // 清空音乐列表 clearMusicList() { this.globalConfig.musicList = [] as IMusic[]; }, // 添加图片 addImage(image: IImage) { for (let i = 0; i < this.globalConfig.imageList.length; i++) { if (this.globalConfig.imageList[i].name === image.name) { return; } } this.globalConfig.imageList.push(image); }, // 删除图片 removeImage(imageId: string) { for (let i = 0; i < this.globalConfig.imageList.length; i++) { if (this.globalConfig.imageList[i].id === imageId) { this.globalConfig.imageList.splice(i, 1); break; } } }, // 重置图片列表 resetImageList() { this.globalConfig.imageList = defaultImageList as IImage[]; }, // 清空图片列表 clearImageList() { this.globalConfig.imageList = [] as IImage[] }, // 设置是否显示奖品列表 setIsShowPrizeList(isShowPrizeList: boolean) { this.globalConfig.isSHowPrizeList = isShowPrizeList; }, // 设置 setLanguage(language: string) { this.globalConfig.language = language; i18n.global.locale.value=language }, // 重置所有配置 reset() { this.globalConfig = { rowCount: 17, isSHowPrizeList: true, topTitle: i18n.global.t('data.defaultTitle'), language: browserLanguage, theme: { name: 'dracula', detail: { primary: '#0f5fd3' }, cardColor: '#ff79c6', cardWidth: 140, cardHeight: 200, textColor: '#ffffff', luckyCardColor: '#ECB1AC', textSize: 30, patternColor: '#1b66c9', patternList: defaultPatternList as number[], }, musicList: defaultMusicList as IMusic[], imageList: defaultImageList as IImage[], }, this.currentMusic = { item: defaultMusicList[0], paused: true, } } }, persist: { enabled: true, strategies: [ { // 如果要存储在localStorage中 storage: localStorage, key: 'globalConfig', paths: ['globalConfig'], }, ], }, })