|
|
import { BloodTypeItem } from '@/services/Index/testTube' import { ProjectInfo } from '@/websocket/socket' import { defineStore } from 'pinia' import { ref, computed } from 'vue' import * as R from 'ramda'
// 这个store用来存储相对稳定的数据
export const useSettingTestTubeStore = defineStore( 'settingTestTube', () => { const bloodTypes = ref<BloodTypeItem[] | undefined>(undefined) const selectedBloodTypeKey = ref() const setBloodTypes = (items: BloodTypeItem[]) => { bloodTypes.value = items } const projIdsBySampleMap = ref({}) const supportedProjects = ref<ProjectInfo[] | undefined>(undefined) const setSupportedProjects = (projects: ProjectInfo[]) => { supportedProjects.value = projects const sampleMap = {} if (projects && projects.length) { projects.forEach(item => { const { supportBloodTypes } = item; if(supportBloodTypes && supportBloodTypes.length){ supportBloodTypes.forEach(bloodItem => { if(sampleMap[bloodItem]){ let list = [...sampleMap[bloodItem], item] sampleMap[bloodItem] = list }else{ sampleMap[bloodItem] = [item] } }) } }) projIdsBySampleMap.value = sampleMap } }
const projectIdMap = computed(() => { return R.reduce( (acc, curr) => { acc[curr.projId] = curr return acc }, {}, supportedProjects.value || [], ) }) const bloodTypeKeyMap = computed(() => { return R.reduce( (acc, curr) => { acc[curr.key] = curr return acc }, {}, bloodTypes.value || [], ) })
const setSelectedBloodTypeKey = (bloodType: string | undefined) => { selectedBloodTypeKey.value = bloodType } return { bloodTypes, setBloodTypes,
supportedProjects, setSupportedProjects,
projectIdMap, bloodTypeKeyMap,
projIdsBySampleMap,
selectedBloodTypeKey, setSelectedBloodTypeKey, } }, { persist: true, }, )
|