表单设计。。。。。


java项目自定义字段表单处理方式

参考开源

直接用中文字段建表,没有实体,查询出来使用map传给前端。
参考开源nocodb,
前端新建一个字段
在这里插入图片描述
后端执行打印:
在这里插入图片描述
缺点:没有实体映射,没有拓展,如果该字段放文件,就需要写对应的字段配置的表进行文件处理。

没有实体,不符合springboot的开发规范。

设计一,表头和表单数据存储json

前端json设计。

这是一个前端正常的table,json
在这里插入图片描述
理论上我们把表头和表数据存储后直接给前端使用就行。
但当字段扩展到人员,部门,选项时候。在返回数据时候,我们是需要处理的,由于字段是用户自定义的,名称不确定,在健值对取值时无法获取内容信息。

以后端能处理的表单表设计
在这里插入图片描述

其中表单的表头json设计如下:

 "tableHeader": {
        "tableSign": "123212341",
        "tableName": "表单设计",
 [   
        {
            "rowName": "姓名",
            "infoType": "text",
            "selectSign": "",
            "showFlag": "1",
            "describe": "这是字段描述"
        },
        {
            "rowName": "出生日期",
            "infoType": "data",
            "selectSign": "",
            "showFlag": "1",
            "describe": "这是字段描述"
        },
        {
            "rowName": "毕业去向",
            "infoType": "select",
            "selectSign": "select_type",
            "showFlag": "0",
            "describe": "这是一个选项"
        },
        {
            "rowName": "就业协议",
            "infoType": "file",
            "selectSign": "",
            "showFlag": "0",
            "describe": "这是字段描述"
        },
        {
            "rowName": "处理人/部门",
            "infoType": "json",
            "selectSign": "",
            "showFlag": "0",
            "describe": "这是字段描述"
        }
    ]
    } ,

表单内容结构参考:

"tableInfo": [
        {
        "info": [
            {
                "rowName": "姓名",
                "infoType": "text",
                "selectSign": "",
                "姓名": "测试阶段姓名",
                "showFlag": "1",
                "describe": "这是字段描述"
            },
            {
                "rowName": "出生日期",
                "infoType": "data",
                "selectSign": "",
                "rowInfo": "1996-06-07",
                "showFlag": "1",
                "describe": "这是字段描述"
            },
            {
                "rowName": "毕业去向",
                "tableSign": "123212341",
                "infoType": "select",
                "selectSign": "",
                "rowInfo": "A",
                "showFlag": "0",
                "describe": "这是一个选项"
            },
            {
                "rowName": "就业协议",
                "infoType": "file",
                "selectSign": "",
                "rowInfo": {
                    "fileName": "文件名"
                },
                "showFlag": "0",
                "describe": "这是字段描述",
                 "tableSign": "123212341",
            },
            {
                "rowName": "处理人/部门",
                "infoType": "json",
                "rowInfo": {
                    "userName": "刘×",
                    "userId": "12345",
                    "deptId": "1908",
                    "deptName": "测试部门"
                },
                "selectSign": "",
                "showFlag": "0",
                "describe": "这是字段描述"
            }],
        "id":"9875730862563",
        "keyWord":{

        }
    },
    //这里是一条数据
     {
        "info": [
            {
                "rowName": "姓名",
                "infoType": "text",
                "selectSign": "",
                "rowInfo": "测试阶段姓名1",
                "showFlag": "1",
                "describe": "这是字段描述"
            },
            {
                "rowName": "出生日期",
                "infoType": "data",
                "selectSign": "",
                "rowInfo": "1996-06-09",
                "showFlag": "1",
                "describe": "这是字段描述"
            },
            {
                "rowName": "毕业去向",
                "infoType": "select",
                "selectSign": "",
                "rowInfo": "B",
                "showFlag": "0",
                "describe": "这是一个选项"
            },
            {
                "rowName": "就业协议",
                "infoType": "file",
                "selectSign": "",
                "rowInfo": {
                    "fileName": "文件名1"
                },
                "showFlag": "0",
                "describe": "这是字段描述"
            },
            {
                "rowName": "处理人/部门",
                "infoType": "json",
                "rowInfo": {
                    "userName": "刘×X",
                    "userId": "12345",
                    "deptId": "1908",
                    "deptName": "测试部门"
                },
                "selectSign": "",
                "showFlag": "0",
                "describe": "这是字段描述"
            }],
        "id":"765354237634",
         "tableSign": "123212341",
        "keyWord":{
        }
    }
  ]

全局搜索

在这里插入图片描述

由于表头和表单都已json的数据存储,当设定表头的某一列不能显示内容,在这基础上做全局搜索不准确,会出现不必要的搜索结果,且很难排除不能显示的内容(不能显示意外着不能参与相关的全局搜索。)
像正常的数据库查询,eq,like,都只能大致的使用,某字段的in条件搜索就不能使用了。

搜索还附带一行数据的标签搜索,搜索后将又要做内容上的处理,以及前端展示的处理。存储json后,如果某个字段对于某人是不展示的,那搜索结果还需要做排除处理。

列引用

当一张表单的某一列引用另一张表单的数据,其中某一列的数据,当原表的数据改变,引用的数据也要改变。
引用后可修改,修改后将不再以引用内容改变而改变。以用户输入修改为准,后续也不会同原表同步。

难点,当我第一次引用后(10条)又添加了自己的数据(新的一条),等到第二次引用,是同样将原数据拷贝一份就好,还是找到对应的数据更新,同步后续的修改,是新增数据,是修改数据,还有不存在的数据是否删除。

前端没有现成的组

前端的table只支持字段明确的表格,换成上诉的json设计,前端的页面设计比较复杂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值