From 63ca414f2ba71aafa864130f920c84e153943372 Mon Sep 17 00:00:00 2001 From: Seven Date: Wed, 17 Dec 2025 23:24:18 +0700 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A1=A8=E6=A0=BC=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=96=B0=E5=A2=9E=E8=BF=87=E6=BB=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BC=98=E5=8C=96=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.test | 2 +- .../advanced/table-header-operation.vue | 46 ++++---- src/components/table/index.ts | 18 ++- src/components/table/table-base.vue | 84 +++++++++---- src/components/table/table-filter.vue | 47 ++++++++ src/typings/components.d.ts | 2 + src/views/rwa/product/index.vue | 111 ++++++++++++------ 7 files changed, 225 insertions(+), 85 deletions(-) create mode 100644 src/components/table/table-filter.vue diff --git a/.env.test b/.env.test index e578329..98f1da8 100644 --- a/.env.test +++ b/.env.test @@ -1,5 +1,5 @@ # backend service base url, test environment -VITE_SERVICE_BASE_URL=http://192.168.1.36:9527 +VITE_SERVICE_BASE_URL=http://192.168.1.36:9528 # other backend service base url, test environment VITE_OTHER_SERVICE_BASE_URL= `{}` diff --git a/src/components/advanced/table-header-operation.vue b/src/components/advanced/table-header-operation.vue index 7ca287f..e8bfd10 100644 --- a/src/components/advanced/table-header-operation.vue +++ b/src/components/advanced/table-header-operation.vue @@ -39,34 +39,32 @@ function refresh() { diff --git a/src/components/table/index.ts b/src/components/table/index.ts index 6b5c973..0181b1b 100644 --- a/src/components/table/index.ts +++ b/src/components/table/index.ts @@ -1,3 +1,4 @@ +import type { Component, VNode } from 'vue'; import { h } from 'vue'; import type { ButtonProps, DataTableColumn, DataTableColumns } from 'naive-ui'; import { NButton, NSpace } from 'naive-ui'; @@ -24,12 +25,27 @@ export interface Pagination { [key: string]: any; } -export type TableFetchData = (page: Pagination) => ReturnType; +export type TableFetchData = (query: { + pagination: Pagination; + filter?: Record; +}) => ReturnType; + +export type TableFilterColumn = { + key: string; + title: string; + component?: Component | VNode; + componentProps?: Record; +}; + +export type TableFilterColumns = Array; export function transformColumns(columns: TableBaseColumns): DataTableColumns { return columns.map(col => { return { ...col, + ellipsis: { + tooltip: true + }, render: col.operations ? (row: T) => h(NSpace, null, { diff --git a/src/components/table/table-base.vue b/src/components/table/table-base.vue index 2f4eab6..a01bfe5 100644 --- a/src/components/table/table-base.vue +++ b/src/components/table/table-base.vue @@ -1,12 +1,25 @@ + + + + diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index f7f7fe8..170cc05 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -91,6 +91,7 @@ declare module 'vue' { SystemLogo: typeof import('./../components/common/system-logo.vue')['default'] TableBase: typeof import('./../components/table/table-base.vue')['default'] TableColumnSetting: typeof import('./../components/advanced/table-column-setting.vue')['default'] + TableFilter: typeof import('./../components/table/table-filter.vue')['default'] TableHeaderOperation: typeof import('./../components/advanced/table-header-operation.vue')['default'] ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default'] WaveBg: typeof import('./../components/custom/wave-bg.vue')['default'] @@ -178,6 +179,7 @@ declare global { const SystemLogo: typeof import('./../components/common/system-logo.vue')['default'] const TableBase: typeof import('./../components/table/table-base.vue')['default'] const TableColumnSetting: typeof import('./../components/advanced/table-column-setting.vue')['default'] + const TableFilter: typeof import('./../components/table/table-filter.vue')['default'] const TableHeaderOperation: typeof import('./../components/advanced/table-header-operation.vue')['default'] const ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default'] const WaveBg: typeof import('./../components/custom/wave-bg.vue')['default'] diff --git a/src/views/rwa/product/index.vue b/src/views/rwa/product/index.vue index 71b6a26..72dbb28 100644 --- a/src/views/rwa/product/index.vue +++ b/src/views/rwa/product/index.vue @@ -1,18 +1,20 @@