diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/OnlineForm.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/po/OnlineForm.java
deleted file mode 100644
index f45ca32..0000000
--- a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/OnlineForm.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.flyfish.framework.domain.po;
-
-import com.flyfish.framework.domain.base.Domain;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * 在线表单
- */
-@Document("online-forms")
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class OnlineForm extends Domain {
-
- // 配置信息
- private String form;
-
-
-}
diff --git a/flyfish-form/pom.xml b/flyfish-form/pom.xml
new file mode 100644
index 0000000..f6fe2f6
--- /dev/null
+++ b/flyfish-form/pom.xml
@@ -0,0 +1,32 @@
+
+
+
+ flyfish-framework
+ com.flyfish.framework
+ 0.0.1-SNAPSHOT
+
+ 4.0.0
+
+ flyfish-form
+
+
+ 8
+ 8
+
+
+
+
+ com.flyfish.framework
+ flyfish-data
+ ${project.version}
+
+
+ com.flyfish.framework
+ flyfish-web
+ ${project.version}
+
+
+
+
diff --git a/flyfish-form/src/main/java/com/flyfish/framework/form/controller/OnlineFormController.java b/flyfish-form/src/main/java/com/flyfish/framework/form/controller/OnlineFormController.java
new file mode 100644
index 0000000..ccd871c
--- /dev/null
+++ b/flyfish-form/src/main/java/com/flyfish/framework/form/controller/OnlineFormController.java
@@ -0,0 +1,17 @@
+package com.flyfish.framework.form.controller;
+
+import com.flyfish.framework.controller.BaseController;
+import com.flyfish.framework.domain.base.NameLikeQo;
+import com.flyfish.framework.form.domain.OnlineForm;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 在线表单接口
+ *
+ * @author wangyu
+ */
+@RestController
+@RequestMapping("online-forms")
+public class OnlineFormController extends BaseController> {
+}
diff --git a/flyfish-form/src/main/java/com/flyfish/framework/form/domain/OnlineForm.java b/flyfish-form/src/main/java/com/flyfish/framework/form/domain/OnlineForm.java
new file mode 100644
index 0000000..889b615
--- /dev/null
+++ b/flyfish-form/src/main/java/com/flyfish/framework/form/domain/OnlineForm.java
@@ -0,0 +1,95 @@
+package com.flyfish.framework.form.domain;
+
+import com.alibaba.fastjson.JSONObject;
+import com.flyfish.framework.domain.base.Domain;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.data.mongodb.core.index.CompoundIndex;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 在线表单
+ */
+@Document("online-forms")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@CompoundIndex(name = "uniq_code", def = "{code: 1}", unique = true)
+public class OnlineForm extends Domain {
+
+ // 表单描述
+ private String description;
+
+ // 表单配置
+ private List form = new ArrayList<>();
+
+ // 分组们,包含标识和名称
+ private List groups = new ArrayList<>();
+
+ // 表单样式,支持default, tabs, step
+ private String type = "default";
+
+ // 宽度
+ private Integer width;
+
+ // 默认布局
+ private JSONObject layout = new JSONObject();
+
+ @Data
+ public static class FormItem {
+
+ // 表单编码,存储数据的key
+ private String code;
+ // 显示名称,这个名称是输入框的label
+ private String title = "";
+ // 组件,标识使用的组件
+ private String component;
+ // 占据栅格,用于表单布局
+ private Integer span = 12;
+ // 栅格偏移,布局需要
+ private Integer offset = 0;
+ // 栅格布局
+ private JSONObject grid = new JSONObject();
+ // 儿子,手动指定儿子们
+ private String children;
+ // 条件,用于匹配条件以显示与否
+ private JSONObject condition;
+ // 校验规则,允许多个
+ private List validation;
+ // 选项,用于表单的额外选项,支持antd vue的所有逻辑
+ private JSONObject options = new JSONObject();
+ // 组件属性,支持对象
+ private JSONObject props;
+ // 表单联动,key为表单组件的属性,包含两种模式,condition是激活条件,value是激活的值
+ private JSONObject links;
+ // 事件支持
+ private JSONObject events;
+ // 映射支持
+ private JSONObject mapping;
+ // 异步的props
+ private JSONObject delay;
+ // 分组
+ private String group;
+ // 新增,增加反馈状态
+ private Boolean feedback = false;
+ // 新增,增加额外描述
+ private String extra;
+ // 新增,额外的复杂帮助,在tooltip弹出
+ private String tips;
+ }
+
+ /**
+ * 表单分组
+ */
+ @Data
+ public static class FormGroup {
+
+ // 分组名称
+ private String name;
+
+ // 分组code
+ private String code;
+ }
+}
diff --git a/flyfish-form/src/main/java/com/flyfish/framework/form/repository/OnlineFormRepository.java b/flyfish-form/src/main/java/com/flyfish/framework/form/repository/OnlineFormRepository.java
new file mode 100644
index 0000000..12d8c34
--- /dev/null
+++ b/flyfish-form/src/main/java/com/flyfish/framework/form/repository/OnlineFormRepository.java
@@ -0,0 +1,10 @@
+package com.flyfish.framework.form.repository;
+
+import com.flyfish.framework.form.domain.OnlineForm;
+import com.flyfish.framework.repository.DefaultRepository;
+
+/**
+ * 在线表单
+ */
+public interface OnlineFormRepository extends DefaultRepository {
+}
diff --git a/flyfish-form/src/main/java/com/flyfish/framework/form/service/OnlineFormService.java b/flyfish-form/src/main/java/com/flyfish/framework/form/service/OnlineFormService.java
new file mode 100644
index 0000000..847d2eb
--- /dev/null
+++ b/flyfish-form/src/main/java/com/flyfish/framework/form/service/OnlineFormService.java
@@ -0,0 +1,13 @@
+package com.flyfish.framework.form.service;
+
+import com.flyfish.framework.form.domain.OnlineForm;
+import com.flyfish.framework.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 在线表单服务
+ * @author wangyu
+ */
+@Service
+public class OnlineFormService extends BaseServiceImpl {
+}
diff --git a/pom.xml b/pom.xml
index 08fd9a1..cef8f62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,7 @@
flyfish-file
flyfish-logging
flyfish-dict
+ flyfish-form