mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-12 22:29:59 +08:00
110 lines
2.7 KiB
JavaScript
110 lines
2.7 KiB
JavaScript
export default {
|
|
name: 'TableMixin',
|
|
props: {
|
|
parentUuid: {
|
|
type: String,
|
|
default: undefined
|
|
},
|
|
containerUuid: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
panelType: {
|
|
type: String,
|
|
default: 'window'
|
|
},
|
|
// is used in root view with primary records
|
|
isParent: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
},
|
|
computed: {
|
|
isMobile() {
|
|
return this.$store.state.app.device === 'mobile'
|
|
},
|
|
isCreateNewRoute() {
|
|
return this.$route.query.action === 'create-new'
|
|
},
|
|
isPanelWindow() {
|
|
return Boolean(this.panelType === 'window')
|
|
},
|
|
isReadOnlyParent() {
|
|
if (this.isPanelWindow) {
|
|
if (!this.$store.getters.getContainerIsActive(this.parentUuid)) {
|
|
return true
|
|
}
|
|
if (this.$store.getters.getContainerProcessing(this.parentUuid)) {
|
|
return true
|
|
}
|
|
if (this.$store.getters.getContainerProcessed(this.parentUuid)) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
isDisabledAddNew() {
|
|
if (this.isParent) {
|
|
return true
|
|
}
|
|
if (this.isCreateNewRoute) {
|
|
return true
|
|
}
|
|
const panelMetadata = this.panelMetadata
|
|
if (panelMetadata && !panelMetadata.isInsertRecord) {
|
|
return true
|
|
}
|
|
if (this.isReadOnlyParent) {
|
|
return true
|
|
}
|
|
if (this.getterNewRecords) {
|
|
return true
|
|
}
|
|
return false
|
|
},
|
|
// records, selection, record count
|
|
getterDataRecordsAndSelection() {
|
|
return this.$store.getters.getDataRecordAndSelection(this.containerUuid)
|
|
},
|
|
recordsData() {
|
|
return this.getterDataRecordsAndSelection.record
|
|
},
|
|
getDataSelection() {
|
|
return this.getterDataRecordsAndSelection.selection
|
|
},
|
|
newRecordsQuantity() {
|
|
if (this.isPanelWindow && !this.isParent) {
|
|
const newRecordTable = this.getterDataRecordsAndSelection.record.filter(recordItem => {
|
|
return recordItem.isNew
|
|
})
|
|
return newRecordTable.length
|
|
}
|
|
return 0
|
|
}
|
|
},
|
|
methods: {
|
|
closeMenu() {
|
|
// TODO: Validate to dispatch one action
|
|
this.$store.dispatch('showMenuTable', {
|
|
isShowedTable: false
|
|
})
|
|
this.$store.dispatch('showMenuTabChildren', {
|
|
isShowedTabChildren: false
|
|
})
|
|
},
|
|
deleteSelection() {
|
|
this.$store.dispatch('deleteSelectionDataList', {
|
|
parentUuid: this.parentUuid,
|
|
containerUuid: this.containerUuid
|
|
})
|
|
.then(() => {
|
|
this.$store.dispatch('setRecordSelection', {
|
|
parentUuid: this.parentUuid,
|
|
containerUuid: this.containerUuid,
|
|
panelType: this.panelType
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|