feat: 基本布局完成
parent
236c6cda1a
commit
3e8abf84d4
@ -0,0 +1,6 @@
|
|||||||
|
<template>
|
||||||
|
<div class="flex justify-center items-center pt-2">
|
||||||
|
<div> Copyright (c) 2022</div>
|
||||||
|
<a class="mx-2 hover:text-blue-400" href="#" target="_blank">咬轮猫</a></div
|
||||||
|
>
|
||||||
|
</template>
|
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>中间</div>
|
||||||
|
</template>
|
@ -0,0 +1 @@
|
|||||||
|
<template><div>左侧</div></template>
|
@ -0,0 +1 @@
|
|||||||
|
<template><div>右侧</div></template>
|
@ -0,0 +1 @@
|
|||||||
|
<template><div>顶部</div></template>
|
@ -0,0 +1,155 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-container>
|
||||||
|
<el-header class="top-el-header">
|
||||||
|
<top-panel></top-panel>
|
||||||
|
</el-header>
|
||||||
|
<el-container class="middle">
|
||||||
|
<el-aside class="side-nav" :class="'show-nav'">
|
||||||
|
<el-scrollbar class="elscrooll-pc">
|
||||||
|
<left-panel class="content-left"></left-panel>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-aside>
|
||||||
|
<el-main class="middle main">
|
||||||
|
<el-scrollbar class="canvas-main-pc">
|
||||||
|
<div>
|
||||||
|
<center-panel></center-panel>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-main>
|
||||||
|
<el-aside class="side-nav" :class="'show-nav'">
|
||||||
|
<el-scrollbar class="elscrooll-pc">
|
||||||
|
<right-panel></right-panel>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-aside>
|
||||||
|
</el-container>
|
||||||
|
<el-footer class="bottom-el-footer" height="40px">
|
||||||
|
<bottom-panel></bottom-panel>
|
||||||
|
</el-footer>
|
||||||
|
</el-container>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ElContainer, ElHeader, ElAside, ElFooter, ElMain, ElScrollbar } from 'element-plus';
|
||||||
|
import 'element-plus/dist/index.css';
|
||||||
|
import TopPanel from './components/top-panel/index.vue';
|
||||||
|
import LeftPanel from './components/left-panel/index.vue';
|
||||||
|
import CenterPanel from './components/center-panel/index.vue';
|
||||||
|
import RightPanel from './components/right-panel/index.vue';
|
||||||
|
import BottomPanel from './components/bottom-panel/index.vue';
|
||||||
|
</script>
|
||||||
|
<style scoped lang="less">
|
||||||
|
@headerHeight: 60px;
|
||||||
|
@buttomHeight: 40px;
|
||||||
|
.elscrooll-pc {
|
||||||
|
height: calc(100vh - (@headerHeight + @buttomHeight));
|
||||||
|
}
|
||||||
|
|
||||||
|
.canvas-main-pc {
|
||||||
|
min-height: calc(100vh - (@headerHeight + @buttomHeight));
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.middle {
|
||||||
|
min-height: calc(100vh - (@headerHeight + @buttomHeight));
|
||||||
|
&.main {
|
||||||
|
margin: 0px 5px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 0px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.side-nav {
|
||||||
|
@showLeftNavWidth: 240px;
|
||||||
|
@hideLeftNavWidth: 0px;
|
||||||
|
position: relative;
|
||||||
|
overflow: inherit;
|
||||||
|
transition: all 0.5s;
|
||||||
|
// background-color: rgb(250, 251, 253);
|
||||||
|
box-shadow: 0px 0px 2px #dfcfcf;
|
||||||
|
|
||||||
|
.content-left {
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0px 1vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.show-nav {
|
||||||
|
flex: 0 0 @showLeftNavWidth;
|
||||||
|
min-width: @showLeftNavWidth;
|
||||||
|
max-width: @showLeftNavWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hide-nav {
|
||||||
|
flex: 0 0 @hideLeftNavWidth;
|
||||||
|
min-width: @hideLeftNavWidth;
|
||||||
|
max-width: @hideLeftNavWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-el-header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: 0px 0px 2px #dfcfcf;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-el-footer {
|
||||||
|
box-shadow: 0px -1px 0px 0px #dfcfcf;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextMenu {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 99999;
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 5px 0;
|
||||||
|
margin: 0px;
|
||||||
|
display: block;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 2px 5px 10px rgba(0, 0, 0, 0.3);
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shortcut {
|
||||||
|
width: 115px;
|
||||||
|
text-align: right;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 0px 15px 1px 20px;
|
||||||
|
margin: 0;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:hover {
|
||||||
|
background-color: #0cf;
|
||||||
|
color: #ffffff;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disabled {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disabled:hover {
|
||||||
|
color: #999;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.separator {
|
||||||
|
border-top: solid 1px #e3e3e3;
|
||||||
|
padding-top: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,3 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>编辑页</div>
|
<webtopo-svgedit></webtopo-svgedit>
|
||||||
</template>
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import WebtopoSvgedit from '../../components/webtopo-svgedit/index.vue';
|
||||||
|
</script>
|
||||||
|
Loading…
Reference in New Issue