diff --git a/modules/i3plus-pojo-screen/pom.xml b/modules/i3plus-pojo-screen/pom.xml
new file mode 100644
index 0000000..7f46931
--- /dev/null
+++ b/modules/i3plus-pojo-screen/pom.xml
@@ -0,0 +1,54 @@
+
+
+
+ i3plus-pojo
+ i3plus.pojo
+ 1.0-DEV-SNAPSHOT
+
+ 4.0.0
+
+ i3plus-pojo-screen
+
+
+
+ i3plus.pojo
+ i3plus-pojo-base
+
+
+
+
+
+ dev
+
+ DEV
+
+
+ true
+
+
+
+ test
+
+ TEST
+
+
+
+ docker
+
+ DOCKER
+
+
+
+ prod
+
+ PROD
+
+
+
+
+ ${project.artifactId}-${project.version}
+
+
+
\ No newline at end of file
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/AbstractScreenBean.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/AbstractScreenBean.java
new file mode 100644
index 0000000..4185d7c
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/AbstractScreenBean.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import lombok.Data;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午8:47
+ * @desc
+ */
+@Data
+public abstract class AbstractScreenBean extends BaseBean {
+ private static final long serialVersionUID = 3535186340743573771L;
+
+ private Integer version;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrAction.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrAction.java
new file mode 100644
index 0000000..06f0f19
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrAction.java
@@ -0,0 +1,40 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 上午10:43
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_ACTION")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("动作")
+public class ScrAction extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 3832856363595940018L;
+
+ @Column(name = "ACTION_CODE")
+ @ApiParam("动作代码")
+ private String actionCode;
+
+ @Column(name = "ACTION_NAME")
+ @ApiParam("动作名称")
+ private String actionName;
+}
\ No newline at end of file
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObject.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObject.java
new file mode 100644
index 0000000..8da3aeb
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObject.java
@@ -0,0 +1,54 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午1:27
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_DATA_OBJECT")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("数据对象管理")
+public class ScrDataObject extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -270662014158685376L;
+
+ @Column(name = "DATA_OBJECT_CODE")
+ @ApiParam(value = "数据对象代码")
+ private String dataObjectCode;
+
+ @Column(name = "SOURCE_CODE")
+ @ApiParam(value = "数据源编码")
+ private String sourceCode;
+
+ @Column(name = "DATA_OBJECT_SOURCE")
+ @ApiParam(value = "数据名称")
+ private String dataObjectSource;
+
+ @Column(name = "DATA_TYPE")
+ @ApiParam(value = "数据类型")
+ private Integer dataType;
+
+ @Column(name = "DESCRIPTION")
+ @ApiParam(value = "描述")
+ private String description;
+
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObjectProperty.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObjectProperty.java
new file mode 100644
index 0000000..4b4caad
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDataObjectProperty.java
@@ -0,0 +1,57 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午5:21
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_DATA_OBJECT_PROPERTY")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("数据对象属性")
+public class ScrDataObjectProperty extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 6954106365899677132L;
+
+ @Column(name = "DATA_OBJECT_CODE")
+ @ApiParam(value = "数据对象ID")
+ private Long dataObjectCode;
+
+ @Column(name = "FIELD_CODE")
+ @ApiParam(value = "字段代码")
+ private String fieldCode;
+
+ @Column(name = "FIELD_TYPE")
+ @ApiParam(value = "字段类型")
+ private String fieldType;
+
+ @Column(name="IS_PRIMARY_KEY")
+ @ApiParam(value ="是否主键")
+ private Integer isPrimaryKey;
+
+ @Column(name="IS_NULLABLE")
+ @ApiParam(value = "是否允许为空")
+ private Integer isNullable;
+
+
+
+
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDatasource.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDatasource.java
new file mode 100644
index 0000000..bb01da4
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrDatasource.java
@@ -0,0 +1,73 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 上午10:58
+ * @desc
+ */
+
+@Entity
+@Table(name = "SCR_DATASOURCE")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("数据源管理")
+public class ScrDatasource extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 2660387454249572573L;
+
+ @Column(name="SOURCE_NAME")
+ @ApiParam(value ="数据源名称")
+ private String sourceName;
+
+ @Column(name="SOURCE_CODE")
+ @ApiParam(value ="数据源代码")
+ private String sourceCode;
+
+ @Column(name="SOURCE_STATUS")
+ @ApiParam(value ="数据源状态",name = "状态:可用,不可用 看枚举当中是否存在")
+ private Integer sourceStatus;
+
+ @Column(name="SOURCE_TYPE")
+ @ApiParam(value ="数据源类型",name = "CommonEnumUtil.DATA_SOURCE_TYPE")
+ private Integer sourceType;
+
+ @Column(name="SOURCE_HOST")
+ @ApiParam(value ="数据源连接地址")
+ private String sourceHost;
+
+ @Column(name="SOURCE_PORT")
+ @ApiParam(value ="数据源端口")
+ private Integer sourcePort;
+
+ @Column(name="SOURCE_DATA_BASE_NAME")
+ @ApiParam(value ="数据库名称")
+ private String sourceDataBaseName;
+
+ @Column(name="SOURCE_USER_NAME")
+ @ApiParam(value ="数据库用户名称")
+ private String sourceUserName;
+
+ @Column(name="SOURCE_PASSWORD")
+ @ApiParam(value ="数据库用户密码")
+ private String sourcePassword;
+
+ @Column(name="SOURCE_DESCRIPTION")
+ @ApiParam(value ="数据源描述")
+ private String sourceDescription;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEvent.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEvent.java
new file mode 100644
index 0000000..5988035
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEvent.java
@@ -0,0 +1,40 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/19 下午5:06
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_EVENT")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("事件")
+public class ScrEvent extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -6217007706865821613L;
+
+ @Column(name = "EVENT_CODE")
+ @ApiParam("事件代码")
+ private String eventCode;
+
+ @Column(name = "EVENT_NAME")
+ @ApiParam("事件名称")
+ private String eventName;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEventAction.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEventAction.java
new file mode 100644
index 0000000..a442262
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrEventAction.java
@@ -0,0 +1,56 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/19 下午5:06
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_EVENT_ACTION")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("事件动作")
+public class ScrEventAction extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -6217007706865821613L;
+
+ @Column(name = "EVENT_ACTION_CODE")
+ @ApiParam("事件动作代码")
+ private String eventActionCode;
+
+ @Column(name = "EVENT_ACTION_NAME")
+ @ApiParam("事件动作名称")
+ private String eventActionName;
+
+ @Column(name = "EVENT_CODE")
+ @ApiParam("事件代码")
+ private String eventCode;
+
+ @Column(name = "PRE_ACTION_CODE")
+ @ApiParam("执行前动作代码")
+ private String preActionCode;
+
+ @Column(name = "EXECUTE_ACTION_CODE")
+ @ApiParam("执行的动作代码")
+ private String executeActionCode;
+
+ @Column(name = "POST_ACTION_CODE")
+ @ApiParam("执行前动作代码")
+ private String postActionCode;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrFile.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrFile.java
new file mode 100644
index 0000000..c1d4994
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrFile.java
@@ -0,0 +1,9 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午9:59
+ * @desc
+ */
+public class ScrFile {
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayout.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayout.java
new file mode 100644
index 0000000..9e1542e
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayout.java
@@ -0,0 +1,49 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:30
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_LAYOUT")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("布局")
+public class ScrLayout extends BaseBean implements Serializable {
+
+ private static final long serialVersionUID = 3390463604300159807L;
+ @Column(name = "LAYOUT_CODE")
+ @ApiParam("布局代码")
+ private String layoutCode;
+
+ @Column(name = "LAYOUT_NAME")
+ @ApiParam("布局名称")
+ private String layoutName;
+
+ @Column(name = "ROW_SEQ")
+ @ApiParam("行顺序")
+ private Integer rowSeq;
+
+ @Column(name = "ROW_CODE")
+ @ApiParam("行代码")
+ private String rowCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutColumn.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutColumn.java
new file mode 100644
index 0000000..cd1f78b
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutColumn.java
@@ -0,0 +1,45 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午5:01
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_LAYOUT_COLUMN")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("布局-列")
+public class ScrLayoutColumn extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 5001564292608042287L;
+
+ @Column(name = "COL_CODE")
+ @ApiParam("列代码")
+ private String colCode;
+
+ @Column(name ="COL_NAME")
+ @ApiParam("列名称")
+ private String colName;
+
+ @Column(name ="COL_SPAN")
+ @ApiParam("列占位")
+ private Integer colSpan;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutRow.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutRow.java
new file mode 100644
index 0000000..92c2cfd
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrLayoutRow.java
@@ -0,0 +1,54 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午5:01
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_LAYOUT_ROW")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("布局-行")
+public class ScrLayoutRow extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 6042010183759804616L;
+
+ @Column(name = "ROW_CODE")
+ @ApiParam("行代码")
+ private String rowCode;
+
+ @Column(name = "ROW_NAME")
+ @ApiParam("行名称")
+ private String rowName;
+
+ @Column(name = "ROW_HEIGHT")
+ @ApiParam("行高")
+ private Double rowHeight;
+
+ @Column(name = "COL_SEQ")
+ @ApiParam("列序号")
+ private Integer colSeq;
+
+ @Column(name = "COL_CODE")
+ @ApiParam("列代码")
+ private String colCode;
+
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModel.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModel.java
new file mode 100644
index 0000000..a607aaf
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModel.java
@@ -0,0 +1,41 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:29
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_MODEL")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("model")
+public class ScrModel extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -4609944173378718944L;
+
+ @Column(name = "MODEL_CODE")
+ @ApiParam("model代码")
+ private String modelCode;
+
+ @Column(name = "DATA_OBJECT_CODE")
+ @ApiParam("数据对象代码")
+ private String dataObjectCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelField.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelField.java
new file mode 100644
index 0000000..efc9f3a
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelField.java
@@ -0,0 +1,85 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:29
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_MODEL_FIELD")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("model字段")
+public class ScrModelField extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 3893137576091823152L;
+
+ @Column(name = "MODEL_CODE")
+ @ApiParam("model代码")
+ private String modelCode;
+
+ @Column(name = "FIELD_CODE")
+ @ApiParam("字段代码")
+ private String fieldCode;
+
+ @Column(name = "IS_FUZZY_SEARCH")
+ @ApiParam("是否支持模糊查询")
+ private Boolean isFuzzySearch;
+
+ @Column(name = "IS_SHOW_IN_NEW")
+ @ApiParam("是否在新增时展示")
+ private Boolean isShowInNew;
+
+ @Column(name = "IS_SHOW_IN_EDIT")
+ @ApiParam("是否在编辑时展示")
+ private Boolean isShowInEdit;
+
+ @Column(name = "IS_ALLOW_SORT")
+ @ApiParam("是否支持排序")
+ private Boolean isAllowSort;
+
+ @Column(name = "FORM_SEQ")
+ @ApiParam("表单顺序")
+ private Integer formSeq;
+
+ @Column(name = "TABLE_SEQ")
+ @ApiParam("表格顺序")
+ private Integer tableSeq;
+
+ @Column(name = "VALIDATION")
+ @ApiParam("校验")
+ private String validation;
+
+ @Column(name = "DICTIONARY")
+ @ApiParam("字典")
+ private String dictionary;
+
+ @Column(name = "IS_VIRTUAL")
+ @ApiParam("是否是虚拟的")
+ private boolean isVirtual;
+
+ @Column(name = "FIELD_NAME")
+ @ApiParam("字段名称")
+ private String fieldName;
+
+ @Column(name = "SPEL_VIRTUAL_VALUE")
+ @ApiParam("SPEL表达式虚拟属性")
+ private String spelVirtualValue;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldConstraint.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldConstraint.java
new file mode 100644
index 0000000..fc82a9b
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldConstraint.java
@@ -0,0 +1,48 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/12 下午4:26
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_MODEL_FIELD_CONSTRAINT")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("model字段约束")
+public class ScrModelFieldConstraint extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 5020158684534641672L;
+
+ @Column(name = "MODEL_CODE")
+ @ApiParam("model代码")
+ private String modelCode;
+
+ @Column(name = "CONSTRAINT_TYPE")
+ @ApiParam("约束类型")
+ private String constraintType;
+
+ @Column(name = "GROUP_NO")
+ @ApiParam("组号")
+ private Integer groupNo;
+
+ @Column(name = "FIELD_CODE")
+ @ApiParam("字段代码")
+ private String fieldCode;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldVirtual.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldVirtual.java
new file mode 100644
index 0000000..0a091b3
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrModelFieldVirtual.java
@@ -0,0 +1,53 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/12 下午4:30
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_MODEL_FIELD_VIRTUAL")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("model虚拟字段")
+public class ScrModelFieldVirtual extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -7756539161394751580L;
+
+ @Column(name = "MODEL_CODE")
+ @ApiParam("model代码")
+ private String modelCode;
+
+ @Column(name = "VIRTUAL_FIELD_NAME")
+ @ApiParam("虚拟字段名称")
+ private String virtualFieldName;
+
+ @Column(name = "SPEL_CALC_EXPRESSION")
+ @ApiParam("SPEL计算表达式")
+ private String spelCalcExpression;
+
+ @Column(name = "GROUP_NO")
+ @ApiParam("组号")
+ private Integer groupNo;
+
+ @Column(name = "FIELD_CODE")
+ @ApiParam("字段代码")
+ private String fieldCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanel.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanel.java
new file mode 100644
index 0000000..12003c0
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanel.java
@@ -0,0 +1,47 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午7:50
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_PANEL")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Panel")
+public class ScrPanel extends BaseBean implements Serializable {
+
+ @Column(name = "PANEL_CODE")
+ @ApiParam("Panel代码")
+ private String panelCode;
+
+ @Column(name = "PANEL_NAME")
+ @ApiParam("Panel名称")
+ private String panelName;
+
+ @Column(name = "LAYOUT_CODE")
+ @ApiParam("布局代码")
+ private String layoutCode;
+
+ @Column(name = "USAGE_AMOUNT")
+ @ApiParam("使用数量")
+ private Integer usageAmount;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelLayoutColumn.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelLayoutColumn.java
new file mode 100644
index 0000000..e520792
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelLayoutColumn.java
@@ -0,0 +1,35 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午5:01
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_PANEL_LAYOUT_COLUMN")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Panel布局-列")
+public class ScrPanelLayoutColumn extends ScrLayoutColumn implements Serializable {
+ private static final long serialVersionUID = 6577099884589179886L;
+
+ @Column(name = "COMPONENT_CODE")
+ @ApiParam("组件代码")
+ private String componentCode;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModel.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModel.java
new file mode 100644
index 0000000..90fe642
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModel.java
@@ -0,0 +1,45 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午8:42
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_PANEL_MODEL")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Panel与Model的关系")
+public class ScrPanelModel extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -6998319452471117206L;
+
+ @Column(name = "PANEL_MODEL_CODE")
+ @ApiParam("Panel与Model的关系代码")
+ private String panelModelCode;
+
+ @Column(name = "PANEL_CODE")
+ @ApiParam("Panel代码")
+ private String panelCode;
+
+ @Column(name = "MODEL_CODE")
+ @ApiParam("Model代码")
+ private String modelCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelComponent.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelComponent.java
new file mode 100644
index 0000000..e447112
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelComponent.java
@@ -0,0 +1,42 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午8:42
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_PANEL_MODEL_COMPONENT")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Panel与Model组件的关系")
+public class ScrPanelModelComponent extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 2011504067317832781L;
+
+ @Column(name = "PANEL_MODEL_CODE")
+ @ApiParam("Panel与Model的关系代码")
+ private String panelModelCode;
+
+ @Column(name = "COMPONENT_CODE")
+ @ApiParam("组件代码")
+ private String componentCode;
+
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelField.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelField.java
new file mode 100644
index 0000000..0743062
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrPanelModelField.java
@@ -0,0 +1,85 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午8:42
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_PANEL_MODEL_FIELD")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Panel与Model字段的关系")
+public class ScrPanelModelField extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -3441031841089357196L;
+
+ @Column(name = "PANEL_MODEL_CODE")
+ @ApiParam("Panel与Model的关系代码")
+ private String panelModelCode;
+
+ @Column(name = "FIELD_CODE")
+ @ApiParam("字段代码")
+ private String fieldCode;
+
+ @Column(name = "IS_FUZZY_SEARCH")
+ @ApiParam("是否支持模糊查询")
+ private Boolean isFuzzySearch;
+
+ @Column(name = "IS_SHOW_IN_NEW")
+ @ApiParam("是否在新增时展示")
+ private Boolean isShowInNew;
+
+ @Column(name = "IS_SHOW_IN_EDIT")
+ @ApiParam("是否在编辑时展示")
+ private Boolean isShowInEdit;
+
+ @Column(name = "IS_ALLOW_SORT")
+ @ApiParam("是否支持排序")
+ private Boolean isAllowSort;
+
+ @Column(name = "FORM_SEQ")
+ @ApiParam("表单顺序")
+ private Integer formSeq;
+
+ @Column(name = "TABLE_SEQ")
+ @ApiParam("表格顺序")
+ private Integer tableSeq;
+
+ @Column(name = "VALIDATION")
+ @ApiParam("校验")
+ private String validation;
+
+ @Column(name = "DICTIONARY")
+ @ApiParam("字典")
+ private String dictionary;
+
+ @Column(name = "IS_VIRTUAL")
+ @ApiParam("是否是虚拟的")
+ private boolean isVirtual;
+
+ @Column(name = "FIELD_NAME")
+ @ApiParam("字段名称")
+ private String fieldName;
+
+ @Column(name = "SPEL_VIRTUAL_VALUE")
+ @ApiParam("SPEL表达式虚拟属性")
+ private String spelVirtualValue;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreen.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreen.java
new file mode 100644
index 0000000..659d988
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreen.java
@@ -0,0 +1,49 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/22 下午7:47
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_SCREEN")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("页面")
+public class ScrScreen extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -6755902986892118213L;
+
+ @Column(name = "SCREEN_CODE")
+ @ApiParam("页面代码")
+ private String screenCode;
+
+ @Column(name = "SCREEN_NAME")
+ @ApiParam("页面名称")
+ private String screenName;
+
+ @Column(name = "SCREEN_VERSION")
+ @ApiParam("页面版本")
+ private String screenVersion;
+
+ @Column(name = "LAYOUT_CODE")
+ @ApiParam("布局代码")
+ private String layoutCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreenLayoutColumn.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreenLayoutColumn.java
new file mode 100644
index 0000000..398c167
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/bean/ScrScreenLayoutColumn.java
@@ -0,0 +1,36 @@
+package cn.estsh.i3plus.pojo.screen.bean;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午5:01
+ * @desc
+ */
+@Entity
+@Table(name = "SCR_SCREEN_LAYOUT_COLUMN")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Api("Screen布局-列")
+public class ScrScreenLayoutColumn extends ScrLayoutColumn implements Serializable {
+ private static final long serialVersionUID = 4084273106415805804L;
+
+ @Column(name = "PANEL_CODE")
+ @ApiParam("Panel代码")
+ private String panelCode;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/Pagination.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/Pagination.java
new file mode 100644
index 0000000..b0842fe
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/Pagination.java
@@ -0,0 +1,20 @@
+package cn.estsh.i3plus.pojo.screen.model;
+
+import lombok.Data;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午1:30
+ * @desc
+ */
+@Data
+public class Pagination {
+
+ private Integer pageSize;
+
+ private Integer totalCount;
+
+ private Integer currentPage;
+
+ private Integer offset;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/PanelModelField.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/PanelModelField.java
new file mode 100644
index 0000000..0debaa9
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/PanelModelField.java
@@ -0,0 +1,23 @@
+package cn.estsh.i3plus.pojo.screen.model;
+
+import cn.estsh.i3plus.pojo.screen.bean.ScrModel;
+import cn.estsh.i3plus.pojo.screen.bean.ScrModelField;
+import cn.estsh.i3plus.pojo.screen.model.component.AbstractComponent;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午1:14
+ * @desc
+ */
+@Data
+public class PanelModelField {
+
+ private ScrModel model;
+
+ private List modelFields;
+
+ private AbstractComponent component;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractComponent.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractComponent.java
new file mode 100644
index 0000000..45ea88f
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractComponent.java
@@ -0,0 +1,26 @@
+package cn.estsh.i3plus.pojo.screen.model.component;
+
+import cn.estsh.i3plus.pojo.screen.bean.ScrEventAction;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:32
+ * @desc
+ */
+@Data
+public abstract class AbstractComponent extends AbstractContainer {
+
+ private static final long serialVersionUID = 6768391193506016205L;
+ private String cssStyle;
+
+ private String name;
+
+ private Integer tabIndex;
+
+ private List eventAction;
+
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractContainer.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractContainer.java
new file mode 100644
index 0000000..7ad09b1
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractContainer.java
@@ -0,0 +1,24 @@
+package cn.estsh.i3plus.pojo.screen.model.component;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import cn.estsh.i3plus.pojo.screen.bean.ScrEventAction;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:27
+ * @desc
+ */
+@Data
+public abstract class AbstractContainer extends BaseBean {
+ private static final long serialVersionUID = 7696523743371800661L;
+
+ private String background;
+
+ private String cssStyle;
+
+ private List eventAction;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractView.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractView.java
new file mode 100644
index 0000000..f0cc014
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractView.java
@@ -0,0 +1,18 @@
+package cn.estsh.i3plus.pojo.screen.model.component;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:30
+ * @desc
+ */
+@Data
+public abstract class AbstractView extends AbstractComponent {
+
+ private String jsEnhance;
+
+ private Map viewTemplateMap;
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractWidget.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractWidget.java
new file mode 100644
index 0000000..bf21cc4
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/AbstractWidget.java
@@ -0,0 +1,15 @@
+package cn.estsh.i3plus.pojo.screen.model.component;
+
+import lombok.Data;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:30
+ * @desc
+ */
+@Data
+public abstract class AbstractWidget extends AbstractComponent {
+
+ private String labelText;
+
+}
diff --git a/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/BarChart.java b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/BarChart.java
new file mode 100644
index 0000000..0af2b92
--- /dev/null
+++ b/modules/i3plus-pojo-screen/src/main/java/cn/estsh/i3plus/pojo/screen/model/component/BarChart.java
@@ -0,0 +1,18 @@
+package cn.estsh.i3plus.pojo.screen.model.component;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author Wynne.Lu
+ * @date 2021/3/11 下午12:31
+ * @desc
+ */
+@Data
+public class BarChart extends Chart {
+
+ private List