Browse Source

合并代码,解决冲突

dev
LiLongLong 7 months ago
parent
commit
e20b70f998
  1. 19
      src/constant/index.ts
  2. 8
      src/pages/Index/Index.vue
  3. 38
      src/pages/Index/Regular/Consumables.vue
  4. 27
      src/pages/Index/Regular/Emergency.vue
  5. 1022
      src/pages/Index/Regular/Running.vue
  6. 44
      src/pages/Index/components/Consumables/MoveLiquidArea.vue
  7. 8
      src/pages/Index/components/Consumables/ProjectSelector.vue
  8. 4
      src/pages/Index/components/Running/PlateDisplay.vue
  9. 10
      src/store/modules/consumables.ts
  10. 8
      src/websocket/socket.ts
  11. 2
      tsconfig.app.tsbuildinfo

19
src/constant/index.ts

@ -1,3 +1,4 @@
import { Emergency } from '../types/Index/Emergency';
// 开发选项
export const devOptions = {
// 小瓶缓冲液对象的isInstall属性
@ -26,3 +27,21 @@ SCAN_CONSUMABLES_STATE_MAP.map((el) => {
scan_consumables_state_option[el] = el
})
export const SCAN_CONSUMABLES_STATE = scan_consumables_state_option
//急诊位状态处理出错
const emergencyStateList = [
"EMPTY", //空
"TO_BE_PROCESSED", //待处理
"PENDING",//挂起
"RESOURCE_IS_READY",//资源准备好
"PROCESSING",//处理中
"PROCESS_COMPLETE", //完成
"ERROR",//异常
]
let emergency_state_option: any = {}
emergencyStateList.map((el) => {
emergency_state_option[el] = el
})
export const EMERGENCY_STATE = emergency_state_option

8
src/pages/Index/Index.vue

@ -86,12 +86,8 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>
<img
class="user-logo"
src="@/assets/Index/user.svg"
height="30"
/>
<button class="logout" @click="onLogout">注销</button>
<img class="user-logo" src="@/assets/Index/user.svg" height="30"></img>
<button class="logout" style="width:100px" @click="onLogout">注销</button>
</el-dropdown-item>
</el-dropdown-menu>
</template>

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

@ -112,9 +112,10 @@
</template>
<script setup lang="ts">
import { MoveLiquidArea, SpttingPlates, MainComponent } from '../Components'
import { MoveLiquidArea, SpttingPlates, MainComponent } from '../components'
// import SliderAreaEx from '../components/Consumables/SliderAreaEx.vue';
// import DragAreaEx from '../components/Consumables/DragAreaEx.vue';
import { ref, onMounted, onActivated, onBeforeUnmount } from 'vue'
// import * as R from 'ramda'
import {
getInitState,
scanConsumables,
@ -123,18 +124,18 @@ import {
unloadAllConsumable,
unloadConsumable,
ConsumableGroupNo,
} from '../../../services/Index/index'
import { useConsumablesStore, useEmergencyStore } from '../../../store'
import { useDeviceStore } from '../../../store/index'
import { eventBus } from '../../../eventBus'
import { createWebSocket } from '../../../websocket/socket'
} from '@/services/Index/index'
import { useConsumablesStore, useEmergencyStore } from '@/store'
import { useDeviceStore } from '@/store/index'
import { eventBus } from '@/eventBus'
import { createWebSocket } from '@/websocket/socket'
import type {
ConsumablesStateMessage,
SensorStateMessage,
} from '../../../websocket/socket'
import InitWarn from '../Components/Consumables/Warn/InitWarn.vue'
import { getServerInfo } from '../../../utils/getServerInfo'
import { formatScanReports } from '../../../utils/errorHandler'
} from '@/websocket/socket'
import InitWarn from '../components/Consumables/Warn/InitWarn.vue'
import { getServerInfo } from '@/utils/getServerInfo'
import { formatScanReports } from '@/utils/errorHandler'
import { ElMessage } from 'element-plus'
const { wsUrl } = getServerInfo('/api/v1/app/ws/state')
@ -185,10 +186,25 @@ const handleSensorState = (data: SensorStateMessage['data']) => {
deviceStore.setSensorState(data)
}
//false
//@ts-ignore
let hasAllConsumables = ref(false)
//
const handleConsumablesState = (data: ConsumablesStateMessage['data']) => {
if (!isDragging.value) {
consumableStore.setConsumablesData(data)
// if(
// (data.tips && data.tips.length ) &&
// (data.reactionPlateGroup && data.reactionPlateGroup.length) &&
// (data.littBottleGroup && data.littBottleGroup.length) &&
// (data.larBottleGroup && data.larBottleGroup.length)
// ){
// hasAllConsumables.value = true;
// }else{
// hasAllConsumables.value = false;
// }
// //story
// consumableStore.hasAllConsumables = hasAllConsumables.value
} else {
console.log('正在拖动,不更新耗材')
}

27
src/pages/Index/Regular/Emergency.vue

@ -125,7 +125,6 @@ const ws = createWebSocket(getServerInfo().wsUrl);
const consumableStore = useConsumablesStore();
const emergencyStore = useEmergencyStore();
const deviceStore = useDeviceStore();
console.log('deviceStore---', deviceStore)
// /
const isEmergencyEnabled = ref(true);//
@ -133,8 +132,9 @@ const isEmergencyEnabled = ref(true);//设置表单是否可输入
const projects = ref<ReactionPlate[]>([]);
onMounted(() => {
// projects
if (consumableStore.plates.length > 0) {
projects.value = consumableStore.plates as ReactionPlate[];
//@ts-ignore
if (consumableStore.consumableData.reactionPlateGroup && consumableStore.consumableData.reactionPlateGroup.length > 0) {
projects.value = consumableStore.consumableData.reactionPlateGroup as ReactionPlate[];
}
//projIdnull
projects.value = projects.value.filter(item => item.projId)
@ -235,14 +235,14 @@ const confirmHandle = async () => {
// return
// }
const emergencyInfo = emergencyPosition.value;
if(!emergencyInfo.sampleBarcode){
ElMessage.error('请输入样本条形码');
return
}
if(!emergencyInfo.userid){
ElMessage.error('请输入用户ID');
return
}
// if(!emergencyInfo.sampleBarcode){
// ElMessage.error('');
// return
// }
// if(!emergencyInfo.userid){
// ElMessage.error('ID');
// return
// }
if (emergencyInfo.projIds.length === 0) {
ElMessage.error('请选择项目');
return
@ -270,14 +270,15 @@ const confirmHandle = async () => {
};
emergencyStore.setInfo(emergencyData);
//
// ()
router.push({
path: "/index/regular/running",
});
//TAB
sessionStorage.setItem('currentTab', '2')
} else {
console.log("🚀 ~ confirmHandle ~ res:", res)
}
};
//

1022
src/pages/Index/Regular/Running.vue
File diff suppressed because it is too large
View File

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

@ -136,6 +136,10 @@
</button>
</div>
</div>
<InitWarn v-if="showEmergencyModal" :visible="showEmergencyModal" title="检查耗材" message="请将耗材加载完整后再添加"
icon="/src/assets/update-pin-icon.svg" confirmText="确认" @confirm="showEmergencyModal = false" />
<InitWarn
v-if="showModal"
:visible="showModal"
@ -187,6 +191,7 @@ import { createWebSocket } from '@/websocket/socket'
import { isTubeExist } from '@/services/Index/index'
import { InitWarn } from './Warn'
import { getServerInfo } from '@/utils/getServerInfo'
import { EMERGENCY_STATE } from "@/constant"
const { wsUrl } = getServerInfo('/api/v1/app/ws/state')
const socket = createWebSocket(wsUrl)
@ -273,10 +278,11 @@ const handleEmergencyPosState = (data: EmergencyPosStateMessage['data']) => {
// data.tube.state = 'PROCESSING'
let { state } = data.tube
// EMPTYTO_BE_PROCESSEDPROCESS_COMPLETEERROR
if (emergencyStateList.includes(state)) {
emergencyStatus.value = true
} else {
emergencyStatus.value = false
emergencyStore.setInfo(data.tube)
if(emergencyStateList.includes(state)){
emergencyStatus.value = true;
}else{
emergencyStatus.value = false;
}
emergencyStore.setInfo(data.tube)
//"PROCESS_COMPLETE",
@ -310,14 +316,15 @@ const getEmergencyStatus = () => {
const activeTab = ref(0)
//
const isActive = ref(false)
watch(
() => props.emergencyInfo,
(newVal) => {
//
if (newVal && Object.keys(newVal).length > 0) {
isActive.value = true
} else {
//
if (newVal && (newVal.state == EMERGENCY_STATE.EMPTY || newVal.state == EMERGENCY_STATE.ERROR)) {
isActive.value = false //
} else {//
isActive.value = true
}
},
{ immediate: true }, //
@ -326,8 +333,22 @@ watch(
const emergencyInfo = reactive(emergencyStore.$state.emergencyInfo)
const router = useRouter()
//
let showEmergencyModal = ref(false)
const addEmergency = () => {
if (Object.keys(emergencyInfo).length > 0) {
//
if(!consumableStore.consumableData.reactionPlateGroup){
showEmergencyModal.value = true;
return
}
//
const clonereactionList = [...consumableStore.consumableData.reactionPlateGroup]
const hasRactionPlatGroup = clonereactionList.every(item => !item.projId)
if(hasRactionPlatGroup){
showEmergencyModal.value = true;
return
}
//
if (emergencyInfo?.pos) {
//便
router.push({
path: '/index/emergency',
@ -337,6 +358,11 @@ const addEmergency = () => {
router.push('/index/emergency')
}
}
const saveIdInfo = ()=> {
}
//
const showEmergencyInfo = (item: EmergencyPosStateMessage['data']['tube']) => {
console.log('回显急诊信息', item)

8
src/pages/Index/components/Consumables/ProjectSelector.vue

@ -55,7 +55,7 @@
<script setup lang="ts">
import { ref } from 'vue'
import type { ConsumableGroupBase } from '../../../../websocket/socket'
import type { ReactionPlateGroup } from '../../../../websocket/socket'
import { nanoid } from 'nanoid'
import { useConsumablesStore, useSettingTestTubeStore } from '../../../../store'
@ -78,7 +78,7 @@ defineExpose({
clearSelection,
})
const projects = ref<ConsumableGroupBase[]>(consumables.$state.plates || [])
const projects = ref<ReactionPlateGroup[]>(consumables.consumableData.reactionPlateGroup || [])
const bloodType = ref('')
const selectedProjects = ref<number[]>([]) //
const bloodTypes = ref([
@ -95,7 +95,7 @@ const bloodTypes = ref([
])
//
const getStyle = (item: ConsumableGroupBase) => ({
const getStyle = (item: ReactionPlateGroup) => ({
backgroundColor: item.color,
})
@ -104,7 +104,7 @@ const isSelected = (projId: number) =>
selectedProjects.value.some((item) => item === projId)
//
const toggleProject = (project: ConsumableGroupBase) => {
const toggleProject = (project: ReactionPlateGroup) => {
if (isSelected(0)) {
selectedProjects.value = selectedProjects.value.filter((item) => item == 0)
}

4
src/pages/Index/components/Running/PlateDisplay.vue

@ -18,10 +18,10 @@
</template>
<script setup lang="ts">
import type { ConsumableGroupBase } from '../../../../websocket/socket'
import type { ReactionPlateGroup } from '@/websocket/socket'
defineProps<{
projects: ConsumableGroupBase[]
projects: ReactionPlateGroup[]
}>()
const getPercentage = (num: number) => {

10
src/store/modules/consumables.ts

@ -12,6 +12,13 @@ import type { ConsumablesStateMessage } from '../../websocket/socket'
export const useConsumablesStore = defineStore(
'consumables',
() => {
// 定义状态
// const isLoad = ref(false)
// const moveLiquids = ref<TipInfo[]>([])
// const plates = ref<ConsumableGroupBase[]>([])
// const bufferLittles = ref<LittleBottleGroup[]>([])
// const bufferBig = ref<LargeBottleGroup[]>([])
// @ts-ignore
const consumableData = ref<ConsumablesStateMessage['data']>({
tips: [{ tipNum: 0 }, { tipNum: 0 }, { tipNum: 0 }],
reactionPlateGroup: Array.from({ length: 6 }, () => ({
@ -51,6 +58,9 @@ export const useConsumablesStore = defineStore(
isIdCardInserted.value = status
}
//所有耗材都存在
let hasAllConsumables = ref(false)
return {
setIdCardInserted,
isIdCardInserted,

8
src/websocket/socket.ts

@ -210,7 +210,8 @@ interface ConsumableGroupBase {
color: string
num: number
isInstall: boolean
reserveNum: number
reserveNum: number,
}
export interface ReactionPlateGroup extends Partial<ConsumableGroupBase> {}
@ -227,7 +228,7 @@ interface TipInfo {
totalNum?: number
}
// 耗材状态消息接口
// 耗材状态消息接口 consumableStore
interface ConsumablesStateMessage extends BaseMessage {
type: 'ConsumablesState'
messageType: 'Report'
@ -236,7 +237,7 @@ interface ConsumablesStateMessage extends BaseMessage {
tips: TipInfo[]
reactionPlateGroup: ReactionPlateGroup[]
littBottleGroup: LittleBottleGroup[]
larBottleGroup: LargeBottleGroup[]
larBottleGroup: LargeBottleGroup[],
}
timestamp: number
}
@ -277,7 +278,6 @@ class WebSocketClient {
messageType: T['dataType'],
handler: MessageHandler<T>,
): void {
console.log('messageType==', messageType)
if (!this.messageHandlers.has(messageType)) {
console.log(
'🚀 ~ WebSocketClient ~ subscribe ~ messageType:',

2
tsconfig.app.tsbuildinfo
File diff suppressed because it is too large
View File

Loading…
Cancel
Save