|
@@ -2,7 +2,7 @@
|
|
|
* @Author: fxs bjnsfxs@163.com
|
|
|
* @Date: 2024-08-28 11:46:10
|
|
|
* @LastEditors: fxs bjnsfxs@163.com
|
|
|
- * @LastEditTime: 2024-10-12 17:07:58
|
|
|
+ * @LastEditTime: 2024-10-15 11:01:18
|
|
|
* @FilePath: \Game-Backstage-Management-System\src\stores\useCommon.ts
|
|
|
* @Description:通用的store,在多个页面均会使用
|
|
|
*
|
|
@@ -10,10 +10,18 @@
|
|
|
import { reactive } from 'vue'
|
|
|
import { defineStore } from 'pinia'
|
|
|
import { getLocalInfo, saveLocalInfo } from '@/utils/localStorage/localStorage'
|
|
|
+import { createDateRange, invaildDateRange } from '@/utils/common'
|
|
|
|
|
|
interface SelectInfo {
|
|
|
gid: string
|
|
|
pf: Array<string>
|
|
|
+ startTime: Date
|
|
|
+ endTime: Date
|
|
|
+}
|
|
|
+
|
|
|
+interface MultipleChioce {
|
|
|
+ gid: string
|
|
|
+ pf: Array<string>
|
|
|
}
|
|
|
|
|
|
interface GameInfo {
|
|
@@ -21,32 +29,72 @@ interface GameInfo {
|
|
|
gameName: string
|
|
|
}
|
|
|
|
|
|
-export const useCommonStore = defineStore('commonStore', () => {
|
|
|
- // 这里是是为了去初始化selectInfo,当用户第一次进入网站的时候,是没有selectInfo的,所以需要初始化
|
|
|
- let gid = getLocalInfo('selectInfo', 'gid')
|
|
|
- gid = gid ? gid : '1001'
|
|
|
- let pf = getLocalInfo('selectInfo', 'pf')
|
|
|
- if (pf.length > 1) {
|
|
|
- pf = [pf[0]]
|
|
|
+const defaultPf = ['web']
|
|
|
+const defaultGid = '1001'
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description: 获取selectInfo
|
|
|
+ * @return {SelectInfo} 返回本地gid、pf和时间
|
|
|
+ */
|
|
|
+const getSelectInfo = (): SelectInfo => {
|
|
|
+ let gid = getLocalInfo('selectInfo', 'gid') as string
|
|
|
+ let pf = getLocalInfo('selectInfo', 'pf') as string[]
|
|
|
+ let localStartTime = getLocalInfo('selectInfo', 'startTime') as string
|
|
|
+ let localEndTime = getLocalInfo('selectInfo', 'endTime') as string
|
|
|
+ let newDateRange = createDateRange(7)
|
|
|
+ let startTime = newDateRange[0]
|
|
|
+ let endTime = newDateRange[1]
|
|
|
+
|
|
|
+ gid = gid ? gid : defaultGid
|
|
|
+ pf = pf ? [pf[0]] : defaultPf
|
|
|
+ if (invaildDateRange(localStartTime, localEndTime)) {
|
|
|
+ startTime = new Date(localStartTime)
|
|
|
+ endTime = new Date(localEndTime)
|
|
|
}
|
|
|
- pf = pf ? pf : ['wx']
|
|
|
- const selectInfo = reactive<SelectInfo>({
|
|
|
- gid: gid as string,
|
|
|
- pf: pf as string[]
|
|
|
- })
|
|
|
+ return { pf, gid, startTime, endTime }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description: 获取多选的pf
|
|
|
+ * @return {{ tempPf: string[] }} 多选pf
|
|
|
+ */
|
|
|
+const getMultipleChioce = (): { tempPf: string[] } => {
|
|
|
+ let tempPf = getLocalInfo('tempMultipleChioce', 'pf') as string[]
|
|
|
+ tempPf = tempPf ? tempPf : defaultPf
|
|
|
+ return { tempPf }
|
|
|
+}
|
|
|
|
|
|
+/**
|
|
|
+ * @description: 初始化两种选择器
|
|
|
+ * @param {SelectInfo} selectInfo 单选的选择器
|
|
|
+ * @param {SelectInfo} tempMultipleChioce 多选的选择器
|
|
|
+ * @return {*}
|
|
|
+ */
|
|
|
+const initSelect = (selectInfo: SelectInfo, tempMultipleChioce: MultipleChioce) => {
|
|
|
+ const { gid, pf, startTime, endTime } = getSelectInfo()
|
|
|
+ const { tempPf } = getMultipleChioce()
|
|
|
+ Object.assign(selectInfo, { gid, pf, startTime, endTime })
|
|
|
+ Object.assign(tempMultipleChioce, { gid, pf: tempPf })
|
|
|
saveLocalInfo('selectInfo', selectInfo)
|
|
|
+ saveLocalInfo('tempMultipleChioce', tempMultipleChioce)
|
|
|
+}
|
|
|
|
|
|
- // 同上
|
|
|
- let tempPf = getLocalInfo('tempMultipleChioce', 'pf')
|
|
|
- tempPf = tempPf ? tempPf : [selectInfo.pf[0]]
|
|
|
- // 临时使用的多选pf,为了不与selectInfo冲突
|
|
|
- // pf初始化的时候更seleinfo的一致,但是后续的修改不会影响selectInfo
|
|
|
- const tempMultipleChioce = reactive<SelectInfo>({
|
|
|
- gid: gid as string,
|
|
|
- pf: tempPf as string[]
|
|
|
+export const useCommonStore = defineStore('commonStore', () => {
|
|
|
+ // 用于保存当前的gid和pf的选择
|
|
|
+ const selectInfo = reactive<SelectInfo>({
|
|
|
+ gid: defaultGid,
|
|
|
+ pf: defaultPf,
|
|
|
+ startTime: new Date(),
|
|
|
+ endTime: new Date()
|
|
|
})
|
|
|
- saveLocalInfo('tempMultipleChioce', tempMultipleChioce)
|
|
|
+
|
|
|
+ // 临时用来保存多选平台,因为目前业务只有部分页面需要多选,后续可能会改为全部多选
|
|
|
+ const tempMultipleChioce = reactive<MultipleChioce>({
|
|
|
+ gid: defaultGid,
|
|
|
+ pf: defaultPf
|
|
|
+ })
|
|
|
+
|
|
|
+ initSelect(selectInfo, tempMultipleChioce)
|
|
|
|
|
|
/**
|
|
|
* @description: 保存现有的selectInfo
|
|
@@ -64,6 +112,22 @@ export const useCommonStore = defineStore('commonStore', () => {
|
|
|
localStorage.setItem('tempMultipleChioce', JSON.stringify(tempMultipleChioce))
|
|
|
}
|
|
|
|
|
|
+ const changeDateRange = (date: Array<Date>) => {
|
|
|
+ const startTime = date[0]
|
|
|
+ const endTime = date[1]
|
|
|
+
|
|
|
+ selectInfo.startTime = startTime
|
|
|
+ selectInfo.endTime = endTime
|
|
|
+ saveSelectInfo()
|
|
|
+ }
|
|
|
+
|
|
|
const allGameInfo = reactive<Array<GameInfo>>([])
|
|
|
- return { selectInfo, allGameInfo, tempMultipleChioce, saveSelectInfo, saveTempMultipleChioce }
|
|
|
+ return {
|
|
|
+ selectInfo,
|
|
|
+ allGameInfo,
|
|
|
+ tempMultipleChioce,
|
|
|
+ saveSelectInfo,
|
|
|
+ saveTempMultipleChioce,
|
|
|
+ changeDateRange
|
|
|
+ }
|
|
|
})
|