1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-16 17:05:41 +08:00

121 lines
2.8 KiB
Vue

<template>
<el-tabs v-model="currentTabChild" type="border-card" @tab-click="handleClick">
<template v-for="(tabAttributes, key) in tabsList">
<el-tab-pane
:key="key"
:label="tabAttributes.name"
:windowuuid="windowUuid"
:tabuuid="tabAttributes.uuid"
:name="String(key)"
lazy
:disabled="isCreateNew"
>
<el-col :span="24">
<data-table
:parent-uuid="windowUuid"
:container-uuid="tabAttributes.uuid"
:panel-type="panelType"
/>
</el-col>
</el-tab-pane>
</template>
</el-tabs>
</template>
<script>
import { tabMixin } from '@/components/ADempiere/Tab/tabMixin'
import DataTable from '@/components/ADempiere/DataTable'
export default {
name: 'TabChildren',
components: {
DataTable
},
mixins: [tabMixin],
props: {
firstTabUuid: {
type: String,
default: undefined
}
},
data() {
return {
currentTabChild: this.$route.query.tabChild
}
},
computed: {
// data this current tab
getDataSelection() {
return this.$store.getters.getDataRecordAndSelection(this.tabUuid)
},
// data parent tab
getterDataParentTab() {
return this.$store.getters.getDataRecordAndSelection(this.firstTabUuid)
},
isReadyFromGetData() {
const { isLoaded, isLoadedContext } = this.getterDataParentTab
return !this.getDataSelection.isLoaded && isLoaded && isLoadedContext
}
},
watch: {
'$route.query.tabChild'(actionValue) {
if (this.isEmptyValue(actionValue)) {
this.currentTabChild = '0'
return
}
this.currentTabChild = actionValue
},
// Current TabChildren
currentTabChild(newValue, oldValue) {
if (newValue !== oldValue) {
this.$router.push({
query: {
...this.$route.query,
tabChild: String(newValue)
},
params: {
...this.$route.params
}
})
}
},
// Refrest the records of the TabChildren
isReadyFromGetData(value) {
if (value) {
this.getDataTable()
}
}
},
created() {
this.setCurrentTabChild()
const currentIndex = parseInt(this.currentTabChild, 10)
this.tabUuid = this.tabsList[currentIndex].uuid
},
mounted() {
if (this.isReadyFromGetData) {
this.getDataTable()
}
},
methods: {
setCurrentTabChild() {
let activeTab = this.$route.query.tabChild
if (activeTab === undefined) {
activeTab = String(0)
}
this.currentTabChild = activeTab
}
}
}
</script>
<style>
.el-tabs__content {
overflow: hidden;
position: relative;
padding-top: 0px !important;
padding-right: 15px !important;
padding-bottom: 0px !important;
padding-left: 15px !important;
}
</style>