Browse Source

耗材store添加 projectsAvailable

dev
zhangjiming 7 months ago
parent
commit
6830366510
  1. 24
      src/pages/Index/Regular/TestTube.vue
  2. 17
      src/pages/Index/TestTube/TubeUserId.vue
  3. 28
      src/store/modules/consumables.ts

24
src/pages/Index/Regular/TestTube.vue

@ -10,7 +10,7 @@
<TestTubeRack
:tubeRack="tubeRack"
:index="index"
:projects="projectsAvailable"
:projects="consumables.projectsAvailable"
:bloodTypes="bloodTypes"
@delete:rack="deleteTubeRack"
@active:rack="handleActivateChange"
@ -30,7 +30,7 @@
<section class="project-area">
<h2 class="title">项目选择</h2>
<div class="project-list">
<div v-for="proj in projectsAvailable" :key="proj.projName">
<div v-for="proj in consumables.projectsAvailable" :key="proj.projName">
<div
class="project-item"
:class="{ active: isProjElemActive(proj) }"
@ -169,26 +169,6 @@ const clickBloodTypeItem = (type) => {
}
}
const projectsAvailable = computed(() => {
const group = R.groupBy(
(p) => p.projName,
consumables.consumableData.reactionPlateGroup,
)
const pNames = R.keys(group).filter((n) => n !== 'null')
const projArr = pNames.map((n) =>
R.reduce(
(acc, curr) => {
return { ...curr, num: acc.num + curr.num }
},
{ num: 0 },
group[n],
),
)
return projArr
})
const projIdCntMap = computed(() => {
return R.reduce(
(acc, curr) => {

17
src/pages/Index/TestTube/TubeUserId.vue

@ -107,23 +107,6 @@ const tubeGroups = ref([
R.clone(tubeStore.tubeRack.tubeSettings.slice(5, 10)),
])
const projectsAvailable = computed(() => {
const group = R.groupBy((p) => p.projName, consumables.consumableData.reactionPlateGroup)
const pNames = R.keys(group).filter(n => n !== 'null')
const projArr = pNames.map((n) =>
R.reduce(
(acc, curr) => {
return { ...curr, num: acc.num + curr.num }
},
{ num: 0 },
group[n],
),
)
return projArr
})
const keyboardVisible = ref(false)
const currentInputValue = ref('')
const currentInput = ref({

28
src/store/modules/consumables.ts

@ -1,5 +1,6 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { ref,computed } from 'vue'
import * as R from 'ramda'
// import type {
// BottleGroup,
// ConsumableState,
@ -7,7 +8,7 @@ import { ref } from 'vue'
// Tip,
// } from '../../types/Index'
// import type { PersistenceOptions } from 'pinia-plugin-persistedstate'
import type { ConsumablesStateMessage } from '../../websocket/socket'
import type { ConsumablesStateMessage, ReactionPlateGroup } from '../../websocket/socket'
export const useConsumablesStore = defineStore(
'consumables',
@ -58,6 +59,25 @@ export const useConsumablesStore = defineStore(
isIdCardInserted.value = status
}
const projectsAvailable = computed(() => {
// @ts-ignore
const group = R.groupBy(
(p) => p.projName,
consumableData.value.reactionPlateGroup,
)
const pNames = R.keys(group).filter((n) => n !== 'null')
const projArr = pNames.map((n) =>
R.reduce(
(acc, curr) => {
return { ...curr, num: acc.num + (curr.num || 0) }
},
{ num: 0 },
group[n] as ReactionPlateGroup[],
),
)
return projArr
})
//所有耗材都存在
let hasAllConsumables = ref(false)
@ -70,8 +90,8 @@ export const useConsumablesStore = defineStore(
updateReactionPlateNum,
updateTipNum,
// updateWasteStatus,
// wasteStatus,
projectsAvailable,
hasAllConsumables,
}
},

Loading…
Cancel
Save