diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json
index a703101ff..d64639a18 100644
--- a/apps/web-antd/package.json
+++ b/apps/web-antd/package.json
@@ -45,6 +45,7 @@
"@vben/utils": "workspace:*",
"@vueuse/core": "catalog:",
"ant-design-vue": "catalog:",
+ "vxe-table": "catalog:",
"cropperjs": "catalog:",
"crypto-js": "catalog:",
"dayjs": "catalog:",
diff --git a/apps/web-antd/src/bootstrap.ts b/apps/web-antd/src/bootstrap.ts
index 761e58ed2..084051d4e 100644
--- a/apps/web-antd/src/bootstrap.ts
+++ b/apps/web-antd/src/bootstrap.ts
@@ -7,6 +7,7 @@ import { preferences } from '@vben/preferences';
import { initStores } from '@vben/stores';
import '@vben/styles';
import '@vben/styles/antd';
+import 'vxe-table/styles/cssvar.scss';
import { useTitle } from '@vueuse/core';
diff --git a/apps/web-antd/src/components/content-wrap/content-wrap.vue b/apps/web-antd/src/components/content-wrap/content-wrap.vue
new file mode 100644
index 000000000..026d7d23f
--- /dev/null
+++ b/apps/web-antd/src/components/content-wrap/content-wrap.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/components/content-wrap/index.ts b/apps/web-antd/src/components/content-wrap/index.ts
new file mode 100644
index 000000000..d4f95fddb
--- /dev/null
+++ b/apps/web-antd/src/components/content-wrap/index.ts
@@ -0,0 +1 @@
+export { default as ContentWrap } from './content-wrap.vue';
diff --git a/apps/web-antd/src/utils/dict.ts b/apps/web-antd/src/utils/dict.ts
index e647665b9..4b6cf0db5 100644
--- a/apps/web-antd/src/utils/dict.ts
+++ b/apps/web-antd/src/utils/dict.ts
@@ -64,7 +64,7 @@ function getDictObj(dictType: string, value: any) {
function getDictOptions(
dictType: string,
valueType: 'boolean' | 'number' | 'string' = 'string',
-) {
+): any[] {
const dictStore = useDictStore();
const dictOpts = dictStore.getDictOptions(dictType);
const dictOptions: DefaultOptionType = [];
diff --git a/apps/web-antd/src/views/infra/demo/general/demo01/index.vue b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue
new file mode 100644
index 000000000..01a8b5fab
--- /dev/null
+++ b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatDateTime(row.birthday) }}
+
+
+
+
+
+
+ {{ formatDateTime(row.createTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/infra/demo/general/demo01/modules/form.vue b/apps/web-antd/src/views/infra/demo/general/demo01/modules/form.vue
new file mode 100644
index 000000000..8f95c8044
--- /dev/null
+++ b/apps/web-antd/src/views/infra/demo/general/demo01/modules/form.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/@core/base/icons/src/lucide.ts b/packages/@core/base/icons/src/lucide.ts
index 2a5de70bd..21ac04e2e 100644
--- a/packages/@core/base/icons/src/lucide.ts
+++ b/packages/@core/base/icons/src/lucide.ts
@@ -69,4 +69,5 @@ export {
Upload,
UserRoundPen,
X,
+ RefreshCw,
} from 'lucide-vue-next';