From 9d10ba821feca414b9b020322859ca4a47291005 Mon Sep 17 00:00:00 2001 From: ktianc Date: Fri, 8 Sep 2023 17:06:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A8=E6=A0=BC=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E6=96=B0=E5=A2=9E=E5=88=97=E8=AE=BE=E7=BD=AE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +- src/components/Table/src/Table.vue | 46 ++- .../Table/src/components/TableActions.vue | 287 ++++++++++++++---- src/components/Table/src/types/index.ts | 4 +- src/locales/en.ts | 17 +- src/locales/zh-CN.ts | 17 +- src/utils/index.ts | 142 +++++++++ 7 files changed, 446 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index 2c02ac7ca..415956bc5 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,9 @@ "vite-plugin-purge-icons": "^0.9.2", "vite-plugin-style-import": "2.0.0", "vite-plugin-svg-icons": "^2.0.1", - "vue-tsc": "^1.8.8" + "vue-tsc": "^1.8.8", + "vue-draggable-plus": "^0.2.6", + "lodash": "^4.17.21" }, "engines": { "node": ">= 14.18.0" diff --git a/src/components/Table/src/Table.vue b/src/components/Table/src/Table.vue index ed964d26d..26a093418 100644 --- a/src/components/Table/src/Table.vue +++ b/src/components/Table/src/Table.vue @@ -17,6 +17,9 @@ import { getSlot } from '@/utils/tsxHelper' import TableActions from './components/TableActions.vue' // import Sortable from 'sortablejs' // import { Icon } from '@/components/Icon' +import { useAppStore } from '@/store/modules/app' + +const appStore = useAppStore() export default defineComponent({ name: 'Table', @@ -121,7 +124,9 @@ export default defineComponent({ default: () => undefined }, rowKey: propTypes.string.def('id'), - emptyText: propTypes.string.def('No Data'), + emptyText: propTypes.string.def('暂无数据'), + // 表格工具栏缓存唯一标识符 + activeUID: propTypes.string.def(''), defaultExpandAll: propTypes.bool.def(false), expandRowKeys: { type: Array as PropType, @@ -345,7 +350,7 @@ export default defineComponent({ const renderTreeTableColumn = (columnsChildren: TableColumn[]) => { const { align, headerAlign, showOverflowTooltip, preview } = unref(getProps) return columnsChildren.map((v) => { - if (v.hidden) return null + if (v.show === false) return null const props = { ...v } as any if (props.children) delete props.children @@ -417,7 +422,7 @@ export default defineComponent({ } = unref(getProps) return (columnsChildren || columns).map((v) => { - if (v.hidden) return null + if (v.show === false) return null if (v.type === 'index') { return ( ) } else if (v.type === 'selection') { @@ -494,6 +500,7 @@ export default defineComponent({ if (getSlot(slots, 'append')) { tableSlots['append'] = (...args: any[]) => getSlot(slots, 'append', args) } + const toolbar = getSlot(slots, 'toolbar') // const { sortable } = unref(getProps) @@ -511,14 +518,31 @@ export default defineComponent({ return (
- {unref(getProps).showAction ? ( - - ) : null} - +
+
{toolbar}
+
+ {unref(getProps).showAction ? ( + + ) : null} +
+
+ + {{ default: () => renderTableColumn(), ...tableSlots diff --git a/src/components/Table/src/components/TableActions.vue b/src/components/Table/src/components/TableActions.vue index 0b7f2caab..363aab98c 100644 --- a/src/components/Table/src/components/TableActions.vue +++ b/src/components/Table/src/components/TableActions.vue @@ -1,24 +1,34 @@