更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio
演示地址:RuoYi-Nbcio后台管理系统
更多nbcio-boot功能请看演示系统
gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
在线演示(包括H5) : http://218.75.87.38:9888
原先form-generator没有子表单的布局,所以考虑增加一个,当然后面还要支持子表。
1、config.js里增加下面的一个高级组件面板
// 高级型组件 【左面板】 export const seniorComponents = [ { __config__: { tipLabel: "", showLabel: false, tagIcon: "table", label: '子表', tag: "sf-input-table", className: [], defaultValue: [], layout: "rowFormItem", dragDisabled: false, showTitle: true, type: "table", rowType: "table", children: [], tableName: "", }, showAddBtn: true, showDeleteBtn: true, disabled: false, actionText: "添加", addType: 0, defaultValue: [] } ]
2、在DraggableItem.vue里的rowFormItem增加下面代码
if (currentItem.__config__.tag === 'sf-input-table') { let tip = '' if (!currentItem.__config__.children.length) { tip = <div class="table-tip">请将组件拖到此区域(可拖多个组件)</div> } let toolTip = currentItem.__config__.label if (currentItem.__config__.tipLabel && currentItem.__config__.label) { toolTip = <span slot="label">{currentItem.__config__.label} <el-tooltip placement="top" content={currentItem.__config__.tipLabel}> <a class='el-icon-question tooltip-question content-name'></a> </el-tooltip> </span > } return ( <el-col span={currentItem.__config__.span}> <el-row gutter={currentItem.__config__.gutter} class={className + ' drawing-row-item-table'} nativeOnClick={event => { activeItem(currentItem); event.stopPropagation() }}> <span class="component-name" >{toolTip} </span> {tip} <el-form label-position="top"> <draggable list={currentItem.__config__.children} animation={340} group="componentsGroup" class="drag-wrapper table-wrapper" > {child} </draggable> </el-form> {components.itemBtns.apply(this, arguments)} </el-row> </el-col> ) }
3、RightPanel.vue里增加下面代码
<template v-if="activeData.__config__.tag==='sf-input-table'"> <el-form-item label="提示"> <el-input type="textarea" :rows="2" v-model="activeData.__config__.tipLabel" placeholder="请输入提示" /> </el-form-item> <el-form-item label="关联子表"> <el-select v-model="activeData.__config__.tableName" placeholder="请选择数据库表" v-hasPermi="['tool:gen:list']" @change="tableChange" filterable clearable> <el-option v-for="item in tableList" :key="item.tableName" :value="item.tableName" :label="item.tableName?item.tableComment+'('+item.tableName+')':item.tableComment"> <span > {{ item.tableName?item.tableComment+'('+item.tableName+')':item.tableComment}} </span> <span>{{item.sub==false?'主表':'从表'}}</span> </el-option> </el-select> </el-form-item> <table-config :active-data="activeData"/> </template>
4、效果图如下: