跳到正文
八一菜刀
返回

Jformparser 开发指南

简介

根据json结构,生成页面,达到解放后端开发人员的目的,降低后端对前端开发要求,后端专心开发后台接口等服务程序, 前期以表单元素为主,后期会增加更多页面元素的支持,敬请期待

JFormParser依赖:目前主要依赖bootstrap css框架、jQuery两大流行核心组件,设计之初想法是降低对各个插件的依赖耦合度,构造的 页面元素使用其他插件也能达到多样化可替换,使得页面效果更加丰富

码云地址:JFormParser

JFormParser元素

页面template

页面template主要是模板页,更多的是提供布局功能,现在主要包含两个模板

列表页模板list

list模板页面主要是用于展现数据列表页

列表页

模板结构

{
  "component_name":"scenic_form",
  "component_title":"景区form",
  "template_type":"list",
  "navs_title":"景区标准化管理 > 景区管理 > 景区列表",
  "navs":[{"title":"景区标准化管理","icon":"","url":""},{"title":"景区管理","icon":""},{"title":"景区列表","icon":""}],
  "resource_name":"scenic_info",
  "submit_url":"/cms/template/submit.htm",
  "childrens":[{
    "element_type":"panel",
    "element_title":"景区查询",
    "whether_header":false,
    "whether_border":false,
    "container":true,
    "childrens":[
      {
        "element_type":"datagrid",
        "element_title":"景区查询",
        "is_remote":true,
        "is_operate":true,
        "operate_title":"操作",
        "operate_buttons":[
          {"element_type":"button","type":"edit","element_title":"编辑","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/scenic/scenic_form.json"}},
          {"element_type":"button","type":"delete","element_title":"图片","remote_url":"/cms/template/delete.htm"},
          {"element_type":"button","type":"delete","element_title":"视频","remote_url":"/cms/template/delete.htm"},
          {"element_type":"button","type":"delete","element_title":"音频","remote_url":"/cms/template/delete.htm"},
          {"element_type":"button","type":"delete","element_title":"删除","remote_url":"/cms/template/delete.htm"}],
        "pagination":true,
        "remote_url":"/cms/template/get_remote_list.htm",
        "columns":[
		{"field":"title","title":"景区名称"},
		{"field":"level","title":"景区等级"},
		{"field":"lawyer","title":"法人代表"},
		{"field":"person_liable","title":"负责人"},
		{"field":"phone","title":"手机号码"},
		{"field":"tel","title":"电话"},
		{"field":"fax","title":"传真"},
		{"field":"approve_date","title":"批准时间"},
		{"field":"approve_date","title":"地理位置"}],
        "childrens":[
          {
            "element_type":"text",
            "element_title":"景区名称",
            "meta_column":"title",
            "is_query":true,
            "direction":"left",
            "width":"100%"
          },{
            "element_type":"text",
            "element_title":"景区等级",
            "meta_column":"level",
            "is_query":true,
            "direction":"left",
            "width":"100%"
          },{
            "element_type":"button",
            "element_title":"查询",
            "type":"query",
            "remote_url":"/cms/template/get_remote_list.htm",
            "params": {
              "params": "{resource_name: scenic_info}"
            }
          },{
            "element_type":"buttonGroup",
            "element_title":"操作按钮组",
            "align":"left",
            "childrens":[
              {"element_type":"button","type":"link","element_title":"新增景区","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/scenic/scenic_form.json"}},
              {"element_type":"button","type":"link","element_title":"删除","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/scenic/scenic_form.json"}},
              {"element_type":"button","type":"link","element_title":"导入","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/scenic/scenic_form.json"}},
              {"element_type":"button","type":"link","element_title":"导出","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/scenic/scenic_form.json"}}
            ]
          }
        ]
      }
    ]
  }
  ]
}

属性

字段类型说明是否必填默认值其他
component_namestringtemp页面组件名称
component_titlestringtemp页面组件title
template_typestringtemp页面类型,目前2中,分别为:list、form
navs_titlestring导航栏
navsArray导航栏,属性见导航栏
resource_namestring展示元数据数据表名
submit_urlstring根据template_type类型不同有不同的意义,list为获取数据地址,form为提交表单地址
containerboolean是否容器组件true
childrensArray地图子组件,这里必包含2个经纬度文本域组件

导航栏属性

字段类型说明是否必填默认值其他
titlestring导航栏名称
iconstring图标
urlstring导航栏url

表单页模板form

form模板页面主要是构建表单页面

结构

{
  "component_name":"trips_form",
  "component_title":"行程form",
  "template_type":"form",
  "navs_title":"信息管理 > 行程管理 > 行程维护",
  "navs":[{"title":"信息管理","icon":"","url":""},{"title":"行程管理","icon":""},{"title":"行程维护","icon":""}],
  "resource_name":"trips_info",
  "submit_url":"/cms/template/submit.htm",
  "init_url":"/cms/template/get_form_data.htm",
  "childrens":[
    {
      "element_type":"panel",
      "element_title":"基础信息",
      "container":true,
      "childrens":[
        {
          "element_type":"grid",
          "cols":3,
          "rows":"3",
          "childrens":[{
            "element_type":"text",
            "element_title":"行程名称",
            "meta_column":"title",
            "is_required":true
          },{
            "element_type":"select",
            "element_title":"行程类型",
            "is_required":true,
            "meta_column":"type",
            "is_fk":true,
            "fk_resource_name":"scenic_spot_info",
            "fk_meta_column":"id",
            "fk_meta_column_show":"title",
            "data":[
              {"text":"交通","value":"jt"},
              {"text":"会议","value":"hy"},
              {"text":"入住","value":"rz"},
              {"text":"用餐","value":"yc"},
              {"text":"考察","value":"kc"}
            ],
            "is_remote":false,
            "remote_url":""
          },{
            "element_type":"text",
            "element_title":"开始时间",
            "meta_column":"start_time",
            "is_required":true
          },{
            "element_type":"checkboxGroup",
            "element_title":"参与小组",
            "is_required":true,
            "meta_column":"team_infos",
            "fk_resource_name":"team_info",
            "fk_meta_column":"id",
            "fk_meta_column_show":"name",
            "is_remote":true,
            "width":"100%",
            "remote_url":"/cms/template/get_remote_data.htm"
          }]
        }
      ]
    },{
      "element_type":"panel",
      "element_title":"详情",
      "container":true,
      "childrens":[
        {
          "element_type":"editor",
          "meta_column":"intro",
          "width":"400px",
          "height":"300px"
        }
      ]
    },{
      "element_type":"buttonGroup",
      "element_title":"",
      "align":"center",
      "childrens":[
        {"element_type":"button","type":"submit","element_title":"提交","remote_url":"/cms/template/submit.htm","width":"80px","action_url":"/cms/template/template_list.htm","params":{"url":"/json/shengsi/trips/trips_list.json"}},
        {"element_type":"button","type":"link","element_title":"返回","remote_url":"/cms/template/template_list.htm","params":{"url":"/json/shengsi/trips/trips_list.json"},"width":"80px"}
      ]
    }
  ]
}

属性

字段类型说明是否必填默认值其他
component_namestringtemp页面组件名称
component_titlestringtemp页面组件title
template_typestringtemp页面类型,目前2中,分别为:list、form
navs_titlestring导航栏
navsArray导航栏,属性见导航栏
resource_namestring展示元数据数据表名
submit_urlstring根据template_type类型不同有不同的意义,list为获取数据地址,form为提交表单地址
containerboolean是否容器组件true
childrensArray地图子组件,这里必包含2个经纬度文本域组件

导航栏属性

字段类型说明是否必填默认值其他
titlestring导航栏名称
iconstring图标
urlstring导航栏url

容器组件

容器组件,顾名思义

面板panel

Panel组件是一个bootstrap风格的panel容器组件,使用该插件主要是为了表单页面布局,页面看上去更像一个整体,有整体性,页面美观

结构

{
	"element_type":"panel",
	"element_title":"资源信息",
	"container":true,
	"childrens":[...]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
whether_headerboolean是否有header头true
whether_borderboolean面板是否有边框true
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
heightstring地图初始高度
containerboolean是否容器组件true
childrensArray容器子组件集合,可包含任何其他组件

表格grid

Grid组件是一个类似表格组件,包含几行几列等属性,不过这里不同于表格table,这里只是一个页面展示组件,用于页面布局,没有任何实际作用,同panel一样,是容器组件

结构

{
	"element_type":"grid",
	"element_title":"表格组件",
	"cols":3,
    "rows":"4",
	"container":true,
	"childrens":[...]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
colsnumber表格列1
rowsnumber表格行1
containerboolean是否容器组件true
childrensArray容器子组件集合,可包含任何其他组件

地图组件bMap

bmap组件是百度地图组件,地图组件必有两个子元素,都是文本域组件 经度、纬度两个字段

结构

{
        "element_type":"bMap",
        "id":"bmap",
        "center":"包头",
        "dragging":true,
        "scrollwheelzoom":true,
        "doubleclickzoom":true,
        "width":"100%",
        "height":"450px",
        "element_title":"位置信息",
        "container":true,
        "childrens":[{
          "element_type":"text",
          "element_title":"经度",
          "meta_column":"baidu_x",
          "map_element":true,
          "point":"lng",
          "width":"40%",
          "float":"left",
          "marginRight":"10px",
          "is_required":false
        },{
          "element_type":"text",
          "element_title":"纬度",
          "meta_column":"baidu_y",
          "map_element":true,
          "point":"lat",
          "width":"40%",
          "float":"left",
          "is_required":false
        }]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
idstring地图组件唯一id编号
centerstring地图初始中央显示位置,eg:包头
draggingboolean地图是否允许拖动false
scrollwheelzoomboolean地图是否允许缩放false
doubleclickzoomboolean地图是否允许鼠标双击缩放层级true
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
heightstring地图初始高度
containerboolean是否容器组件true
childrensArray地图子组件,这里必包含2个经纬度文本域组件

数据表格datagrid

Datagrid组件是列表table展示数据组件

结构

{
        "element_type":"datagrid",
        "element_title":"交通查询",
        "is_remote":true,
        "is_operate":true,
        "operate_title":"操作",
        "operate_buttons":[
          {"type":"edit","element_type":"button","element_title":"编辑","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/traffic/traffic_form.json"}},
          {"type":"delete","element_type":"button","element_title":"删除","remote_url":"/cms/template/delete.htm"}],
        "pagination":true,
        "remote_url":"/cms/template/get_remote_list.htm",
        "columns":[
          {"field":"start_name","title":"出发城市"},
          {"field":"end_name","title":"到达城市"},
          {"field":"name","title":"航班号"},
          {"field":"first_time","title":"离港"},
          {"field":"last_time","title":"到港"},
          {"field":"type","title":"所属交通","rel_column":true,"rel_resource_name":"traffic_type"}],
        "childrens":[
          {
            "element_type":"text",
            "element_title":"出发城市",
            "meta_column":"start_name",
            "is_query":true,
            "direction":"left",
            "width":"100%"
          }, {
            "element_type":"text",
            "element_title":"到达城市",
            "meta_column":"end_name",
            "is_query":true,
            "direction":"left",
            "width":"100%"
          },{
            "element_type":"select",
            "element_title":"所属交通",
            "is_required":true,
            "meta_column":"traffic_id",
            "is_fk":true,
            "fk_resource_name":"traffic_type",
            "fk_meta_column":"id",
            "fk_meta_column_show":"type",
            "is_remote":true,
            "rules":"is_email",
            "message":"",
            "remote_url":"/cms/template/get_remote_data.htm"
          },{
            "element_type":"button",
            "element_title":"查询",
            "type":"query"
          },{
            "element_type":"buttonGroup",
            "element_title":"操作按钮组",
            "align":"left",
            "childrens":[
              {"element_type":"button","type":"link","element_title":"添加班次","remote_url":"/cms/template/template_form.htm","params":{"url":"/json/baotou/traffic/traffic_form.json"}}
            ]
          }
        ]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
is_remoteboolean是否远程ajax加载数据,如果为false,data本地数据源字段必填,否则无数据展示false
remote_urlstring远程ajax加载数据url地址
is_operateboolean是否包含操作栏true
operate_titlestring操作栏抬头titletrue
operate_buttonsArray操作栏按钮集合,列如编辑、删除等等,具体按钮明细属性请参考button按钮true
paginationboolean是否分页false
dataArraylocal数据源,和column列数据一一格式对应,例如:[{"start_name":"北京","end_name":"杭州","name":"T2XDD","first_time":"8:00","last_time":"17:00","type":"飞机"}...]true
columnsArray列集合明细,具体属性请参考column属性
containerboolean是否容器组件true
childrensArray容器子组件集合,可包含任何其他组件,这里datagrid包含的子组件仅仅是查询框组件

column属性

字段类型说明是否必填默认值其他
fieldstring字段名称
titlestring显示列title
rel_columnboolean是否多表关联查询,表关联查询情况,且列上需要展示关联表字段的时候,该字段为true,值为关联表字段false
rel_resource_namestring外联表资源名称

基础表单组件

富文本框editor

editor组件是一个富文本组件,这里使用的公司购买的ewebeditor插件,修改了ewebeditor部分源码,后台上传的资源全部上传到云数据中心

结构

{
          "element_type":"editor",
          "element_title":"详情",
          "meta_column":"detail_intro",
          "width":"400px",
          "is_required":true,
          "height":"300px"
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
heightstring地图初始高度

文本域text

text普通文本域组件,提供各种数据格式的支持,包括(整数、小数、身份证、时间)等等

结构

{
            "element_type":"text",
            "element_title":"资讯时间",
            "data_type":"datetime",
            "formatter":"yyyy-MM-dd",
            "is_required":true,
            "meta_column":"scenic_time"
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
defaultValuestring默认值
floatstringfloat位置:left、right
marginRightstring右间距,例如10px;
data_typestring数据类型,分为[“normal”,“email”,“number”,“decimal”,“datetime”,“card”..普通文本、邮箱、整数、小数、身份证]normal
formatterstring数据类型为日期时,该值启用yyyy-MM-dd
map_elementboolean是否是地图经纬度元素,配合父元素为bmap类型使用false
pointstring如果为地图经纬度元素,该值必填,值(lng、lat)经度、纬度,配合父元素为bmap类型使用
is_queryboolean是否为查询元素false

多行文本textarea

textarea多行文本域组件

结构

{
            "element_type":"textarea",
            "element_title":"简介",
            "is_required":true,
            "meta_column":"intro",
            "width":"100%"
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
defaultValuestring默认值

下拉框select

select下拉框组件,可以根据url远程加载数据,也可以是local 数据

结构

{
            "element_type":"select",
            "element_title":"所属景区",
            "is_required":true,
            "meta_column":"scenic_id",
            "is_fk":true,
			"width":"100%",
            "fk_resource_name":"scenic_info",
            "fk_meta_column":"id",
            "fk_meta_column_show":"title",
            "is_remote":true,
            "rules":"is_email",
            "message":"",
            "remote_url":"/cms/template/get_remote_data.htm",
			"data":[
            {"text":"AAAAA","value":"5A"},
            {"text":"AAAA","value":"4A"},
            {"text":"AAA","value":"3A"},
            {"text":"AA","value":"2A"}
          ]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
is_remoteboolean是否远程ajax加载数据,如果为false,data本地数据源字段必填,否则无数据展示false
remote_urlstring远程ajax加载数据url地址
is_fkboolean是否关联表查询获取数据false
fk_resource_namestring关联表名
fk_meta_columnstring关联列字段
fk_meta_column_showstring关联显示列字段
dataArraylocal数据源,text:文本、value:值[ {"text":"AAAAA","value":"5A"}, {"text":"AAAA","value":"4A"}, {"text":"AAA","value":"3A"}, {"text":"AA","value":"2A"} ] true

复选框checkboxGroup

checkboxGroup复选框组件,这里是复选框组,支持远程获取字典项

结构

{
            "element_type":"checkboxGroup",
            "element_title":"参与小组",
            "is_required":true,
            "meta_column":"scenic_id",
            "is_fk":true,
			"width":"100%",
            "fk_resource_name":"scenic_info",
            "fk_meta_column":"id",
            "fk_meta_column_show":"title",
            "is_remote":true,
            "rules":"is_email",
            "message":"",
            "remote_url":"/cms/template/get_remote_data.htm",
			"data":[
            {"text":"AAAAA","value":"5A"},
            {"text":"AAAA","value":"4A"},
            {"text":"AAA","value":"3A"},
            {"text":"AA","value":"2A"}
          ]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false
is_remoteboolean是否远程ajax加载数据,如果为false,data本地数据源字段必填,否则无数据展示false
remote_urlstring远程ajax加载数据url地址
is_fkboolean是否关联表查询获取数据false
fk_resource_namestring关联表名
fk_meta_columnstring关联列字段
fk_meta_column_showstring关联显示列字段
dataArraylocal数据源,text:文本、value:值[ {"text":"AAAAA","value":"5A"}, {"text":"AAAA","value":"4A"}, {"text":"AAA","value":"3A"}, {"text":"AA","value":"2A"} ]true

单选框radioGroup

radioGroup下拉框组件,可以根据url远程加载数据,也可以是local 数据

结构

{
            "element_type":"radioGroup",
            "element_title":"景区级别",
            "is_required":true,
            "meta_column":"scenic_id",
            "is_fk":true,
			"width":"100%",
            "fk_resource_name":"scenic_info",
            "fk_meta_column":"id",
            "fk_meta_column_show":"title",
            "is_remote":false,
            "rules":"is_email",
            "message":"",
            "remote_url":"/cms/template/get_remote_data.htm",
			"data":[
            {"text":"AAAAA","value":"5A"},
            {"text":"AAAA","value":"4A"},
            {"text":"AAA","value":"3A"},
            {"text":"AA","value":"2A"}
          ]
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false
is_remoteboolean是否远程ajax加载数据,如果为false,data本地数据源字段必填,否则无数据展示false
remote_urlstring远程ajax加载数据url地址
is_fkboolean是否关联表查询获取数据false
fk_resource_namestring关联表名
fk_meta_columnstring关联列字段
fk_meta_column_showstring关联显示列字段
dataArraylocal数据源,text:文本、value:值[ {"text":"AAAAA","value":"5A"}, {"text":"AAAA","value":"4A"}, {"text":"AAA","value":"3A"}, {"text":"AA","value":"2A"} ]true

自定义组件

素材上传fileupload

fileupload上传组件,可以上传图片(可预览)、音频等素材

结构

{
        "element_type":"fileupload",
        "element_title":"交通主图",
        "meta_column":"logo_image"
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
is_requiredboolean是否必输项false

图集images

Images图集组件,该组件和后台CMS绑定,需要一张素材表cms_material_info

结构

{
          "element_type":"images",
          "id":"scenic_images",
          "is_required":true,
          "is_fk_resource":true,
          "fk_resource_name":"cms_material_info",
          "service":"materialService",
          "remote_url":"/cms/images/get_remote_data.htm",
          "width":"400px",
          "height":"300px"
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
meta_columnstring表单name字段,元数据字段
idstring图集id
servicestring后台service业务名称
remote_urlstring图集初始化url
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;
heightstring图集高度
is_requiredboolean是否必输项false

其他

按钮button

结构


{
	"element_type":"button",
	"type":"submit",
	"element_title":"提交",
	"remote_url":"/cms/template/submit.htm",
	"width":"80px",
	"action_url":"/cms/template/template_list.htm",
	"params":{"url":"/json/shengsi/scenic/scenic_list.json"}
}

属性

字段类型说明是否必填默认值其他
element_typestring组件类型
element_titlestring组件title
typestring按钮类型,目前有[submit、link、query、edit、delete]五种类型,提交、连接跳转、查询、编辑、删除
remote_urlstring根据type类型,有不同的意义,例如是submit,这里则表示提交地址,如未link,这里则为跳转地址
paramsobjectevent点击事件,remote_url后面参数
action_urlstringcallback后执行地址
widthstring地图初始宽度,可以是百分比,可以是像素值,例如:100% 或者400px;

分享文章:

上一篇
技术架构整理
下一篇
node.js应用Linux安装部署