| | |
| | | <template> |
| | | <div class="bedside-auxiliary-screen-container"> |
| | | <Header :type="0" device-no="03" /> |
| | | <div class="bedside-auxiliary-screen-content"></div> |
| | | <div |
| | | class="bedside-auxiliary-screen-container" |
| | | :style="{ backgroundColor: backgroundColor }" |
| | | > |
| | | <Header /> |
| | | <div class="bedside-auxiliary-screen-content"> |
| | | <div class="content-position"></div> |
| | | <transition name="fade" mode="out-in"> |
| | | <component |
| | | v-if="cotentHeight > 0" |
| | | :is="currentComponent" |
| | | :height="cotentHeight" |
| | | /> |
| | | </transition> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { defineAsyncComponent } from 'vue'; |
| | | import { ref, watch, computed, onMounted, defineAsyncComponent } from "vue"; |
| | | // @ts-ignore |
| | | import Header from './components/Header.vue'; |
| | | import Header from "./components/Header.vue"; |
| | | import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen"; |
| | | import { EPageType } from "@/store/type/bedsideAuxiliaryScreen.type"; |
| | | import { getAvailableHeightByClass } from "@/utils/utils"; |
| | | import { useWindowSize } from "@/composables/useWindowSize"; |
| | | // 未排班时的组件 |
| | | const UnplannedSchedule = defineAsyncComponent( |
| | | () => import("./pages/UnplannedSchedule.vue") |
| | | ); |
| | | // 未签到时的组件 |
| | | const NotSignedIn = defineAsyncComponent( |
| | | () => import("./pages/NotSignedIn.vue") |
| | | ); |
| | | // 已签到时的组件 |
| | | const SignedIn = defineAsyncComponent(() => import("./pages/SignedIn.vue")); |
| | | // 治疗中的组件 |
| | | const UnderTreatment = defineAsyncComponent( |
| | | () => import("./pages/UnderTreatment.vue") |
| | | ); |
| | | // 血压计的组件 |
| | | const Sphygmomanometer = defineAsyncComponent( |
| | | () => import("./pages/Sphygmomanometer.vue") |
| | | ); |
| | | |
| | | const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore(); |
| | | const cotentHeight = ref(0); |
| | | const { width, height } = useWindowSize(); |
| | | |
| | | const backgroundColor = computed(() => { |
| | | let color = "#DAE5EC"; |
| | | // 如果是未排班、加载中或未签到页面,背景色为白色 |
| | | if ( |
| | | [ |
| | | EPageType.NOT_INIT, |
| | | EPageType.LOADING, |
| | | EPageType.UNPLANNED_SCHEDULE, |
| | | ].includes(bedsideAuxiliaryScreenStore.deviceData.pageType) |
| | | ) { |
| | | color = "#fff"; |
| | | } |
| | | return color; |
| | | }); |
| | | |
| | | const currentComponent = computed(() => { |
| | | let name: any = UnplannedSchedule; |
| | | |
| | | // 血压计 |
| | | if ( |
| | | bedsideAuxiliaryScreenStore.deviceData.pageType === |
| | | EPageType.SPHYGMOMANOMETER |
| | | ) { |
| | | name = Sphygmomanometer; |
| | | } else if ( |
| | | [ |
| | | EPageType.NOT_INIT, |
| | | EPageType.LOADING, |
| | | EPageType.UNPLANNED_SCHEDULE, |
| | | ].includes(bedsideAuxiliaryScreenStore.deviceData.pageType) |
| | | ) { |
| | | name = UnplannedSchedule; |
| | | } |
| | | // 未签到 |
| | | else if ( |
| | | bedsideAuxiliaryScreenStore.deviceData.pageType === EPageType.NOT_SIGNED_IN |
| | | ) { |
| | | name = NotSignedIn; |
| | | } |
| | | // 已签到 |
| | | else if ( |
| | | bedsideAuxiliaryScreenStore.deviceData.pageType === EPageType.SIGNED_IN |
| | | ) { |
| | | name = SignedIn; |
| | | } |
| | | // 透析中 |
| | | else { |
| | | name = UnderTreatment; |
| | | } |
| | | return name; |
| | | }); |
| | | |
| | | watch([width, height], () => { |
| | | cotentHeight.value = getAvailableHeightByClass("content-position"); |
| | | }); |
| | | |
| | | onMounted(() => { |
| | | if (bedsideAuxiliaryScreenStore.deviceCode) { |
| | | bedsideAuxiliaryScreenStore.connect( |
| | | `${import.meta.env.VITE_SSE_BASE_URL}${ |
| | | bedsideAuxiliaryScreenStore.deviceCode |
| | | }` |
| | | ); |
| | | } |
| | | cotentHeight.value = getAvailableHeightByClass("content-position"); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | *{ |
| | | margin: 0; |
| | | padding: 0; |
| | | box-sizing: border-box; |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | | box-sizing: border-box; |
| | | } |
| | | .bedside-auxiliary-screen-container { |
| | | .bedside-auxiliary-screen-content { |
| | | padding: 6px 12px 0; |
| | | } |
| | | background-color: #409eff; |
| | | .bedside-auxiliary-screen-content { |
| | | padding: 6px 12px 0; |
| | | } |
| | | } |
| | | </style> |
| | | <style scoped> |
| | | .fade-enter-active, |
| | | .fade-leave-active { |
| | | transition: opacity 0.3s ease; |
| | | } |
| | | .fade-enter-from, |
| | | .fade-leave-to { |
| | | opacity: 0; |
| | | } |
| | | </style> |