diff --git a/yudao-ui-admin-vue3/src/components/XButton/index.ts b/yudao-ui-admin-vue3/src/components/XButton/index.ts
new file mode 100644
index 0000000000..7b13b6072e
--- /dev/null
+++ b/yudao-ui-admin-vue3/src/components/XButton/index.ts
@@ -0,0 +1,3 @@
+import XButton from './src/XButton.vue'
+
+export { XButton }
diff --git a/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue b/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue
new file mode 100644
index 0000000000..6190aac261
--- /dev/null
+++ b/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue
@@ -0,0 +1,41 @@
+
+
+
+  
+    
+    {{ iTitle ? t(iTitle) : title }}
+    
+  
+
diff --git a/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue b/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
index 3058c51216..4ca44f9c93 100644
--- a/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
+++ b/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
@@ -18,34 +18,14 @@ const props = defineProps({
 })
 
 const getBindValue = computed(() => {
-  const delArr: string[] = ['title']
   const attrs = useAttrs()
   const obj = { ...attrs, ...props }
-  for (const key in obj) {
-    if (delArr.indexOf(key) !== -1) {
-      delete obj[key]
-    }
-  }
   return obj
 })
 
 
 
-  
+  
     
       
     
diff --git a/yudao-ui-admin-vue3/src/components/index.ts b/yudao-ui-admin-vue3/src/components/index.ts
index b3dfd94110..7775982d5d 100644
--- a/yudao-ui-admin-vue3/src/components/index.ts
+++ b/yudao-ui-admin-vue3/src/components/index.ts
@@ -5,6 +5,7 @@ import { Table } from '@/components/Table'
 import { Search } from '@/components/Search'
 import { Dialog } from '@/components/Dialog'
 import { XModal } from '@/components/XModal'
+import { XButton } from '@/components/XButton'
 import { DictTag } from '@/components/DictTag'
 import { ContentWrap } from '@/components/ContentWrap'
 import { Descriptions } from '@/components/Descriptions'
@@ -16,6 +17,7 @@ export const setupGlobCom = (app: App): void => {
   app.component('Search', Search)
   app.component('Dialog', Dialog)
   app.component('XModal', XModal)
+  app.component('XButton', XButton)
   app.component('DictTag', DictTag)
   app.component('ContentWrap', ContentWrap)
   app.component('Descriptions', Descriptions)
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
index 94b8750edb..b70140743d 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
@@ -189,6 +189,7 @@ const filterFormSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => {
         // 默认为 input
         itemRender: itemRender,
         ...schemaItem.form,
+        span: schemaItem.form?.span || 12,
         field: schemaItem.field,
         title: schemaItem.form?.title || schemaItem.title
       }
diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue
index e518b1c658..572871ae6d 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -2,38 +2,38 @@
   
     
       
-        
-           {{ t('action.add') }}
-        
+        
       
       
         
       
       
-        
-           {{ t('action.edit') }}
-        
-        
+        
-           {{ t('action.detail') }}
-        
-        
+        
-           {{ t('action.del') }}
-        
+        />
       
     
   
@@ -61,13 +61,18 @@
       
     
     
-      
-      
+