You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
duoji-frontend/src/components/common/content-view.vue

117 lines
2.4 KiB
Vue

6 years ago
<template>
<div class="wrap">
<!-- 面包屑下标题 -->
<div class="wrap-title" v-if="$route.meta.name">
<span class="wrap-title-text">
<slot name="title">{{ title }}</slot>
</span>
</div>
<!-- header -->
<div class="wrap-header">
<slot name="header"></slot>
<slot name="button"></slot>
</div>
<!-- container-->
<div class="wrap-cont">
<div class="wrap-cont-cover">
<div class="wrap-container">
<!-- 默认插槽 -->
<slot></slot>
</div>
</div>
</div>
<!-- footer -->
<div class="wrap-footer bg-white">
<slot name="footer"></slot>
</div>
</div>
</template>
<script type="text/javascript">
export default {
name: "content-view",
data() {
return {
title: "",
footerStyle: false
};
},
watch: {
$route(route) {
this.title = route.meta.title || route.meta.name;
}
},
computed: {},
mounted() {
this.title = this.$route.meta.title || this.$route.meta.name;
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.wrap {
display: flex;
flex-direction: column;
flex: 1;
position: relative;
&-title {
padding: 0 32px 24px;
background: #fff;
display: flex;
justify-content: space-between;
align-items: center;
&-text {
font-weight: bold;
flex: 1;
}
}
&-header {
background: #fff;
padding: 0 32px;
border-bottom: 1px solid #e1e1e1;
}
&-cont {
display: flex;
flex-direction: column;
flex: 1;
padding: 0 24px;
&-cover {
flex: 1;
display: flex;
flex-direction: column;
padding: 24px 0;
}
}
&-container {
flex: 1;
position: relative;
display: flex;
flex-direction: column;
overflow-x: auto;
background-color: #fff;
& > div {
padding: 24px;
overflow-x: hidden;
}
}
&-footer {
position: fixed;
left: 0;
bottom: 0;
padding-left: 256px;
// padding-left: 50%;
width: 100%;
text-align: center;
z-index: 2;
}
}
</style>