From 7d26ed0e19bf952e7c037b21bfd687759b46e851 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 25 六月 2024 19:21:33 +0800 Subject: [PATCH] 菜单更新 --- src/components/Table/src/hooks/useColumns.ts | 42 +++++++++++++++++++++++++++++++----------- 1 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/components/Table/src/hooks/useColumns.ts b/src/components/Table/src/hooks/useColumns.ts index b71b61b..f3017d3 100644 --- a/src/components/Table/src/hooks/useColumns.ts +++ b/src/components/Table/src/hooks/useColumns.ts @@ -3,19 +3,20 @@ import type { ComputedRef } from 'vue'; import { computed, Ref, ref, reactive, toRaw, unref, watch } from 'vue'; import { renderEditCell } from '../components/editable'; -import { usePermission } from '/@/hooks/web/usePermission'; -import { useI18n } from '/@/hooks/web/useI18n'; -import { isArray, isBoolean, isFunction, isMap, isString } from '/@/utils/is'; +import { usePermission } from '@/hooks/web/usePermission'; +import { useI18n } from '@/hooks/web/useI18n'; +import { isArray, isBoolean, isFunction, isMap, isString } from '@/utils/is'; import { cloneDeep, isEqual } from 'lodash-es'; -import { formatToDate } from '/@/utils/dateUtil'; +import { formatToDate } from '@/utils/dateUtil'; import { ACTION_COLUMN_FLAG, DEFAULT_ALIGN, INDEX_COLUMN_FLAG, PAGE_SIZE } from '../const'; +import { ColumnType } from 'ant-design-vue/es/table'; function handleItem(item: BasicColumn, ellipsis: boolean) { const { key, dataIndex, children } = item; item.align = item.align || DEFAULT_ALIGN; if (ellipsis) { if (!key) { - item.key = dataIndex; + item.key = typeof dataIndex == 'object' ? dataIndex.join('-') : dataIndex; } if (!isBoolean(item.ellipsis)) { Object.assign(item, { @@ -65,7 +66,7 @@ columns.unshift({ flag: INDEX_COLUMN_FLAG, - width: 50, + width: 60, title: t('component.table.index'), align: 'center', customRender: ({ index }) => { @@ -150,9 +151,7 @@ const { slots, customRender, format, edit, editRow, flag } = column; if (!slots || !slots?.title) { - // column.slots = { title: `header-${dataIndex}`, ...(slots || {}) }; column.customTitle = column.title; - Reflect.deleteProperty(column, 'title'); } const isDefaultAction = [INDEX_COLUMN_FLAG, ACTION_COLUMN_FLAG].includes(flag!); if (!customRender && format && !edit && !isDefaultAction) { @@ -264,12 +263,19 @@ if (!isArray(columns)) return; cacheColumns = columns.filter((item) => !item.flag); } + /** + * 鎷栨嫿鍒楀淇敼鍒楃殑瀹藉害 + */ + function setColumnWidth(w: number, col: ColumnType<BasicColumn>) { + col.width = w; + } return { getColumnsRef, getCacheColumns, getColumns, setColumns, + setColumnWidth, getViewColumns, setCacheColumnsByField, setCacheColumns, @@ -291,9 +297,23 @@ } defColumns.push(column); } - return [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter( - (item) => !item.defaultHidden, - ); + // 绛涢�夐�昏緫 + const filterFunc = (item) => !item.defaultHidden; + // 绛涢�夐灞傛樉绀哄垪锛�1绾ц〃澶达級 + const viewColumns = [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(filterFunc); + // 绛涢��>=2绾ц〃澶达紙娣卞害浼樺厛锛� + const list = [...viewColumns]; + while (list.length) { + const current = list[0]; + if (Array.isArray(current.children)) { + current.children = current.children.filter(filterFunc); + list.shift(); + list.unshift(...current.children); + } else { + list.shift(); + } + } + return viewColumns; } // format cell -- Gitblit v1.9.3