projectInfo.ts 1.29 KB
import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore";
import { ProjectInfoEnum, ProjectInfoStoreType } from './projectInfo.d'
import { defineStore } from "pinia";
import { SyncEnum } from "@/enums/external/editPageEnum";

export const useProjectInfoStore = defineStore({
  id: 'useProjectInfoStore',
  state: (): ProjectInfoStoreType => ({
    info: {
      projectId: '',
      projectName: '',
      remarks: '',
      thumbnail: '',
      release: false,
      organizationId: '',
      state: 0,
    },

    saveStatus: SyncEnum.FAILURE
  }),
  getters: {
    getProjectInfo(): ProjectInfoStoreType[ProjectInfoEnum.INFO] {
      return Reflect.get(this, ProjectInfoEnum.INFO)
    },
    getSaveStatus(): ProjectInfoStoreType[ProjectInfoEnum.SAVE_STATUS] {
      return Reflect.get(this, ProjectInfoEnum.SAVE_STATUS)
    }
  },
  actions: {
    setProjectInfo<T extends ProjectInfoStoreType[ProjectInfoEnum.INFO]>(value: T) {
      this[ProjectInfoEnum.INFO] = value
    },
    setProjectInfoByKey<T extends keyof ProjectInfoStoreType[ProjectInfoEnum.INFO], K extends ProjectInfoStoreType[ProjectInfoEnum.INFO][T]>(key: T, value: K) {
      this[ProjectInfoEnum.INFO][key] = value
    },
    setSaveStatus(status: SyncEnum) {
      this[ProjectInfoEnum.SAVE_STATUS] = status
    }
  }
})