178 lines
4.4 KiB
TypeScript
178 lines
4.4 KiB
TypeScript
import type { IPrizeConfig } from '@/types/storeType'
|
|
import { defineStore } from 'pinia'
|
|
import { defaultCurrentPrize, defaultPrizeList } from './data'
|
|
|
|
export const usePrizeConfig = defineStore('prize', {
|
|
state() {
|
|
return {
|
|
prizeConfig: {
|
|
prizeList: defaultPrizeList,
|
|
currentPrize: defaultCurrentPrize,
|
|
temporaryPrize: {
|
|
id: '',
|
|
name: '',
|
|
sort: 0,
|
|
isAll: false,
|
|
count: 1,
|
|
isUsedCount: 0,
|
|
picture: {
|
|
id: '-1',
|
|
name: '',
|
|
url: '',
|
|
},
|
|
separateCount: {
|
|
enable: true,
|
|
countList: [],
|
|
},
|
|
desc: '',
|
|
isShow: false,
|
|
isUsed: false,
|
|
frequency: 1,
|
|
} as IPrizeConfig,
|
|
},
|
|
}
|
|
},
|
|
getters: {
|
|
// 获取全部配置
|
|
getPrizeConfigAll(state) {
|
|
return state.prizeConfig
|
|
},
|
|
// 获取奖品列表
|
|
getPrizeConfig(state) {
|
|
return state.prizeConfig.prizeList
|
|
},
|
|
// 根据id获取配置
|
|
getPrizeConfigById(state) {
|
|
return (id: number | string) => {
|
|
return state.prizeConfig.prizeList.find(item => item.id === id)
|
|
}
|
|
},
|
|
// 获取当前奖项
|
|
getCurrentPrize(state) {
|
|
return state.prizeConfig.currentPrize
|
|
},
|
|
// 获取临时的奖项
|
|
getTemporaryPrize(state) {
|
|
return state.prizeConfig.temporaryPrize
|
|
},
|
|
|
|
},
|
|
actions: {
|
|
// 设置奖项
|
|
setPrizeConfig(prizeList: IPrizeConfig[]) {
|
|
this.prizeConfig.prizeList = prizeList
|
|
},
|
|
// 添加奖项
|
|
addPrizeConfig(prizeConfigItem: IPrizeConfig) {
|
|
this.prizeConfig.prizeList.push(prizeConfigItem)
|
|
},
|
|
// 删除奖项
|
|
deletePrizeConfig(prizeConfigItemId: number | string) {
|
|
this.prizeConfig.prizeList = this.prizeConfig.prizeList.filter(item => item.id !== prizeConfigItemId)
|
|
},
|
|
// 更新奖项数据
|
|
updatePrizeConfig(prizeConfigItem: IPrizeConfig) {
|
|
const prizeListLength = this.prizeConfig.prizeList.length
|
|
if (prizeConfigItem.isUsed && prizeListLength) {
|
|
for (let i = 0; i < prizeListLength; i++) {
|
|
if (!this.prizeConfig.prizeList[i].isUsed) {
|
|
this.setCurrentPrize(this.prizeConfig.prizeList[i])
|
|
break
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return
|
|
}
|
|
this.resetTemporaryPrize()
|
|
},
|
|
// 删除全部奖项
|
|
deleteAllPrizeConfig() {
|
|
this.prizeConfig.prizeList = [] as IPrizeConfig[]
|
|
},
|
|
// 设置当前奖项
|
|
setCurrentPrize(prizeConfigItem: IPrizeConfig) {
|
|
this.prizeConfig.currentPrize = prizeConfigItem
|
|
},
|
|
// 设置临时奖项
|
|
setTemporaryPrize(prizeItem: IPrizeConfig) {
|
|
if (prizeItem.isShow === false) {
|
|
for (let i = 0; i < this.prizeConfig.prizeList.length; i++) {
|
|
if (this.prizeConfig.prizeList[i].isUsed === false) {
|
|
this.setCurrentPrize(this.prizeConfig.prizeList[i])
|
|
|
|
break
|
|
}
|
|
}
|
|
this.resetTemporaryPrize()
|
|
|
|
return
|
|
}
|
|
|
|
this.prizeConfig.temporaryPrize = prizeItem
|
|
},
|
|
// 重置临时奖项
|
|
resetTemporaryPrize() {
|
|
this.prizeConfig.temporaryPrize = {
|
|
id: '',
|
|
name: '',
|
|
sort: 0,
|
|
isAll: false,
|
|
count: 1,
|
|
isUsedCount: 0,
|
|
picture: {
|
|
id: '-1',
|
|
name: '',
|
|
url: '',
|
|
},
|
|
separateCount: {
|
|
enable: true,
|
|
countList: [],
|
|
},
|
|
desc: '',
|
|
isShow: false,
|
|
isUsed: false,
|
|
frequency: 1,
|
|
} as IPrizeConfig
|
|
},
|
|
// 重置所有配置
|
|
resetDefault() {
|
|
this.prizeConfig = {
|
|
prizeList: defaultPrizeList,
|
|
currentPrize: defaultCurrentPrize,
|
|
temporaryPrize: {
|
|
id: '',
|
|
name: '',
|
|
sort: 0,
|
|
isAll: false,
|
|
count: 1,
|
|
isUsedCount: 0,
|
|
picture: {
|
|
id: '-1',
|
|
name: '',
|
|
url: '',
|
|
},
|
|
separateCount: {
|
|
enable: true,
|
|
countList: [],
|
|
},
|
|
desc: '',
|
|
isShow: false,
|
|
isUsed: false,
|
|
frequency: 1,
|
|
} as IPrizeConfig,
|
|
}
|
|
},
|
|
},
|
|
persist: {
|
|
enabled: true,
|
|
strategies: [
|
|
{
|
|
// 如果要存储在localStorage中
|
|
storage: localStorage,
|
|
key: 'prizeConfig',
|
|
},
|
|
],
|
|
},
|
|
})
|