找回密码
 立即注册
首页 资源区 代码 vue 可视化表单设计器 vxe-form-design 创建自定义控件 ...

vue 可视化表单设计器 vxe-form-design 创建自定义控件的详细用法(教程一)

钤凑讪 2026-1-16 16:15:02
vue 可视化表单设计器 vxe-form-design 创建自定义控件的详细用法,vxe-design 是 vxe 下的一个开源的可视化设计器,在使用表单设计器时,通常需要将业务的的每一个控件进行封装,以适应业务的需求,接下来介绍一下如果来定义一个自定义的控件。
https://design.vxeui.com
定义控件分组

支持任意分组和自定义左侧控件分组名称
1.png
  1. <template>
  2.   
  3.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  4.   
  5. </template>
复制代码
定义控件

创建了一个自定义的输入框控件,说明,一个控件包含几个步骤:定义控件数据,定义控件表单项模板,定义控件右侧参数配置模板
具体自行命名,该控件示例目录:
2.png

步骤1,定义控件数据

目录:src/form-design/inputWidget/demoFormDesignInputWidget.js
这里是定义该控件的字段参数
  1. export const getFormDesignWidgetInputConfig = () => {
  2.   return {
  3.     // 控件名称
  4.     title: '单行输入',
  5.     // 控件图标
  6.     icon: 'vxe-icon-input',
  7.     // 控件参数,用于在右侧配置
  8.     options: {
  9.       placeholder: '请输入',
  10.       maxLength: '',
  11.       showWordCount: false,
  12.       clearable: true,
  13.       align: ''
  14.     }
  15.   }
  16. }
复制代码
步骤2,定义控件表单项模板

目录:src/form-design/inputWidget/DemoFormDesignInputWidgetView.vue
这里是定义该控件的渲染时的表单模板
  1. <template>
  2.   
  3.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  4.   
  5. </template>   
复制代码
步骤3,定义控件右侧参数配置模板

目录:src/form-design/inputWidget/DemoFormDesignInputWidgetProps.vue
这里是定义控件拖拽到视图后,右侧显示的字段配置模板
  1. <template>
  2.   
  3.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  4.   
  5. </template><template>
  6.   
  7.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  8.   
  9. </template><template>
  10.   
  11.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  12.   
  13. </template><template>
  14.   
  15.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  16.   
  17. </template><template>
  18.   
  19.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  20.   
  21. </template><template>
  22.   
  23.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  24.   
  25. </template><template>
  26.   
  27.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  28.   
  29. </template><template>
  30.   
  31.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  32.   
  33. </template><template>
  34.   
  35.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  36.   
  37. </template><template>
  38.   
  39.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  40.   
  41. </template><template>
  42.   
  43.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  44.   
  45. </template><template>
  46.   
  47.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  48.   
  49. </template><template>
  50.   
  51.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  52.   
  53. </template><template>
  54.   
  55.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  56.   
  57. </template><template>
  58.   
  59.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  60.   
  61. </template><template>
  62.   
  63.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  64.   
  65. </template><template>
  66.   
  67.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  68.   
  69. </template><template>
  70.   
  71.     <vxe-form-design :widgets="formDesignWidgets" :height="800"></vxe-form-design>
  72.   
  73. </template>  
复制代码
注册控件

目录:src/form-design/inputWidget/index.jsx
  1. import { VxeUI } from 'vxe-pc-ui'
  2. import { getFormDesignWidgetInputConfig } from './demoFormDesignInputWidget'
  3. import DemoFormDesignInputWidgetView from './DemoFormDesignInputWidgetView.vue'
  4. import DemoFormDesignInputWidgetProps from './DemoFormDesignInputWidgetProps.vue'
  5. // 创建表单设计器控件 - 单行输入
  6. VxeUI.renderer.add('MyFormDesignInputWidget', {
  7.   // 定义左侧控件
  8.   createFormDesignWidgetConfig: getFormDesignWidgetInputConfig,
  9.   // 渲染控件的表单视图
  10.   renderFormDesignWidgetView (renderOpts, renderParams) {
  11.     return <DemoFormDesignInputWidgetView renderOpts={renderOpts} renderParams={renderParams}/>
  12.   },
  13.   // 渲染控件右侧的属性配置视图
  14.   renderFormDesignWidgetFormView (renderOpts, renderParams) {
  15.     return <DemoFormDesignInputWidgetProps renderOpts={renderOpts} renderParams={renderParams}/>
  16.   }
  17. })
复制代码
在 main.js 引入
  1. // ...
  2. import './form-design/inputWidget'
  3. // ...
复制代码
使用效果

以上就创建了一个控件,对于业务开发就可以继续创建控件了,最终就可以实现一个低代码或零代码平台,可视化拖拽就可以生成业务系统
3.png

[code][/code]https://gitee.com/x-extends/vxe-design

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2026-1-19 07:58:04

举报

2026-1-19 11:39:43

举报

5 天前

举报

您需要登录后才可以回帖 登录 | 立即注册