184 lines
3.7 KiB
Vue
184 lines
3.7 KiB
Vue
<!--
|
|
* @Author: gtz
|
|
* @Date: 2022-01-19 15:58:17
|
|
* @LastEditors: zhp
|
|
* @LastEditTime: 2022-01-24 09:18:01
|
|
* @Description: file content
|
|
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue
|
|
-->
|
|
<template>
|
|
<div
|
|
class="base-container"
|
|
:style="{ height: '100%', fontSize: 12 * beilv + 'px', padding: 8 * beilv + 'px' }"
|
|
:class="{ 'no-padding': noPadding, 'border-none': !showLine }"
|
|
>
|
|
<!-- <div class="base-container" :style="{height: height * beilv + 'px', fontSize: 12 * beilv + 'px', padding: 12 * beilv + 'px'}"> -->
|
|
<template v-if="showLine">
|
|
<div class="line" />
|
|
<div class="line line-vertical" />
|
|
<div class="line line-right" />
|
|
<div class="line line-right-vertical" />
|
|
<div class="line line-bottom" />
|
|
<div class="line line-bottom-vertical" />
|
|
<div class="line line-bottom-right" />
|
|
<div class="line line-bottom-right-vertical" />
|
|
</template>
|
|
|
|
<div class="bar-item">
|
|
<div v-if="title" class="bar-title">
|
|
<span>
|
|
<svg-icon :icon-class="titleIcon" style="font-size: 1.5em; position: relative; top: .08em" />
|
|
{{ title }}
|
|
</span>
|
|
</div>
|
|
<div class="bar-content" :class="{ 'p-0': noContentPadding }">
|
|
<slot />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'BaseContainer',
|
|
props: {
|
|
showLine: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
noPadding: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
noContentPadding: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
title: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
titleIcon: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
height: {
|
|
type: Number,
|
|
default: 200
|
|
},
|
|
baseSize: {
|
|
type: Number,
|
|
default: 12
|
|
},
|
|
beilv: {
|
|
type: Number,
|
|
default: 1
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
curIndex: 0
|
|
}
|
|
},
|
|
mounted() {},
|
|
methods: {
|
|
changeTab(num) {
|
|
this.curIndex = num
|
|
this.$emit('tabSelect', num)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.base-container {
|
|
color: #fff;
|
|
width: 100%;
|
|
background-color: rgba($color: #061027, $alpha: 0.15);
|
|
position: relative;
|
|
border: 2px solid;
|
|
border-image: linear-gradient(90deg, rgba(82, 255, 241, 0.6), rgba(95, 190, 249, 0), rgba(82, 255, 241, 0.6)) 2 2;
|
|
.line {
|
|
position: absolute;
|
|
border-top: 4px solid #52fff1;
|
|
width: 2em;
|
|
top: -0.25em;
|
|
left: -0.25em;
|
|
&-vertical {
|
|
top: calc(-5em / 12);
|
|
left: calc(-1em / 12);
|
|
transform: rotate(90deg);
|
|
transform-origin: left;
|
|
}
|
|
&-right {
|
|
top: -0.25em;
|
|
right: -0.25em;
|
|
left: inherit;
|
|
}
|
|
&-right-vertical {
|
|
top: calc(-5em / 12);
|
|
right: calc(-1em / 12);
|
|
left: inherit;
|
|
transform: rotate(-90deg);
|
|
transform-origin: right;
|
|
}
|
|
&-bottom {
|
|
top: inherit;
|
|
left: -0.25em;
|
|
bottom: -0.25em;
|
|
}
|
|
&-bottom-vertical {
|
|
top: inherit;
|
|
left: calc(-1em / 12);
|
|
bottom: calc(-5em / 12);
|
|
transform: rotate(-90deg);
|
|
transform-origin: left;
|
|
}
|
|
&-bottom-right {
|
|
top: inherit;
|
|
left: inherit;
|
|
right: -0.25em;
|
|
bottom: -0.25em;
|
|
}
|
|
&-bottom-right-vertical {
|
|
top: inherit;
|
|
left: inherit;
|
|
right: calc(-1em / 12);
|
|
bottom: calc(-5em / 12);
|
|
transform: rotate(90deg);
|
|
transform-origin: right;
|
|
}
|
|
}
|
|
|
|
.bar-item {
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.bar-title {
|
|
width: 100%;
|
|
color: #52fff1;
|
|
font-size: 1.5em;
|
|
padding: 0.67em;
|
|
}
|
|
|
|
.bar-content {
|
|
padding: 1em;
|
|
flex: 1 auto;
|
|
}
|
|
|
|
.no-padding {
|
|
padding: 0;
|
|
}
|
|
|
|
.p-0 {
|
|
padding: 0;
|
|
}
|
|
|
|
&.border-none {
|
|
border: none;
|
|
}
|
|
}
|
|
</style>
|