| @@ -0,0 +1,27 @@ | |||||
| <div class="pannel" :style="style" :class="[bkClass]"> | |||||
| <div class="header_box"> | |||||
| <div class="top_line"> | |||||
| <div class="left_sign"></div> | |||||
| <div class="right_sign"></div> | |||||
| </div> | |||||
| <div class="header row align_item_center"> | |||||
| <div v-if="title" class="title_bk row align_item_center"> | |||||
| <i class="icon"></i> | |||||
| <p>{{title}}</p> | |||||
| </div> | |||||
| <div class="more"> | |||||
| <slot name="header"></slot> | |||||
| </div> | |||||
| </div> | |||||
| <div class="light"></div> | |||||
| </div> | |||||
| <div class="body"> | |||||
| <div> | |||||
| <slot></slot> | |||||
| </div> | |||||
| <div class="bottom_line"> | |||||
| <div class="left_sign"></div> | |||||
| <div class="right_sign"></div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| @@ -0,0 +1,42 @@ | |||||
| export default { | |||||
| props: { | |||||
| // 定义标题 | |||||
| title: { | |||||
| type: String, | |||||
| default: '我是标题' | |||||
| }, | |||||
| bkClass: { | |||||
| type: String, | |||||
| default: 'bk_normal' | |||||
| }, | |||||
| // 定义跳转页面url | |||||
| uri: { | |||||
| type: String, | |||||
| default: '' | |||||
| }, | |||||
| // 定义组件高度 | |||||
| height: { | |||||
| type: String, | |||||
| default: '300' | |||||
| }, | |||||
| // 定义组件高度 | |||||
| width: { | |||||
| type: String, | |||||
| default: '500' | |||||
| } | |||||
| }, | |||||
| computed: { | |||||
| style: function () { | |||||
| return { | |||||
| height: this.height + 'px', | |||||
| width: this.width + 'px' | |||||
| }; | |||||
| } | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,131 @@ | |||||
| .pannel { | |||||
| box-sizing: border-box; | |||||
| display: flex; | |||||
| flex-direction: column; | |||||
| // 頭部區域 | |||||
| .header_box { | |||||
| position: relative; | |||||
| height: 35px; | |||||
| overflow: visible !important; | |||||
| .top_line { | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| background-color: rgba(22, 60, 114, 1); | |||||
| width: 100%; | |||||
| height: 2px; | |||||
| .left_sign { | |||||
| height: 2px; | |||||
| width: 13px; | |||||
| background-color: rgba(53, 143, 255, 1); | |||||
| } | |||||
| .right_sign { | |||||
| height: 2px; | |||||
| width: 13px; | |||||
| background-color: rgba(53, 143, 255, 1); | |||||
| } | |||||
| } | |||||
| .header { | |||||
| margin-top: 2px; | |||||
| height: 32px; | |||||
| background: rgba(8, 33, 71, 1); | |||||
| .title_bk { | |||||
| font-style: italic; | |||||
| font-weight: 600; | |||||
| height: 50px; | |||||
| margin-left: 20px; | |||||
| line-height: 32px; | |||||
| text-align: center; | |||||
| .icon { | |||||
| display: block; | |||||
| background: url('./icon.png'); | |||||
| background-size: 100% 100%; | |||||
| width: 18px; | |||||
| height: 18px; | |||||
| } | |||||
| } | |||||
| .more { | |||||
| margin-right: 20px; | |||||
| } | |||||
| } | |||||
| .light { | |||||
| position: absolute; | |||||
| bottom: -15px; | |||||
| left: 30px; | |||||
| background: url('./light.png'); | |||||
| background-size: 100% 100%; | |||||
| width: 280px; | |||||
| height: 30px; | |||||
| animation: lightmove 4s infinite; | |||||
| } | |||||
| } | |||||
| // 内容区域 | |||||
| .body { | |||||
| margin: 2px; | |||||
| padding: 10px; | |||||
| width: 100%; | |||||
| position: relative; | |||||
| flex: 1; | |||||
| background-color: rgba(11, 28, 58, 1); | |||||
| .bottom_line { | |||||
| position: absolute; | |||||
| left: 0; | |||||
| right: 0; | |||||
| bottom: 0; | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| background-color: rgba(22, 60, 114, 1); | |||||
| width: 100%; | |||||
| height: 2px; | |||||
| .left_sign { | |||||
| height: 2px; | |||||
| width: 13px; | |||||
| background-color: rgba(53, 143, 255, 1); | |||||
| } | |||||
| .right_sign { | |||||
| height: 2px; | |||||
| width: 13px; | |||||
| background-color: rgba(53, 143, 255, 1); | |||||
| } | |||||
| } | |||||
| div { | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| } | |||||
| } | |||||
| } | |||||
| @keyframes lightmove { | |||||
| /* 动画关键帧 */ | |||||
| 0% { | |||||
| opacity: 1; | |||||
| transform: translateX(0px); | |||||
| /* 样式 */ | |||||
| } | |||||
| 50% { | |||||
| opacity: 0.2; | |||||
| transform: translateX(170px); | |||||
| } | |||||
| /* 。。。 */ | |||||
| 100% { | |||||
| opacity: 1; | |||||
| transform: translateX(0px); | |||||
| /* 样式 */ | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,3 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped></style> | |||||
| @@ -18,6 +18,27 @@ body { | |||||
| overflow-y: auto; | overflow-y: auto; | ||||
| } | } | ||||
| .page { | |||||
| position: relative; | |||||
| width: 1920px; | |||||
| height: 1080px; | |||||
| border: 1px solid red; | |||||
| .left { | |||||
| position: absolute; | |||||
| left: 20px; | |||||
| top: 100px; | |||||
| bottom: 20px; | |||||
| } | |||||
| .right { | |||||
| position: absolute; | |||||
| right: 20px; | |||||
| top: 100px; | |||||
| bottom: 20px; | |||||
| } | |||||
| } | |||||
| .scrollbar::-webkit-scrollbar { | .scrollbar::-webkit-scrollbar { | ||||
| width: 0; | width: 0; | ||||
| height: 0; | height: 0; | ||||
| @@ -5,6 +5,11 @@ | |||||
| .col { | .col { | ||||
| display: flex; | display: flex; | ||||
| flex-direction: column; | flex-direction: column; | ||||
| } | |||||
| .space_between { | |||||
| justify-content: space-between; | |||||
| } | } | ||||
| .flex_1 { | .flex_1 { | ||||
| @@ -13,5 +18,4 @@ | |||||
| .align_item_center { | .align_item_center { | ||||
| align-items: center; | align-items: center; | ||||
| } | |||||
| } | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,3 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,4 @@ | |||||
| <Pannel> | |||||
| </Pannel> | |||||
| @@ -0,0 +1,17 @@ | |||||
| import Pannel from '@/components/pannel/index.vue'; | |||||
| export default { | |||||
| components: { | |||||
| Pannel | |||||
| }, | |||||
| data () { | |||||
| return { | |||||
| }; | |||||
| }, | |||||
| created () { | |||||
| }, | |||||
| mounted () { | |||||
| }, | |||||
| methods: { | |||||
| } | |||||
| }; | |||||
| @@ -0,0 +1,4 @@ | |||||
| <template src='./index.html'/> | |||||
| <script lang='js' src='./index.js'></script> | |||||
| <style lang='scss' src='./index.scss' scoped> | |||||
| </style> | |||||
| @@ -0,0 +1,26 @@ | |||||
| export const comps = { | |||||
| '1': { | |||||
| 'left': [ | |||||
| 'Left11', | |||||
| 'Left21', | |||||
| 'Left31', | |||||
| ], | |||||
| 'right': [ | |||||
| 'Right11', | |||||
| 'Right21', | |||||
| 'Right31', | |||||
| ] | |||||
| }, | |||||
| '2': { | |||||
| 'left': [ | |||||
| '', | |||||
| '', | |||||
| '' | |||||
| ], | |||||
| 'right': [ | |||||
| '', | |||||
| '', | |||||
| '' | |||||
| ] | |||||
| } | |||||
| } | |||||
| @@ -1,3 +1,10 @@ | |||||
| <div class=""> | |||||
| 项目初始化 | |||||
| <div class="page"> | |||||
| <!-- 项目初始化 --> | |||||
| <div class="left col space_between"> | |||||
| <!-- <Left11></Left11> --> | |||||
| <component :is="item" v-for="(item, index) in currentComp.left" :key="index"></component> | |||||
| </div> | |||||
| <div class="right col space_between"> | |||||
| <component :is="item" v-for="(item, index) in currentComp.right" :key="index"></component> | |||||
| </div> | |||||
| </div> | </div> | ||||
| @@ -1,10 +1,32 @@ | |||||
| import Left11 from './comps/left/top/1/index.vue'; | |||||
| import Left21 from './comps/left/middle/1/index.vue'; | |||||
| import Left31 from './comps/left/bottom/1/index.vue'; | |||||
| import Right11 from './comps/right/top/1/index.vue'; | |||||
| import Right21 from './comps/right/middle/1/index.vue'; | |||||
| import Right31 from './comps/right/bottom/1/index.vue'; | |||||
| import { comps } from './data.js' | |||||
| export default { | export default { | ||||
| components: { | components: { | ||||
| Left11, | |||||
| Left21, | |||||
| Left31, | |||||
| Right11, | |||||
| Right21, | |||||
| Right31 | |||||
| }, | }, | ||||
| data () { | data () { | ||||
| return { | return { | ||||
| tab: '1', | |||||
| comps | |||||
| }; | }; | ||||
| }, | }, | ||||
| computed: { | |||||
| currentComp: function () { | |||||
| return this.comps[this.tab] | |||||
| } | |||||
| }, | |||||
| created () { | created () { | ||||
| }, | }, | ||||
| mounted () { | mounted () { | ||||