diff --git a/zero-erp/src/main/resources/plugin/erp/oob/data/erp.wf.view-oa.xlsx b/zero-erp/src/main/resources/plugin/erp/oob/data/erp.wf.view-oa.xlsx
index ada09cd2b76bbb785263212d5d1f45f642c8597d..eb65fb5130dcc5a21e1362af4a24c736dabc4ab3 100644
Binary files a/zero-erp/src/main/resources/plugin/erp/oob/data/erp.wf.view-oa.xlsx and b/zero-erp/src/main/resources/plugin/erp/oob/data/erp.wf.view-oa.xlsx differ
diff --git a/zero-wf/src/main/modulat/io/vertx/mod/workflow/plugin/query/HQrHistory.java b/zero-wf/src/main/modulat/io/vertx/mod/workflow/plugin/query/HQrHistory.java
new file mode 100644
index 0000000000000000000000000000000000000000..95d8c3cafd79e0caf6b32e0fed188e303fe5d61f
--- /dev/null
+++ b/zero-wf/src/main/modulat/io/vertx/mod/workflow/plugin/query/HQrHistory.java
@@ -0,0 +1,41 @@
+package io.vertx.mod.workflow.plugin.query;
+
+import io.horizon.eon.VString;
+import io.horizon.specification.action.HQR;
+import io.horizon.spi.business.ExUser;
+import io.vertx.core.Future;
+import io.vertx.core.json.JsonObject;
+import io.vertx.up.eon.KName;
+import io.vertx.up.unity.Ux;
+import io.vertx.up.util.Ut;
+
+/**
+ * 本组专用查询组件
+ *
+ * @author Lang
+ */
+public class HQrHistory implements HQR {
+ /*
+ * openGroup 包含本组
+ */
+ @Override
+ public Future compile(final JsonObject data, final JsonObject qr) {
+ final String userKey = Ut.valueString(data, KName.USER);
+ // 默认条件: openGroup is null
+ final JsonObject defaultQr = Ux.whereAnd()
+ .put("openGroup,n", VString.EMPTY);
+
+ return Ux.channel(ExUser.class, () -> defaultQr, stub -> stub.userGroup(userKey).compose(groups -> {
+ // groups information
+ if (groups.isEmpty()) {
+ return Ux.future(defaultQr);
+ }
+ final JsonObject combineQr = new JsonObject();
+ combineQr.put("$DFT$", defaultQr);
+ // openGroup
+ combineQr.put("openGroup,i", groups);
+
+ return Ux.future(combineQr);
+ }));
+ }
+}