From 0906c54770971020cf2d243d06d57a2f6fbbc18c Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 18 十月 2024 13:05:48 +0800 Subject: [PATCH] 1. 添加数据产品目录 --- src/components/table/FYTable.vue | 99 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 91 insertions(+), 8 deletions(-) diff --git a/src/components/table/FYTable.vue b/src/components/table/FYTable.vue index d87d4c8..3e5da08 100644 --- a/src/components/table/FYTable.vue +++ b/src/components/table/FYTable.vue @@ -4,20 +4,48 @@ <template #options> <slot name="options"></slot> </template> + <template #buttons> + <slot name="buttons"></slot> + </template> </FYSearchBar> </el-row> - + <el-row ref="expandRef" justify="space-between"> + <el-col span="22"> + <slot name="options-expand"></slot> + </el-col> + <el-col span="2"> + <el-space :wrap="false"> + <el-text size="small">瀛椾綋</el-text> + <el-radio-group v-model="fontSize" size="small"> + <el-radio-button value="small">灏�</el-radio-button> + <el-radio-button value="default">涓�</el-radio-button> + <el-radio-button value="large">澶�</el-radio-button> + </el-radio-group> + </el-space> + </el-col> + </el-row> + <div ref="expand2Ref"> + <slot name="options-expand2"></slot> + </div> <el-table + ref="tableRef" :data="tableData" v-loading="loading" table-layout="fixed" :row-class-name="tableRowClassName" :height="tableHeight" + :size="fontSize" + @cell-click="cellClick" + :cell-class-name="cellClassName" + @paste="handlePaste" + @sort-change="handleSortChange" + border > - <slot name="table-column"></slot> + <slot name="table-column" :size="fontSize"></slot> </el-table> <el-pagination + v-if="pagination" ref="paginationRef" class="el-pagination" v-model:current-page="currentPage" @@ -41,6 +69,16 @@ export default { props: { rowClassName: undefined, + cellClassName: Function || String, + pagination: { + type: Boolean, + default: true + }, + // '' | 'small' | 'default' | 'large' + size: { + type: String, + default: 'default' + } }, data() { return { @@ -50,9 +88,10 @@ currentPage: 1, pageSize: 20, loading: false, + fontSize: 'default' }; }, - emits: ['search'], + emits: ['search', 'cellClick', 'tablePaste', 'sortChange'], watch: { currentPage(nValue, oValue) { if (nValue != oValue) { @@ -64,6 +103,30 @@ this.onSearch(); } }, + size: { + handler(nValue, oValue) { + if (nValue != oValue) { + this.fontSize = nValue; + } + }, + immediate: true + } + }, + computed: { + cTableHeight() { + if (this.$refs.searchRef) { + const h1 = this.$refs.searchRef.$el.offsetHeight; + const h2 = this.$refs.paginationRef ? this.$refs.paginationRef.$el.offsetHeight : 0; + const h3 = this.$refs.expandRef.$el.offsetHeight; + const h4 = this.$refs.expand2Ref.offsetHeight; + + const h = h1 + h2 + h3 + h4; + // return `calc(100vh - ${h1}px - ${h2}px - var(--el-main-padding) * 2 - var(--el-header-height))`; + return `calc(100vh - ${h}px - 60px - var(--el-main-padding) * 2)`; + } else { + return '500'; + } + } }, methods: { /** @@ -77,20 +140,25 @@ 'search', { currentPage: this.currentPage, - pageSize: this.pageSize, + pageSize: this.pageSize }, (res) => { this.tableData = res.data; - this.total = res.total; + this.total = res.total ? res.total : 0; this.loading = false; + this.doLayout(); } ); }, calcTableHeight() { const h1 = this.$refs.searchRef.$el.offsetHeight; - const h2 = this.$refs.paginationRef.$el.offsetHeight; + const h2 = this.$refs.paginationRef ? this.$refs.paginationRef.$el.offsetHeight : 0; + const h3 = this.$refs.expandRef.$el.offsetHeight; + const h4 = this.$refs.expand2Ref.offsetHeight; + + const h = h1 + h2 + h3 + h4; // return `calc(100vh - ${h1}px - ${h2}px - var(--el-main-padding) * 2 - var(--el-header-height))`; - return `calc(100vh - ${h1}px - ${h2}px - 60px - var(--el-main-padding) * 2)`; + return `calc(100vh - ${h}px - 60px - var(--el-main-padding) * 2)`; }, tableRowClassName({ row }) { if (this.rowClassName) { @@ -103,11 +171,26 @@ return row.extension1 != '0' ? 'online-row' : 'offline-row'; } }, + cellClick(row, column, cell, event) { + this.$emit('cellClick', row, column, cell, event); + }, + handlePaste(event) { + this.$emit('tablePaste', event); + }, + doLayout() { + this.$refs.tableRef.doLayout(); + }, + handleSortChange({ column, prop, order }) { + this.$emit('sortChange', { column, prop, order }); + }, + clearSort(){ + this.$refs.tableRef.clearSort(); + } }, mounted() { this.tableHeight = this.calcTableHeight(); this.onSearch(); - }, + } }; </script> -- Gitblit v1.9.3