From 436b52186129e60ba72c20e43d2845bc3f899901 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 22 八月 2024 11:16:56 +0800 Subject: [PATCH] 取消暂停svg更新 --- src/components/Table/src/components/TableFooter.vue | 136 ++++++++++++++++++++++----------------------- 1 files changed, 67 insertions(+), 69 deletions(-) diff --git a/src/components/Table/src/components/TableFooter.vue b/src/components/Table/src/components/TableFooter.vue index 68e556b..f1500ac 100644 --- a/src/components/Table/src/components/TableFooter.vue +++ b/src/components/Table/src/components/TableFooter.vue @@ -1,94 +1,92 @@ <template> <Table - v-if="summaryFunc || summaryData" + v-if="!!props.summaryFunc || props.summaryData" :showHeader="false" :bordered="false" :pagination="false" :dataSource="getDataSource" - :rowKey="(r) => r[rowKey]" + :rowKey="props.rowKey" :columns="getColumns" tableLayout="fixed" - :scroll="scroll" + :scroll="props.scroll" /> </template> -<script lang="ts"> - import type { PropType } from 'vue'; - import { defineComponent, unref, computed, toRaw } from 'vue'; +<script lang="ts" setup> + import { unref, computed, toRaw } from 'vue'; import { Table } from 'ant-design-vue'; import { cloneDeep } from 'lodash-es'; - import { isFunction } from '/@/utils/is'; - import type { BasicColumn } from '../types/table'; + import { isFunction } from '@/utils/is'; + import type { BasicColumn, BasicTableProps } from '../types/table'; import { INDEX_COLUMN_FLAG } from '../const'; - import { propTypes } from '/@/utils/propTypes'; import { useTableContext } from '../hooks/useTableContext'; + import { ColumnType } from 'ant-design-vue/es/table/interface'; + import { parseRowKey } from '../helper'; + + defineOptions({ name: 'BasicTableFooter' }); + + const props = withDefaults( + defineProps<{ + summaryFunc?: Fn | null; + summaryData?: Recordable[] | null; + scroll?: BasicTableProps['scroll']; + rowKey?: BasicTableProps['rowKey']; + }>(), + { + summaryFunc: null, + summaryData: null, + rowKey: '', + }, + ); const SUMMARY_ROW_KEY = '_row'; const SUMMARY_INDEX_KEY = '_index'; - export default defineComponent({ - name: 'BasicTableFooter', - components: { Table }, - props: { - summaryFunc: { - type: Function as PropType<Fn>, - }, - summaryData: { - type: Array as PropType<Recordable[]>, - }, - scroll: { - type: Object as PropType<Recordable>, - }, - rowKey: propTypes.string.def('key'), - }, - setup(props) { - const table = useTableContext(); + const table = useTableContext(); - const getDataSource = computed((): Recordable[] => { - const { summaryFunc, summaryData } = props; - if (summaryData?.length) { - summaryData.forEach((item, i) => (item[props.rowKey] = `${i}`)); - return summaryData; - } - if (!isFunction(summaryFunc)) { - return []; - } - let dataSource = toRaw(unref(table.getDataSource())); - dataSource = summaryFunc(dataSource); - dataSource.forEach((item, i) => { - item[props.rowKey] = `${i}`; - }); - return dataSource; + const getDataSource = computed((): Recordable[] => { + if (props.summaryData?.length) { + props.summaryData.forEach((item, i) => { + item[parseRowKey(props.rowKey, item)] = `${i}`; }); + return props.summaryData; + } + if (!isFunction(props.summaryFunc)) { + return []; + } + let dataSource = toRaw(unref(table.getDataSource())); + dataSource = props.summaryFunc(dataSource); + dataSource.forEach((item, i) => { + item[parseRowKey(props.rowKey, item)] = `${i}`; + }); + return dataSource; + }); - const getColumns = computed(() => { - const dataSource = unref(getDataSource); - const columns: BasicColumn[] = cloneDeep(table.getColumns()); - const index = columns.findIndex((item) => item.flag === INDEX_COLUMN_FLAG); - const hasRowSummary = dataSource.some((item) => Reflect.has(item, SUMMARY_ROW_KEY)); - const hasIndexSummary = dataSource.some((item) => Reflect.has(item, SUMMARY_INDEX_KEY)); + const getColumns = computed(() => { + const dataSource = unref(getDataSource); + const columns: BasicColumn[] = cloneDeep(table.getColumns()); + const index = columns.findIndex((item) => item.flag === INDEX_COLUMN_FLAG); + const hasRowSummary = dataSource.some((item) => Reflect.has(item, SUMMARY_ROW_KEY)); + const hasIndexSummary = dataSource.some((item) => Reflect.has(item, SUMMARY_INDEX_KEY)); - if (index !== -1) { - if (hasIndexSummary) { - columns[index].customRender = ({ record }) => record[SUMMARY_INDEX_KEY]; - columns[index].ellipsis = false; - } else { - Reflect.deleteProperty(columns[index], 'customRender'); - } - } + if (index !== -1) { + if (hasIndexSummary) { + columns[index].customRender = ({ record }) => record[SUMMARY_INDEX_KEY]; + columns[index].ellipsis = false; + } else { + Reflect.deleteProperty(columns[index], 'customRender'); + } + } - if (table.getRowSelection() && hasRowSummary) { - const isFixed = columns.some((col) => col.fixed === 'left'); - columns.unshift({ - width: 60, - title: 'selection', - key: 'selectionKey', - align: 'center', - ...(isFixed ? { fixed: 'left' } : {}), - customRender: ({ record }) => record[SUMMARY_ROW_KEY], - }); - } - return columns; + if (table.getRowSelection() && hasRowSummary) { + const isFixed = columns.some((col) => col.fixed === 'left'); + columns.unshift({ + width: 60, + title: 'selection', + key: 'selectionKey', + align: 'center', + ...(isFixed ? { fixed: 'left' } : {}), + customRender: ({ record }) => record[SUMMARY_ROW_KEY], }); - return { getColumns, getDataSource }; - }, + } + return columns as unknown as ColumnType[]; }); </script> -- Gitblit v1.9.3