完善项目及大屏
This commit is contained in:
		| @ -2,13 +2,13 @@ | ||||
|   <div class="large_screen"> | ||||
|     <Header :projectId="projectId" @changePage="handleChangePage" /> | ||||
|     <div class="nav"> | ||||
|       <div class="nav_left" v-if="!isHide" :class="{ 'slide-out-left': isHiding }"> | ||||
|       <div class="nav_left" :style="{ left: isHideOther ? '-25vw' : '0' }"> | ||||
|         <leftPage :projectId="projectId" /> | ||||
|       </div> | ||||
|       <div class="nav_center" :class="{ 'full-width': isHiding }"> | ||||
|         <centerPage :projectId="projectId" :hideFooter="isHiding" :isHide="isHide" /> | ||||
|       <div class="nav_center" :style="{ width: isFull ? '100%' : 'calc(50vw - 30px)' }"> | ||||
|         <centerPage :projectId="projectId" :hideFooter="isHiding" :isHide="isFull" /> | ||||
|       </div> | ||||
|       <div class="nav_right" v-if="!isHide" :class="{ 'slide-out-right': isHiding }"> | ||||
|       <div class="nav_right" :style="{ right: isHideOther ? '-25vw' : '0' }"> | ||||
|         <rightPage :projectId="projectId" /> | ||||
|       </div> | ||||
|     </div> | ||||
| @ -16,6 +16,7 @@ | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { ref } from 'vue'; | ||||
| import Header from './components/header.vue'; | ||||
| import leftPage from './components/leftPage.vue'; | ||||
| import centerPage from './components/centerPage.vue'; | ||||
| @ -24,16 +25,23 @@ import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| const userStore = useUserStoreHook(); | ||||
| const projectId = computed(() => userStore.selectedProject.id); | ||||
| const isHide = ref(false) | ||||
| const isFull = ref(false) | ||||
| const isHideOther = ref(false) | ||||
| const isHiding = ref(false) | ||||
|  | ||||
| /** | ||||
|  * 切换中心页面全屏 | ||||
|  */ | ||||
| const handleChangePage = () => { | ||||
|   isHiding.value = true; | ||||
|  | ||||
|   setTimeout(() => { | ||||
|     isHide.value = !isHide.value; | ||||
|     isHiding.value = false; | ||||
|   }, 500); | ||||
|   if (isFull.value) { | ||||
|     isFull.value = false; | ||||
|     setTimeout(() => { | ||||
|       isHideOther.value = false; | ||||
|     }, 500); | ||||
|   } else { | ||||
|     isFull.value = true; | ||||
|     isHideOther.value = true; | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| @ -49,9 +57,9 @@ const handleChangePage = () => { | ||||
| } | ||||
|  | ||||
| .nav { | ||||
|   display: flex; | ||||
|   justify-content: center; | ||||
|   gap: 15px; | ||||
|   position: relative; | ||||
|   display: grid; | ||||
|   place-items: center; | ||||
|   width: calc(100vw - 30px); | ||||
|   height: calc(100vh - 90px); | ||||
|   margin: 0 auto; | ||||
| @ -61,15 +69,25 @@ const handleChangePage = () => { | ||||
|  | ||||
| .nav_left, | ||||
| .nav_right { | ||||
|   width: 25vw; | ||||
|   transition: transform 1s ease, opacity 1s ease; | ||||
|   flex-shrink: 0; | ||||
|   position: absolute; | ||||
|   width: calc(25vw - 15px); | ||||
|   height: 100%; | ||||
|   transition: all 0.5s ease; | ||||
| } | ||||
|  | ||||
| .nav_left { | ||||
|   top: 0; | ||||
|   left: 0; | ||||
| } | ||||
|  | ||||
| .nav_right { | ||||
|   top: 0; | ||||
|   right: 0; | ||||
| } | ||||
|  | ||||
| .nav_center { | ||||
|   flex: 1 1 auto; | ||||
|   min-width: 0; | ||||
|   transition: all 1s ease; | ||||
|   height: 100%; | ||||
|   transition: all 0.5s ease; | ||||
| } | ||||
|  | ||||
| /* 中间面板全屏动画 */ | ||||
| @ -79,13 +97,13 @@ const handleChangePage = () => { | ||||
|   flex: none; | ||||
| } | ||||
|  | ||||
| .slide-out-left { | ||||
|   transform: translateX(-100%); | ||||
| .slide_left { | ||||
|   left: -25vw; | ||||
|   opacity: 0; | ||||
| } | ||||
|  | ||||
| .slide-out-right { | ||||
|   transform: translateX(100%); | ||||
| .slide_right { | ||||
|   right: -25vw; | ||||
|   opacity: 0; | ||||
| } | ||||
| </style> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user