You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
2.6 KiB

<template>
<div class="section">
<div
v-if="title && title.length > 0"
class="section-header">
<div
:style="{ 'border-left-color': mColor }"
class="section-mark"/>
<div class="section-title">{{ title }}</div>
<flexbox
v-if="showF"
class="f-container">
<div
v-for="(item, index) in fItems"
:key="index"
:class="{ 'f-item-select':fIndex==item.type }"
class="f-item"
@click="fClick(item)">{{ item.title }}</div>
</flexbox>
</div>
<div
:style="{ 'height': contentHeight }"
class="content">
<div
v-if="showNoData"
class="no-data-container">
<img
class="no-data"
src="@/assets/img/no_data.png" >
<div class="no-data-name">暂无数据</div>
</div>
<slot/>
</div>
</div>
</template>
<script type="text/javascript">
export default {
name: 'Sections',
components: {},
props: {
title: {
type: String,
default: ''
},
mColor: {
type: String,
default: '#FF6767'
},
/** 内容区域固定高度 */
contentHeight: {
type: String,
default: '327px'
},
/** 展示客户工作台 重要提醒 时间筛选 */
showF: {
type: Boolean,
default: false
},
fItems: {
type: Array,
default: () => {
return []
}
},
/** 展示无数据 */
showNoData: {
type: Boolean,
default: false
}
},
data() {
return {
fIndex: -1
}
},
computed: {},
mounted() {},
methods: {
fClick(item) {
this.fIndex = item.type
this.$emit('f-click', 'val')
}
}
}
</script>
<style lang="scss" scoped>
.section {
position: relative;
background-color: white;
margin-top: 8px;
}
.section:first-child {
margin-top: 0;
}
.section-mark {
border-left-width: 3px;
border-left-style: solid;
height: 10px;
}
.section-header {
display: flex;
align-items: center;
padding: 5px 15px;
}
.section-title {
font-size: 13px;
color: #333;
margin-left: 8px;
flex-shrink: 0;
}
.f-container {
width: auto;
margin-left: 40px;
.f-item {
padding: 2px 4px;
font-size: 12px;
margin-right: 10px;
color: #666;
}
.f-item-select {
border-radius: 2px;
background-color: #ff6767;
color: white;
}
}
.content {
overflow: auto;
.no-data-container {
text-align: center;
.no-data {
margin-top: 30px;
}
.no-data-name {
font-size: 12px;
margin-top: 8px;
color: #666;
}
}
}
</style>