From 98676e1dc9a6bbe4b7fb72cb0745cf6e1552581c Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 9 May 2025 13:09:24 +0800 Subject: [PATCH 01/22] =?UTF-8?q?feat:=20@vben/plugins/vxe-table=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=AF=BC=E5=87=BA=20vxe-table=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=BB=84=E4=BB=B6=E6=8F=90=E4=BE=9B=E7=BB=99=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=8D=95=E7=8B=AC=E4=BD=BF=E7=94=A8=20vxe-table=20?= =?UTF-8?q?=E7=9A=84=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/package.json | 3 +- apps/web-antd/src/adapter/style.css | 79 +++++++++++++++++++ apps/web-antd/src/adapter/vxe-table.ts | 14 +++- apps/web-antd/src/bootstrap.ts | 2 - .../table-toolbar/table-toolbar.vue | 5 +- .../views/infra/demo/general/demo01/index.vue | 6 +- .../effects/plugins/src/vxe-table/index.ts | 9 ++- .../effects/plugins/src/vxe-table/init.ts | 14 +++- 8 files changed, 118 insertions(+), 14 deletions(-) create mode 100644 apps/web-antd/src/adapter/style.css diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index f48c00d96..fdb068a51 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -53,8 +53,7 @@ "pinia": "catalog:", "vue": "catalog:", "vue-dompurify-html": "catalog:", - "vue-router": "catalog:", - "vxe-table": "catalog:" + "vue-router": "catalog:" }, "devDependencies": { "@types/crypto-js": "catalog:" diff --git a/apps/web-antd/src/adapter/style.css b/apps/web-antd/src/adapter/style.css new file mode 100644 index 000000000..6837b4066 --- /dev/null +++ b/apps/web-antd/src/adapter/style.css @@ -0,0 +1,79 @@ +/* 来自 @vben/plugins/vxe-table style.css */ +:root { + --vxe-ui-font-color: hsl(var(--foreground)); + --vxe-ui-font-primary-color: hsl(var(--primary)); + + /* --vxe-ui-font-lighten-color: #babdc0; + --vxe-ui-font-darken-color: #86898e; */ + --vxe-ui-font-disabled-color: hsl(var(--foreground) / 50%); + + /* base */ + --vxe-ui-base-popup-border-color: hsl(var(--border)); + --vxe-ui-input-disabled-color: hsl(var(--border) / 60%); + + /* --vxe-ui-base-popup-box-shadow: 0px 12px 30px 8px rgb(0 0 0 / 50%); */ + + /* layout */ + --vxe-ui-layout-background-color: hsl(var(--background)); + --vxe-ui-table-resizable-line-color: hsl(var(--heavy)); + + /* --vxe-ui-table-fixed-left-scrolling-box-shadow: 8px 0px 10px -5px hsl(var(--accent)); + --vxe-ui-table-fixed-right-scrolling-box-shadow: -8px 0px 10px -5px hsl(var(--accent)); */ + + /* input */ + --vxe-ui-input-border-color: hsl(var(--border)); + + /* --vxe-ui-input-placeholder-color: #8d9095; */ + + /* --vxe-ui-input-disabled-background-color: #262727; */ + + /* loading */ + --vxe-ui-loading-background-color: hsl(var(--overlay-content)); + + /* table */ + --vxe-ui-table-header-background-color: hsl(var(--accent)); + --vxe-ui-table-border-color: hsl(var(--border)); + --vxe-ui-table-row-hover-background-color: hsl(var(--accent-hover)); + --vxe-ui-table-row-striped-background-color: hsl(var(--accent) / 60%); + --vxe-ui-table-row-hover-striped-background-color: hsl(var(--accent)); + --vxe-ui-table-row-radio-checked-background-color: hsl(var(--accent)); + --vxe-ui-table-row-hover-radio-checked-background-color: hsl( + var(--accent-hover) + ); + --vxe-ui-table-row-checkbox-checked-background-color: hsl(var(--accent)); + --vxe-ui-table-row-hover-checkbox-checked-background-color: hsl( + var(--accent-hover) + ); + --vxe-ui-table-row-current-background-color: hsl(var(--accent)); + --vxe-ui-table-row-hover-current-background-color: hsl(var(--accent-hover)); + --vxe-ui-font-primary-tinge-color: hsl(var(--primary)); + --vxe-ui-font-primary-lighten-color: hsl(var(--primary) / 60%); + --vxe-ui-font-primary-darken-color: hsl(var(--primary)); + + /* height: auto !important; */ + + /* --vxe-ui-table-fixed-scrolling-box-shadow-color: rgb(0 0 0 / 80%); */ +} + +.vxe-tools--operate { + margin-right: 0.25rem; + margin-left: 0.75rem; +} + +.vxe-table-custom--checkbox-option:hover { + background: none !important; +} + +.vxe-toolbar { + padding: 0; +} + +.vxe-buttons--wrapper:not(:empty), +.vxe-tools--operate:not(:empty), +.vxe-tools--wrapper:not(:empty) { + padding: 0.6em 0; +} + +.vxe-tools--operate:not(:has(button)) { + margin-left: 0; +} diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts index 44f867d22..1903e1c09 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -4,7 +4,11 @@ import { h } from 'vue'; import { IconifyIcon } from '@vben/icons'; import { $te } from '@vben/locales'; -import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; +import { + AsyncComponents, + setupVbenVxeTable, + useVbenVxeGrid, +} from '@vben/plugins/vxe-table'; import { isFunction, isString } from '@vben/utils'; import { Button, Image, Popconfirm, Switch } from 'ant-design-vue'; @@ -14,6 +18,8 @@ import { $t } from '#/locales'; import { useVbenForm } from './form'; +import '#/adapter/style.css'; + setupVbenVxeTable({ configVxeTable: (vxeUI) => { vxeUI.setConfig({ @@ -111,6 +117,7 @@ setupVbenVxeTable({ loading: row[loadingKey] ?? false, 'onUpdate:checked': onChange, }; + async function onChange(newVal: any) { row[loadingKey] = true; try { @@ -122,6 +129,7 @@ setupVbenVxeTable({ row[loadingKey] = false; } } + return h(Switch, finallyProps); }, }); @@ -280,6 +288,10 @@ setupVbenVxeTable({ }); export { useVbenVxeGrid }; + +const [VxeTable, VxeColumn, VxeToolbar] = AsyncComponents; +export { VxeColumn, VxeTable, VxeToolbar }; + // add by 芋艿:from https://github.com/vbenjs/vue-vben-admin/blob/main/playground/src/adapter/vxe-table.ts#L264-L270 export type OnActionClickParams> = { code: string; diff --git a/apps/web-antd/src/bootstrap.ts b/apps/web-antd/src/bootstrap.ts index 43fd96288..68d19ee1a 100644 --- a/apps/web-antd/src/bootstrap.ts +++ b/apps/web-antd/src/bootstrap.ts @@ -17,8 +17,6 @@ import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; import { router } from './router'; -import 'vxe-table/styles/cssvar.scss'; // TODO @puhui999:这个必须导入哇?我看 use-vxe-grid.vue 已经导入了 - async function bootstrap(namespace: string) { // 初始化组件适配器 await initComponentAdapter(); diff --git a/apps/web-antd/src/components/table-toolbar/table-toolbar.vue b/apps/web-antd/src/components/table-toolbar/table-toolbar.vue index d385bed25..7336d7f09 100644 --- a/apps/web-antd/src/components/table-toolbar/table-toolbar.vue +++ b/apps/web-antd/src/components/table-toolbar/table-toolbar.vue @@ -1,6 +1,6 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo02/index.vue b/apps/web-antd/src/views/infra/demo/general/demo02/index.vue index 787ead289..cbd25210d 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo02/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo02/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue index eac71e3e4..237f5d41d 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue index d73eb7803..346032d3e 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue @@ -1,6 +1,4 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue index 30c4e4256..921d896d4 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue @@ -1,6 +1,4 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue index c04af694e..71f005b86 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue @@ -1,9 +1,7 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue b/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue index 26c1e8908..3736a841c 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/inner/modules/demo03-course-form.vue @@ -1,6 +1,5 @@ diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue b/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue index 26c1e8908..3736a841c 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/normal/modules/demo03-course-form.vue @@ -1,6 +1,5 @@