在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:ng-form-iview开源软件地址:https://gitee.com/jjxliu306/ng-form-iview开源软件介绍:NG-FORM-IVIEW 致力打造开源最强vue + iview动态表单组件NG-FORM-IVIEW 在线示例https://jjxliu306.github.io/ng-form-iview/dist element-ui版本地址https://gitee.com/jjxliu306/ng-form-element element-plus版本地址https://gitee.com/jjxliu306/ng-form-elementplus 后端服务ngtool 后端解析和校验功能https://gitee.com/jjxliu306/ngtool 集成示例基于springboot + vue 的前后端分离集成案例 后端springboot: https://gitee.com/jjxliu306/ng-server 前端vue: https://gitee.com/jjxliu306/ng-ui ##示例 基础表单 表单验证和组件动态显示 动态表格 简介基于vue和iview实现的表单设计器。通过拖拽方式快速生成一个表单页面,表单可以导出json格式,也可以将其他人绘制的表单通过json导入方式进行还原。 和其他开源表单的差异
组件
安装npm install --save ng-form-iview 引用 // 导入组件库import NgFormIView from 'ng-form-iview'import 'ng-form-iview/lib/ng-form-iview.css' 注册// 注册组件库Vue.use(NgFormIView) 页面引用<div id="app"> <ng-form-design /></div> API 说明1. 表单绘制组件 ng-form-design方法:
属性:
插槽:
插槽示例: <ng-form-design > <template slot="controlButton" > <el-button type="text" size="medium" @click="initDemo(1)">示例1</el-button> <el-button type="text" size="medium" @click="initDemo(2)">示例2</el-button> <el-button type="text" size="medium" @click="initDemo(3)">示例3</el-button> </template> <template slot="formName"> <span> vue-drag-formdesign 示例 </span> </template> </ng-form-design> 2. 表单查看/填报组件 ng-form-build方法:
属性:
使用示例: <template> <div id="app"> <ng-form-build :formTemplate="formTemplate" :models="models"/> </div> </template> <script> export default { data(){ return { models: {} , formTemplate: {} } }, created() { this.formTemplate = require('./data/basic.json') } } </script> 3. 自定义组件示例3.1 自定义一个组件(根据文本中输入的地址展示图片) <template> <div> <el-input v-if="!preview" type="textarea" autosize placeholder="请输入图片地址" v-model="models[record.model]" :disabled="disabled"> </el-input> <el-image :style="record.options.style ? record.options.style : null" :src="models[record.model]" fit="scale-down"></el-image> </div> </template><script> export default { props: { record: {//组件数据 type: Object, required: true }, models: {// 表单数组 type: Object, required: true }, disabled: { // 是否禁用 type: Boolean, default: false } , preview: {// 是否当前是预览 type: Boolean , default: false } }, methods: { } }</script> 3.2 定义一个自定义组件的属性配置组件(后面通过插槽挂到表单绘制面板的属性面板中) <template> <!-- 自定义组件的属性配置 --> <el-form v-show="selectItem.key" size="mini" :disabled="disabled"> <!-- TCustom start--> <template v-if="selectItem.type == 'customT'"> <!-- 开关的label --> <el-form-item label="图片样式"> <el-input type="textarea" placeholder="请输入" v-model="selectItem.options.style" /> </el-form-item> </template> <!-- TCustom end --> </el-form> </template><script>export default { props: { selectItem: { // 当前选择的组件 type: Object, required: true }, disabled: { // 是否禁用 type: Boolean, default: false } } }</script> 3.3 在动态表单绘制面板中进行配置 <template> <div id="app"> <ng-form-design ref="formDesign" :custom-components="customComponents" > <!-- 自定义属性配置 --> <template slot="custom-properties" slot-scope="{selectItem}"> <Properties :selectItem="selectItem"/> </template> <template slot="formName"> <span> vue-drag-formdesign 示例 </span> </template> </ng-form-design> </div></template> <script>// 引用自定义的表单组件和自定义组件配置信息修改组件import CustomT from './components/TCustom'import Properties from './components/properties'export default { name: 'App', components: {CustomT , Properties}, data(){ return { // 自定义组件列表 customComponents: [ { type: 'customT' , label: "自定义图片展示", // 标题文字 component: CustomT , options: { style: 'width:100px;height:100px' }, model: "customT", key: "customT", rules: [ { required: false, message: "必填项" } ] }, ] } } , methods: { }}</script> 交流 |
请发表评论