261 lines
7.3 KiB
TypeScript
261 lines
7.3 KiB
TypeScript
import type { IImage, IMusic } from '@/types/storeType'
|
||
import i18n, { browserLanguage } from '@/locales/i18n'
|
||
import { defineStore } from 'pinia'
|
||
import { defaultImageList, defaultMusicList, defaultPatternList } from './data'
|
||
// 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,
|
||
}
|
||
},
|
||
// 重置音乐列表
|
||
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'],
|
||
},
|
||
],
|
||
},
|
||
})
|