这部分很多功能代码由网友撼动宇宙提供,这里先感谢这位网友的辛苦工作
这部分主要是online表单的显示与录入数据获取
1、先建两个表
-- ----------------------------
-- Table structure for bpm_tool_designer
-- ----------------------------
DROP TABLE IF EXISTS `bpm_tool_designer`;
CREATE TABLE `bpm_tool_designer` (
`id` varchar(255) NOT NULL,
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`field_show_type` varchar(255) NOT NULL COMMENT '表字段控件类型',
`field_type` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '前端控件编码',
PRIMARY KEY (`id`,`field_show_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='表单控件与前端编码的匹配关系';
-- ----------------------------
-- Table structure for bpm_tool_rule
-- ----------------------------
DROP TABLE IF EXISTS `bpm_tool_rule`;
CREATE TABLE `bpm_tool_rule` (
`id` varchar(255) NOT NULL,
`create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`field_vaild_type` varchar(255) NOT NULL COMMENT '表单字段校验规则',
`rule_type` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '前端校验编码',
PRIMARY KEY (`id`,`field_vaild_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='表单验证规则与前端编码的匹配关系';
2、前端显示online表单
<!--online表单弹窗预览--><a-modal :title="onlineForm.title" :visible.sync="onlineForm.visible" :footer="null" :maskClosable="false" closable @cancel="()=>{onlineForm.visible=false}" width="896px"><a-form :model="onlineForm.model" ref="previewOnlForm"> <a-row v-for="(itemCommon, indexInner) in onlineForm.onlineFormData" :key="indexInner" :label="itemCommon.onlTitleName" :model="itemCommon.cgformHeadId" ><a-col :span="parseInt(itemField.fieldDataTopInfo)" v-for="(itemField, index2) in itemCommon.fieldAll" :key="index2"><a-form-item :label="itemField.dbFieldTxt" :model="itemField" :key="index2"><component :is="itemField.tableTypeCode" :model="itemField" :key="index2" :fcz="itemField" @commonComponent ="commonComponent" ></component></a-form-item></a-col></a-row><a-form-item style="text-align: center;"><a-button type="primary" @click="submitOnlForm">提交</a-button><a-button @click="resetOnlForm">重置</a-button></a-form-item></a-form> </a-modal>
这里使用了大量自己定义的前端各个字段类型的组件,等做好代码发布后会正式公布,主要是以下组件,以后还会根据需要扩充
//online表单显示组件
import { handongRule } from '@comp/formdesigner/hanDongYuZhou/handongCommon'
import hanDongInput from "@comp/formdesigner/hanDongYuZhou/hanDongInput";
import hanDongPassword from "@comp/formdesigner/hanDongYuZhou/hanDongPassword";
import hanDongSwitch from "@comp/formdesigner/hanDongYuZhou/hanDongSwitch";
import hanDongList from "@comp/formdesigner/hanDongYuZhou/hanDongList";
import hanDongRadio from "@comp/formdesigner/hanDongYuZhou/hanDongRadio";
import hanDongCheckbox from "@comp/formdesigner/hanDongYuZhou/hanDongCheckbox";
import hanDongListMulti from "@comp/formdesigner/hanDongYuZhou/hanDongListMulti";
import hanDongSelSearch from "@comp/formdesigner/hanDongYuZhou/hanDongSelSearch";
import hanDongTextArea from "@comp/formdesigner/hanDongYuZhou/hanDongTextArea";
import hanDongDate from "@comp/formdesigner/hanDongYuZhou/hanDongDate";
import hanDongDateTime from "@comp/formdesigner/hanDongYuZhou/hanDongDateTime";
import hanDongTime from "@comp/formdesigner/hanDongYuZhou/hanDongTime";
import hanDongImage from "@comp/formdesigner/hanDongYuZhou/hanDongImage";
import hanDongFile from "@comp/formdesigner/hanDongYuZhou/hanDongFile";
import hanDongUmeditor from "@comp/formdesigner/hanDongYuZhou/hanDongUmeditor";
import hanDongSelUser from "@comp/formdesigner/hanDongYuZhou/hanDongSelUser";
import hanDongSelDepart from "@comp/formdesigner/hanDongYuZhou/hanDongSelDepart";
import hanDongMarkDown from "@comp/formdesigner/hanDongYuZhou/hanDongMarkDown";
import hanDongPca from "@comp/formdesigner/hanDongYuZhou/hanDongPca";
import hanDongPopup from "@comp/formdesigner/hanDongYuZhou/hanDongPopup";
import hanDongSelTree from "@comp/formdesigner/hanDongYuZhou/hanDongSelTree";
import hanDongCatTree from "@comp/formdesigner/hanDongYuZhou/hanDongCatTree";
import hanDongLinkDown from "@comp/formdesigner/hanDongYuZhou/hanDongLinkDown";
3、对应的端口接口
public Map<String, Object> getOnlCgformHeadByFormId(String formId) {// TODO Auto-generated method stubMap<String, Object> map = new HashMap<String, Object>();List<OnlCgformHeadVO> onlData = new ArrayList<OnlCgformHeadVO>();OnlCgformHead onlCgFormHead = onlCgformHeadService.getById(formId);if(String.valueOf(onlCgFormHead.getTableType()).equals("2")){//表类型: 0单表、1主表、2附表String.valueOf(onlCgFormHead.getTableType());//查询当前表的附表String[] attInfo = String.valueOf(onlCgFormHead.getSubTableStr()).split(",");ArrayList<String> arrayList = new ArrayList<String>(attInfo.length);Collections.addAll(arrayList, attInfo);//查询QueryWrapper<OnlCgformHead> onlCgformHeadQueryWrapper = new QueryWrapper<OnlCgformHead>();onlCgformHeadQueryWrapper.eq("table_type",Integer.valueOf(3));onlCgformHeadQueryWrapper.eq("is_db_synch","Y");onlCgformHeadQueryWrapper.in("table_name",arrayList);onlCgformHeadQueryWrapper.orderByAsc("tab_order_num");List<OnlCgformHead> onlCgformHeadAll = onlCgformHeadService.list(onlCgformHeadQueryWrapper);//整理返回数据信息onlData.add(dataInfomation(onlCgFormHead));for(int i=0;i<onlCgformHeadAll.size();i++){onlData.add(dataInfomation(onlCgformHeadAll.get(i)));}}else{onlData.add(dataInfomation(onlCgFormHead));}map.put("formData", onlData);return map;}
4、效果图如下:
5、前端获取上面表单录入的数据
commonComponent(zcf){console.log("commonComponent zcf=",zcf);for(var i = 0;i<this.onlineForm.onlineFormData.length;i++){console.log("onlineFormData[i]=",this.onlineForm.onlineFormData[i])console.log("onlineFormData[i].id=",this.onlineForm.onlineFormData[i].id)console.log("zcf.cgformHeadId=",zcf.cgformHeadId)if(this.onlineForm.onlineFormData[i].id == zcf.cgformHeadId){var flagInfo =0;let fieldname = zcf.dbFieldNameconsole.log("this.onlineForm.model=",this.onlineForm.model)console.log("fieldname=",fieldname)this.onlineForm.model[fieldname] = zcf.commonDataInfoconsole.log("this.onlineForm.model[fieldname]",this.onlineForm.model[fieldname])for(var k = 0;k<this.onlineForm.model[fieldname].length;k++){if(this.onlineForm.model[fieldname][k].id == zcf.id){this.onlineForm.model[fieldname][k] = zcfflagInfo = 1;}if(this.onlineForm.model[fieldname][k].tableTypeCode =='hanDongLinkDown' || this.onlineForm.model[fieldname][k].linkDowmIz =='1'){//判断当前组件类型是否是linkDown相关组件nextLinkDown(this.onlineForm.model[fieldname][k].linkDowmFieldNext,this.onlineForm.model[fieldname][k].commonLinkDownCodeChild)}}if(flagInfo == 0){//this.onlineForm.model[fieldname].push(zcf);this.onlineForm.model[fieldname] = zcf.commonDataInfo}}}},
获取提交的数据