• 基于jeecgboot的flowable流程支持online表单(二)


           这部分很多功能代码由网友撼动宇宙提供,这里先感谢这位网友的辛苦工作

          这部分主要是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表单

    1. <a-modal :title="onlineForm.title" :visible.sync="onlineForm.visible" :footer="null" :maskClosable="false"
    2. closable @cancel="()=>{onlineForm.visible=false}" width="896px">
    3. <a-form :model="onlineForm.model" ref="previewOnlForm">
    4. <a-row v-for="(itemCommon, indexInner) in onlineForm.onlineFormData" :key="indexInner" :label="itemCommon.onlTitleName" :model="itemCommon.cgformHeadId" >
    5. <a-col :span="parseInt(itemField.fieldDataTopInfo)" v-for="(itemField, index2) in itemCommon.fieldAll" :key="index2">
    6. <a-form-item :label="itemField.dbFieldTxt" :model="itemField" :key="index2">
    7. <component :is="itemField.tableTypeCode" :model="itemField" :key="index2" :fcz="itemField" @commonComponent ="commonComponent" >
    8. component>
    9. a-form-item>
    10. a-col>
    11. a-row>
    12. <a-form-item style="text-align: center;">
    13. <a-button type="primary" @click="submitOnlForm">提交a-button>
    14. <a-button @click="resetOnlForm">重置a-button>
    15. a-form-item>
    16. a-form>
    17. 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、对应的端口接口

    1. public Map getOnlCgformHeadByFormId(String formId) {
    2. // TODO Auto-generated method stub
    3. Map map = new HashMap();
    4. List onlData = new ArrayList();
    5. OnlCgformHead onlCgFormHead = onlCgformHeadService.getById(formId);
    6. if(String.valueOf(onlCgFormHead.getTableType()).equals("2")){//表类型: 0单表、1主表、2附表
    7. String.valueOf(onlCgFormHead.getTableType());
    8. //查询当前表的附表
    9. String[] attInfo = String.valueOf(onlCgFormHead.getSubTableStr()).split(",");
    10. ArrayList arrayList = new ArrayList(attInfo.length);
    11. Collections.addAll(arrayList, attInfo);
    12. //查询
    13. QueryWrapper onlCgformHeadQueryWrapper = new QueryWrapper();
    14. onlCgformHeadQueryWrapper.eq("table_type",Integer.valueOf(3));
    15. onlCgformHeadQueryWrapper.eq("is_db_synch","Y");
    16. onlCgformHeadQueryWrapper.in("table_name",arrayList);
    17. onlCgformHeadQueryWrapper.orderByAsc("tab_order_num");
    18. List onlCgformHeadAll = onlCgformHeadService.list(onlCgformHeadQueryWrapper);
    19. //整理返回数据信息
    20. onlData.add(dataInfomation(onlCgFormHead));
    21. for(int i=0;i
    22. onlData.add(dataInfomation(onlCgformHeadAll.get(i)));
    23. }
    24. }else{
    25. onlData.add(dataInfomation(onlCgFormHead));
    26. }
    27. map.put("formData", onlData);
    28. return map;
    29. }

    4、效果图如下:

     

    5、前端获取上面表单录入的数据

    1. commonComponent(zcf){
    2. console.log("commonComponent zcf=",zcf);
    3. for(var i = 0;i<this.onlineForm.onlineFormData.length;i++){
    4. console.log("onlineFormData[i]=",this.onlineForm.onlineFormData[i])
    5. console.log("onlineFormData[i].id=",this.onlineForm.onlineFormData[i].id)
    6. console.log("zcf.cgformHeadId=",zcf.cgformHeadId)
    7. if(this.onlineForm.onlineFormData[i].id == zcf.cgformHeadId){
    8. var flagInfo =0;
    9. let fieldname = zcf.dbFieldName
    10. console.log("this.onlineForm.model=",this.onlineForm.model)
    11. console.log("fieldname=",fieldname)
    12. this.onlineForm.model[fieldname] = zcf.commonDataInfo
    13. console.log("this.onlineForm.model[fieldname]",this.onlineForm.model[fieldname])
    14. for(var k = 0;k<this.onlineForm.model[fieldname].length;k++){
    15. if(this.onlineForm.model[fieldname][k].id == zcf.id){
    16. this.onlineForm.model[fieldname][k] = zcf
    17. flagInfo = 1;
    18. }
    19. if(this.onlineForm.model[fieldname][k].tableTypeCode =='hanDongLinkDown' || this.onlineForm.model[fieldname][k].linkDowmIz =='1'){
    20. //判断当前组件类型是否是linkDown相关组件
    21. nextLinkDown(this.onlineForm.model[fieldname][k].linkDowmFieldNext,this.onlineForm.model[fieldname][k].commonLinkDownCodeChild)
    22. }
    23. }
    24. if(flagInfo == 0){
    25. //this.onlineForm.model[fieldname].push(zcf);
    26. this.onlineForm.model[fieldname] = zcf.commonDataInfo
    27. }
    28. }
    29. }
    30. },

    获取提交的数据

     

  • 相关阅读:
    二硫化钨/二硒化钨纳米复合材料|WSe2二硒化钨负载掺氮三维石墨烯|氮掺杂二氧化钛负载二硒化钨|二硒化钨薄片/氧化铟纳米线复合材料
    springboot- redis常见数据存取
    传输线感性耦合和距离的关系
    细说MySQL数据类型
    确定性 vs 非确定性:GPT 时代的新编程范式
    【图像去噪】基于非线性扩散PM算法实现图像去噪附matlab代码
    MySQL基本语句
    洞察运营机会的数据分析利器
    VD6283TX环境光传感器驱动开发(1)----获取ID
    4.TCP UDP简单介绍
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/127611902