Browse Source

运行页面:处理完急诊后,不再显示急诊试管

dev
zhangjiming 7 months ago
parent
commit
eb65f46a4d
  1. 4
      src/pages/Index/Regular/Consumables.vue
  2. 24
      src/pages/Index/Regular/Running.vue
  3. 6
      src/pages/Index/components/Consumables/MoveLiquidArea.vue
  4. 6
      src/pages/Index/components/TestTube/Tube.vue
  5. 6
      src/store/modules/emergency.ts
  6. 13
      src/websocket/socket.ts

4
src/pages/Index/Regular/Consumables.vue

@ -163,7 +163,7 @@ interface ScanReport {
const formattedReports = ref<ScanReport[]>([])
//
const emergencyInfo = ref(emergencyStore.$state.emergencyInfo || {})
const emergencyInfo = ref(emergencyStore.$state.emergencyInfo)
//
const handleConfirmScan = () => {
@ -220,7 +220,7 @@ onMounted(() => {
//
onActivated(() => {
emergencyInfo.value = emergencyStore.$state.emergencyInfo || {}
emergencyInfo.value = emergencyStore.$state.emergencyInfo
// if (!isLoadedConsumables.value) {
// console.log('')
// }

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

@ -82,19 +82,15 @@
<!-- 急诊按钮 -->
<div
class="emergency-button"
:style="`background:${emergencyStore.emergencyInfo.isEmergency ? '#c7c7c7' : 'auto'}`"
@click="
!emergencyStore.emergencyInfo.isEmergency
? confirmEmergency()
: null
"
:style="`background:${canSetEmergency ? '#ff6b6b' : '#c7c7c7'}`"
@click="canSetEmergency ? confirmEmergency() : null"
>
<span>急诊</span>
</div>
<!-- 试管架区域 -->
<div class="test-tube-rack-area">
<div class="tube-project-tab">
<tube-item :tube="emergencyStore.emergencyInfo" :showNum="false" />
<tube-item :tube="canSetEmergency ? undefined : emergencyStore.emergencyInfo" :showNum="false" />
</div>
<div class="tube-items">
<!-- <SampleDisplay :samples="tubeHolderState.tubes" :selectedSamples="selectedSamples"
@ -170,7 +166,7 @@
</template>
<script setup lang="ts">
import { ref, watch } from 'vue'
import { computed, ref, watch } from 'vue'
import { useRouter } from 'vue-router'
import {
useConsumablesStore,
@ -192,6 +188,13 @@ const settingTubeStore = useSettingTestTubeStore()
const emergencyStore = useEmergencyStore() //
const router = useRouter()
const canSetEmergency = computed(() => {
return (
emergencyStore.emergencyInfo &&
(emergencyStore.emergencyInfo.state === 'EMPTY' ||
emergencyStore.emergencyInfo.state === 'PROCESS_COMPLETE')
)
})
//
const confirmEmergency = () => {
router.push('/index/emergency')
@ -272,7 +275,7 @@ watch(
//
.emergency-button {
background: linear-gradient(135deg, #ff6b6b, #ff4757);
background: #ff6b6b;
border-radius: 20px;
display: flex;
align-items: center;
@ -521,7 +524,6 @@ watch(
}
}
.tube-container {
display: flex;
flex-wrap: nowrap;
@ -560,7 +562,7 @@ watch(
border-radius: 5px;
height: 180px;
.scan-men {
color: #FFF;
color: #fff;
display: inline-block;
background-color: rgb(120, 206, 86);
border-radius: 5px;

6
src/pages/Index/components/Consumables/MoveLiquidArea.vue

@ -330,7 +330,7 @@ watch(
{ immediate: true }, //
)
const emergencyInfo = reactive(emergencyStore.$state.emergencyInfo)
const emergencyInfo = reactive(emergencyStore.emergencyInfo || {})
const router = useRouter()
//
let showEmergencyModal = ref(false)
@ -348,7 +348,7 @@ const addEmergency = () => {
return
}
//
if (emergencyInfo?.pos) {
if (emergencyStore.emergencyInfo?.pos) {
//便
router.push({
path: '/index/emergency',
@ -360,7 +360,7 @@ const addEmergency = () => {
}
//
const showEmergencyInfo = (item: EmergencyPosStateMessage['data']['tube']) => {
const showEmergencyInfo = (item?: EmergencyPosStateMessage['data']['tube']) => {
console.log('回显急诊信息', item)
router.push({
path: '/index/emergency',

6
src/pages/Index/components/TestTube/Tube.vue

@ -24,7 +24,7 @@
: ''
}}</span>
<span class="blood-text">{{
settingTubeStore.bloodTypeKeyMap[tube.bloodType]?.name
tube && tube.bloodType ? settingTubeStore.bloodTypeKeyMap[tube.bloodType]?.name : ''
}}</span>
<span>{{
projIdsOfTube(tube).length === 2
@ -36,7 +36,7 @@
</div>
</div>
<span v-if="showNum || tube.isEmergency" class="user-id">{{ tube.userid || '-' }}</span>
<span v-if="showNum || (tube && tube.isEmergency)" class="user-id">{{ tube && tube.userid || '-' }}</span>
</div>
</template>
@ -59,7 +59,7 @@ const emit = defineEmits(['clickTubeItem'])
const settingTubeStore = useSettingTestTubeStore()
const projIdsOfTube = (tube) => {
return tube.projId || tube.projIds || []
return tube ? (tube.projId || tube.projIds || []) : []
}
const canvas = useTemplateRef('canvas')

6
src/store/modules/emergency.ts

@ -4,14 +4,16 @@ import type { EmergencyPosStateMessage } from '../../websocket/socket'
export const useEmergencyStore = defineStore(
'emergency',
() => {
let emergencyInfo = ref({} as EmergencyPosStateMessage['data']['tube'])
let emergencyInfo = ref<
EmergencyPosStateMessage['data']['tube'] | undefined
>(undefined)
const setInfo = (data: EmergencyPosStateMessage['data']['tube']) => {
emergencyInfo.value = data
}
//卸载耗材
const unloadInfo = () => {
emergencyInfo.value = {} as EmergencyPosStateMessage['data']['tube']
emergencyInfo.value = undefined
}
return {

13
src/websocket/socket.ts

@ -81,6 +81,15 @@ interface DeviceWorkStateMessage extends BaseMessage {
timestamp: number // 时间戳
}
export type EmergencyTubeState =
| 'EMPTY'
| 'TO_BE_PROCESSED'
| 'PENDING'
| 'RESOURCE_IS_READY'
| 'PROCESSING'
| 'PROCESSED'
| 'PROCESS_COMPLETE'
| 'ERROR'
// 急诊位状态消息
interface EmergencyPosStateMessage extends BaseMessage {
type: 'EmergencyPosState'
@ -97,7 +106,7 @@ interface EmergencyPosStateMessage extends BaseMessage {
userid: string // 用户ID
projInfo: ProjectInfo[] // 项目信息列表
projIds: number[] // 项目ID列表
state: string // 状态
state: EmergencyTubeState // 状态
errors: string[] // 错误信息列表
}
}
@ -205,7 +214,7 @@ export interface SubTank {
incubatedTimeSec: number // 孵育时间(秒)
remainTimeSec: number //剩余孵育时间(显示)
errors: string[] // 错误信息列表
isEmergency: boolean,//是否急诊位
isEmergency: boolean //是否急诊位
// isPlaceholder?: boolean // 是否为占位符
}

Loading…
Cancel
Save