<template>
<div :class="['page-table-wrapper', tabVue.rootClass]">
<div class="table-wrapper__search" v-if="hasSearchSlot()">
<table-search
@handleConfirmSearch="tabVue.confirmSearch()"
@handleClearSearch="tabVue.clearSearch()">
<slot name="search"></slot>
</table-search>
</div>
<div class="table-wrapper__content">
<div class="table-wrapper__content--toolbar">
<table-operation :parent="tabVue" :config="tabVue.OperationController">
<slot name="operationLeft" slot="left" v-if="!noOperationLeftsSlots"></slot>
<slot name="operationRight" slot="right" v-if="!noOperationRightsSlots"></slot>
</table-operation>
</div>
<basic-table :parent="tabVue">
<template slot="tableColumn" slot-scope="scope">
<slot name="tableColumn" :row="scope.row" :columnItem="scope.columnItem"></slot>
</template>
<template slot="tableRowDetail" slot-scope="scope">
<slot name="tableRowDetail" :row="props.row"></slot>
</template>
</basic-table>
</div>
</div>
</template>
<script>
import { tableSearch } from '@/components/table-search';
import basicTable from './basic-table';
import { tableOperation } from '@/components/table-operation';
import _ from 'lodash';
export default {
components: { tableSearch, basicTable, tableOperation },
props: {
parent: { /* 指定父组件的this */
type: Object
}
},
data() {
return {
tabVue: this.parent || this.$parent
}
},
computed() {
noOperationLeftsSlots() {
return _.isEmpty(this.$slots.operationLeft);
},
noOperationRightsSlots() {
return _.isEmpty(this.$slots.operationRight);
}
},
methods: {
/* 判断是否有搜索插槽 */
hasSearchSlot() {
return this.$slots.search;
}
}
}
</script>