132 lines
2.4 KiB
Vue
132 lines
2.4 KiB
Vue
<template>
|
|
<div class="ai-detail">
|
|
<div class="ai-detail__title">
|
|
<slot name="title"></slot>
|
|
</div>
|
|
<div class="ai-detail__step" v-if="isHasStepSlot">
|
|
<slot name="step"></slot>
|
|
</div>
|
|
<div class="ai-detail__content" :class="className">
|
|
<div class="ai-detail__content--wrapper" :class="{'ai-detail__content--side':isHasSidebar,list}">
|
|
<slot name="content"></slot>
|
|
</div>
|
|
</div>
|
|
<div class="ai-detail__footer" v-if="isHasFooterSlot">
|
|
<slot name="footer"></slot>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'AiDetail',
|
|
|
|
props: {
|
|
isHasSidebar: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
list: Boolean
|
|
},
|
|
|
|
computed: {
|
|
isHasFooterSlot() {
|
|
return this.$slots.footer
|
|
},
|
|
|
|
isHasStepSlot() {
|
|
return this.$slots.step
|
|
},
|
|
|
|
className() {
|
|
if (this.isHasFooterSlot) {
|
|
if (this.isHasStepSlot) {
|
|
return 'ai-detail__content--active-step'
|
|
}
|
|
|
|
return 'ai-detail__content--active'
|
|
} else {
|
|
if (this.isHasStepSlot) {
|
|
return 'ai-detail__content--step'
|
|
}
|
|
}
|
|
|
|
return ''
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.ai-detail {
|
|
height: 100%;
|
|
background: #F5F6F9;
|
|
overflow: hidden;
|
|
|
|
.ai-detail__title {
|
|
margin: 0 20px;
|
|
}
|
|
|
|
.ai-detail__step {
|
|
height: 72px;
|
|
}
|
|
|
|
.ai-detail__content {
|
|
height: calc(100% - 48px);
|
|
padding: 0 0 20px 0;
|
|
overflow-x: hidden;
|
|
overflow-y: overlay;
|
|
}
|
|
|
|
@media screen and (max-width: 1740px) {
|
|
.ai-detail__content {
|
|
padding: 0 20px 20px;
|
|
}
|
|
}
|
|
|
|
.ai-detail__content--wrapper {
|
|
position: relative;
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding-top: 20px;
|
|
|
|
&.list {
|
|
max-width: unset;
|
|
margin: 0 20px;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: 1740px) {
|
|
.ai-detail__content--side {
|
|
margin-left: 128px;
|
|
}
|
|
}
|
|
|
|
.ai-detail__content--active {
|
|
height: calc(100% - 48px - 64px);
|
|
}
|
|
|
|
.ai-detail__content--active-step {
|
|
height: calc(100% - 48px - 64px - 72px);
|
|
}
|
|
|
|
.ai-detail__content--step {
|
|
height: calc(100% - 48px - 72px);
|
|
}
|
|
|
|
.ai-detail__footer {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
height: 64px;
|
|
background: #F5F5F5;
|
|
box-shadow: 0px 1px 0px 0px #E5E5E5;
|
|
|
|
.el-button {
|
|
width: 92px;
|
|
}
|
|
}
|
|
}
|
|
</style>
|