asset-form-making
| Install | |
|---|---|
npm install asset-form-making@2023.9.28 |
|
| Latest Version: | 2023.9.28 |
| Vue: | 2 |
| Last Updated: | Dec 8, 2023 |
| Links: | npm |
FormMaking 可视化表单设计器
介绍
本项目使用 vue-cli 3 搭建,基于 vue 和 element-ui 实现,使用了最新的前端技术栈,内置了 i18 国际化解决方案。
二次开发
二次开发需要 vue 的基础,如果还不了解 vue 请查看 Vue 官方文档
目录解析
├── public # 静态资源
│ │── lib # 第三方插件库
│ │── index.html # html模板
├── src # 源代码
│ │── assets # 图片等静态资源
│ │── components # 组件库
│ │ │── AntdvGenerator # Ant Design Vue 生成器目录
│ │ │── CodeEditor # 代码编辑器组件
│ │ │── Editor # 富文本编辑器组件
│ │ │── FormTable # 子表单生成器组件
│ │ │── Upload # 上传组件
│ │ │── CodeDialog.vue # 代码编辑器弹框组件
│ │ │── componentsConfig.js # 设计器字段配置
│ │ │── Container.vue # 设计器入口组件
│ │ │── CusDialog.vue # 封装的公用的弹框组件
│ │ │── FormConfig.vue # 设计器表单属性配置
│ │ │── generateCode.js # 生成代码js文件
│ │ │── GenerateColItem.vue # 生成栅格布局
│ │ │── GenerateElementItem.vue # 生成表单子项对应的组件
│ │ │── GenerateForm.vue # 生成器入口组件
│ │ │── GenerateFormItem.vue # 生成表单子项
│ │ │── GenerateReport.vue # 生成表格组件
│ │ │── GenerateTabItem.vue # 生成标签组件
│ │ │── WidgetColItem.vue # 栅格设计组件
│ │ │── WidgetConfig.vue # 设计器字段属性配置
│ │ │── WidgetElementItem.vue # 设计器表单子项内部详细组件
│ │ │── WidgetForm.vue # 设计器表单设计区域
│ │ │── WidgetFormItem.vue # 设计器表单子项设计
│ │ │── WidgetReport.vue # 设计器表格组件
│ │ │── WidgetTabItem.vue # 设计器标签组件
│ │ │── WidgetTable.vue # 设计器子表单组件
│ │ │── WidgetTableItem.vue # 设计器子表单内部组件
│ │── demo # 示例demo
│ │ │── CustomComponent.vue # 演示自定义组件
│ │ │── Home.vue # 演示设计器
│ │ │── Test.vue # 测试功能
│ │── directive # 全局指令
│ │── iconfont # iconfont 字体库
│ │── lang # 国际化配置
│ │── router # 路由
│ │── styles # 全局样式
│ │── util # 全局公用方法
│ │── App.vue # 入口页面
│ │── editorBundle.js # 打包 VueEditor
│ │── index.js # 设计器打包入口
│ │── main.js # 入口文件 加载组件 初始化等
├── package.json # package.json
├── vue.config.js # vue-cli 配置
扩展表单属性
1. 添加配置参数
src/components/Container.vue
export default {
data() {
return {
widgetForm: {
list: [],
config: {
// 在此处扩展表单的配置信息,例如:
// width: '100%'
},
},
};
},
};
2. 设计器中配置
src/components/FormConfig.vue
<el-form>
<el-form-item label="宽度">
<el-input v-model="data.width" clearable></el-input>
</el-form-item>
</el-form>
添加新增属性的配置,上面添加的
width属性,在这里通过props.data传入到这里。
3. 在生成器中添加该属性渲染
src/components/GenerateForm.vue
<div :style="{width: data.config.width}" class="fm-form">...</div>
表单配置的属性通过
props.data.config进行配置即可。
扩展表单组件
1. 添加组件配置
src/components/componentsConfig.js
{
type: 'input', // 组件类型,保持唯一
name: '单行文本', //组件展示名称
icon: 'icon-input', //组件展示icon, 如果需要自定义,请参考 如何自定义图标
options: { // 组件配置信息,根据自定义组件自己添加配置
defaultValue: '', // 该值表示组件的默认值
// 根据自己的组件自定义添加配置参数
}
}
2. 显示左侧字段
src/components/Container.vue 下配置左侧展示组件的默认值
export default {
props: {
basicFields: {
type: Array,
default: () => ["input"],
},
},
};
3. 配置组件
src/components/WidgetElementItem.vue 下引入组件
<template v-if="element.type == 'input'">
<custom-compontnets v-model="element.options.defaultValue"></custom-compontnets>
</template>
<script>
import CustomComponent from "...";
export default {
components: {
CustomComponent,
},
};
</script>
引入组件后,在模板中进行渲染,组件配置参数已通过
props.element传入,可直接进行配置。
4. 扩展组件字段属性
src/components/WidgetConfig.vue
参考前面表单属性配置
5. 生成器中添加该组件的渲染
src/components/GenerateElementItem.vue
<template v-if="widget.type == 'input'">
<div :style="{width: isTable ? '100%' : widget.options.width}">
<custom-compontnets v-model="dataModel"></custom-compontnets>
</div>
</template>
<script>
import CustomComponent from "...";
export default {
components: {
CustomComponent,
},
};
</script>
自定义设计器图标
项目使用的是阿里字体图标库 iconfont , 如果需要自定义图标配置,请将图标加入到自己的项目中,然 后选择 Font class,将代码下载到本地替换 src/iconfont 文件夹下的文件
子表单说明
新的组件如果不想支持拖拽到子表单,需要修改 Container.vue 中的组件样式,包含 no-put
打包 lib 步骤
1.npm run build-bundle
2.npm publish
npm 其他命令
删除指定版本:npm unpublish asset-form-making@1.0.79
删除整个包:npm unpublish 包名 --force
Related Packages
A designer and generator of form base on Vue.js, make form development simple an...
A designer and generator of form base on Vue.js, make form development simple an...
A designer and generator of form base on Vue.js, make form development simple an...
A designer and generator of form base on Vue.js, make form development simple an...
Version History
| Version | Released | License |
|---|---|---|
| 2023.9.28 | ||
| 2023.9.22 | ||
| 2023.9.21 | ||
| 2023.9.11 | ||
| 7.6.7 | ||
| 7.6.6 | ||
| 7.6.5 | ||
| 7.6.4 | ||
| 7.6.3 | ||
| 7.6.2 | ||
| 7.6.1 | ||
| 7.6.0 | ||
| 7.5.9 | ||
| 7.5.8 | ||
| 7.5.7 | ||
| 7.5.6 | ||
| 7.5.5 | ||
| 7.5.4 | ||
| 7.5.3 | ||
| 7.5.2 | ||
| 7.5.1 | ||
| 7.5.0 | ||
| 7.4.9 | ||
| 7.4.8 | ||
| 7.4.7 | ||
| 7.4.6 | ||
| 7.4.5 | ||
| 7.4.3 | ||
| 7.4.2 | ||
| 7.4.1 |
Showing the latest 30 of 698. See every release on npm
Pre-releases (82)
| Version | Released | License |
|---|---|---|
| 5.6.6-Beta | ||
| 5.6.4-Beta | ||
| 5.6.3-Beta | ||
| 5.6.2-Beta | ||
| 5.6.1-Beta | ||
| 5.6.0-Beta | ||
| 5.5.9-Beta | ||
| 5.5.8-Beta | ||
| 5.5.4-Beta | ||
| 5.5.3-Beta | ||
| 5.5.2-Beta | ||
| 5.5.1-Beta | ||
| 5.5.0-Beta | ||
| 5.3.6-Beta | ||
| 5.2.4-Beta | ||
| 5.1.6-Beta | ||
| 5.1.5-Beta | ||
| 4.9.1-Beta | ||
| 4.9.0-Beta | ||
| 4.8.9-Beta | ||
| 4.8.8-Beta | ||
| 4.8.7-Beta | ||
| 4.8.6-Beta | ||
| 4.8.5-Beta | ||
| 4.8.4-Beta | ||
| 4.8.0-Beta | ||
| 4.7.9-Beta | ||
| 4.7.8-Beta | ||
| 4.7.7-Beta | ||
| 4.7.6-Beta |
Showing the latest 30 of 82. See every release on npm