diff --git a/src/main/java/cn/stylefeng/guns/config/web/BeetlConfiguration.java b/src/main/java/cn/stylefeng/guns/config/web/BeetlConfiguration.java index ec136ee4..0fbb4f98 100644 --- a/src/main/java/cn/stylefeng/guns/config/web/BeetlConfiguration.java +++ b/src/main/java/cn/stylefeng/guns/config/web/BeetlConfiguration.java @@ -68,6 +68,7 @@ public class BeetlConfiguration { Properties properties = new Properties(); properties.setProperty("DELIMITER_STATEMENT_START", BeetlConfigExpander.getDelimiterStatementStart()); properties.setProperty("DELIMITER_STATEMENT_END", BeetlConfigExpander.getDelimiterStatementEnd()); + properties.setProperty("HTML_TAG_FLAG", BeetlConfigExpander.getHtmlTagFlag()); properties.setProperty("RESOURCE.tagRoot", BeetlConfigExpander.getResourceTagRoot()); properties.setProperty("RESOURCE.tagSuffix", BeetlConfigExpander.getResourceTagSuffix()); properties.setProperty("RESOURCE.autoCheck", BeetlConfigExpander.getResourceAutoCheck()); diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/CustomBeetlGroupUtilConfiguration.java b/src/main/java/cn/stylefeng/guns/core/beetl/CustomBeetlGroupUtilConfiguration.java index 34cc0f38..4a35fd8c 100644 --- a/src/main/java/cn/stylefeng/guns/core/beetl/CustomBeetlGroupUtilConfiguration.java +++ b/src/main/java/cn/stylefeng/guns/core/beetl/CustomBeetlGroupUtilConfiguration.java @@ -1,6 +1,9 @@ package cn.stylefeng.guns.core.beetl; import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.guns.core.beetl.tag.SysDictCheckBoxTag; +import cn.stylefeng.guns.core.beetl.tag.SysDictRadioTag; +import cn.stylefeng.guns.core.beetl.tag.SysDictSelectTag; import cn.stylefeng.roses.kernel.auth.api.LoginUserApi; import cn.stylefeng.roses.kernel.system.expander.SystemConfigExpander; import org.beetl.ext.spring.BeetlGroupUtilConfiguration; @@ -31,6 +34,13 @@ public class CustomBeetlGroupUtilConfiguration extends BeetlGroupUtilConfigurati // 获取基本信息的工具 groupTemplate.registerFunctionPackage("constants", SystemConfigExpander.class); + // 下拉选字典 + groupTemplate.registerTag("dict_select", SysDictSelectTag.class); + // 单选字典 + groupTemplate.registerTag("dict_radio", SysDictRadioTag.class); + // 多选字典 + groupTemplate.registerTag("dict_checkbox", SysDictCheckBoxTag.class); + // todo 多语言 // groupTemplate.registerFunctionPackage("lang", new UserTranslationContext()); } diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/consts/BeetlConstants.java b/src/main/java/cn/stylefeng/guns/core/beetl/consts/BeetlConstants.java index 14316a8f..13f7dc7a 100644 --- a/src/main/java/cn/stylefeng/guns/core/beetl/consts/BeetlConstants.java +++ b/src/main/java/cn/stylefeng/guns/core/beetl/consts/BeetlConstants.java @@ -37,4 +37,10 @@ public interface BeetlConstants { */ String DEFAULT_RESOURCE_AUTO_CHECK = "false"; + /** + * 默认beetl 支持HTML标签 + *
+ * beetl默认的是 '#'
+ */
+ String DEFAULT_HTML_TAG_FLAG = "tag:";
}
diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/consts/DictTagConstants.java b/src/main/java/cn/stylefeng/guns/core/beetl/consts/DictTagConstants.java
new file mode 100644
index 00000000..75b0da28
--- /dev/null
+++ b/src/main/java/cn/stylefeng/guns/core/beetl/consts/DictTagConstants.java
@@ -0,0 +1,78 @@
+package cn.stylefeng.guns.core.beetl.consts;
+
+/**
+ * 字典html属性常量
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 21:06
+ */
+
+public interface DictTagConstants {
+
+ /**
+ * html组件 id
+ */
+ String ID = "id";
+
+ /**
+ * html组件 name
+ */
+ String NAME = "name";
+
+ /**
+ * html组件 type
+ */
+ String TYPE = "type";
+
+ /**
+ * 字典类型编码
+ */
+ String DICT_TYPE_CODE = "dictTypeCode";
+
+ /**
+ * layui元素的风格
+ */
+ String LAY_SKIN = "laySkin";
+
+ /**
+ * layui事件过滤器
+ */
+ String LAY_FILTER = "layFilter";
+
+ /**
+ * layui校验
+ */
+ String LAY_VERIFY = "layVerify";
+
+ /**
+ * select控件提示name
+ */
+ String HEAD_NAME = "headName";
+
+ /**
+ * select控件提示value
+ */
+ String HEAD_VALUE = "headValue";
+
+ /**
+ * select控件提示类型::1-全部,2-请选择
+ */
+ String HEAD_TYPE = "headType";
+
+ /**
+ * 默认值
+ */
+ String DEFAULT_VALUE = "defaultValue";
+
+ /**
+ * 工作流相关
+ */
+ String WORKFLOW_FORM = "workflowForm";
+
+ /**
+ * 工作流相关
+ */
+ String ITEM_NAME = "itemName";
+
+
+}
diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/enums/SelectTagHeadTypeEnum.java b/src/main/java/cn/stylefeng/guns/core/beetl/enums/SelectTagHeadTypeEnum.java
new file mode 100644
index 00000000..e16f4178
--- /dev/null
+++ b/src/main/java/cn/stylefeng/guns/core/beetl/enums/SelectTagHeadTypeEnum.java
@@ -0,0 +1,67 @@
+package cn.stylefeng.guns.core.beetl.enums;
+
+import lombok.Getter;
+
+/**
+ * 字典下拉选头类型
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 20:36
+ */
+@Getter
+public enum SelectTagHeadTypeEnum {
+
+ /**
+ * 全部
+ */
+ ALL("1", "全部"),
+
+ /**
+ * 请选择
+ */
+ SELECT("2", "请选择");
+
+ private final String code;
+
+ private final String name;
+
+ SelectTagHeadTypeEnum(String code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ /**
+ * 根据code获取枚举
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 20:36
+ */
+ public static SelectTagHeadTypeEnum codeToEnum(String code) {
+ if (null != code) {
+ for (SelectTagHeadTypeEnum e : SelectTagHeadTypeEnum.values()) {
+ if (e.getCode().equals(code)) {
+ return e;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 编码转化成中文含义
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 20:36
+ */
+ public static String codeToName(String code) {
+ if (null != code) {
+ for (SelectTagHeadTypeEnum e : SelectTagHeadTypeEnum.values()) {
+ if (e.getCode().equals(code)) {
+ return e.getName();
+ }
+ }
+ }
+ return "未知";
+ }
+
+}
diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/expander/BeetlConfigExpander.java b/src/main/java/cn/stylefeng/guns/core/beetl/expander/BeetlConfigExpander.java
index 812d0e7f..82a96ab3 100644
--- a/src/main/java/cn/stylefeng/guns/core/beetl/expander/BeetlConfigExpander.java
+++ b/src/main/java/cn/stylefeng/guns/core/beetl/expander/BeetlConfigExpander.java
@@ -60,5 +60,14 @@ public class BeetlConfigExpander {
public static String getResourceAutoCheck() {
return ConfigContext.me().getSysConfigValueWithDefault("RESOURCE_AUTO_CHECK", String.class, BeetlConstants.DEFAULT_RESOURCE_AUTO_CHECK);
}
+ /**
+ * 自定义支持HTML标签
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 21:06
+ */
+ public static String getHtmlTagFlag() {
+ return ConfigContext.me().getSysConfigValueWithDefault("HTML_TAG_FLAG", String.class, BeetlConstants.DEFAULT_HTML_TAG_FLAG);
+ }
}
diff --git a/src/main/java/cn/stylefeng/guns/core/beetl/tag/SysDictBaseTag.java b/src/main/java/cn/stylefeng/guns/core/beetl/tag/SysDictBaseTag.java
new file mode 100644
index 00000000..a5daaf5f
--- /dev/null
+++ b/src/main/java/cn/stylefeng/guns/core/beetl/tag/SysDictBaseTag.java
@@ -0,0 +1,125 @@
+package cn.stylefeng.guns.core.beetl.tag;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import cn.stylefeng.guns.core.beetl.consts.DictTagConstants;
+import cn.stylefeng.roses.kernel.dict.modular.service.DictService;
+import cn.stylefeng.roses.kernel.dict.modular.service.DictTypeService;
+import lombok.Data;
+import org.beetl.core.tag.GeneralVarTagBinding;
+
+import java.util.Map;
+
+/**
+ * beetl字典标签基类
+ *
+ * @author liuhanqing
+ * @date 2021/1/16 18:45
+ */
+@Data
+public class SysDictBaseTag extends GeneralVarTagBinding {
+ public DictService dictService = SpringUtil.getBean(DictService.class);
+ public DictTypeService dictTypeService = SpringUtil.getBean(DictTypeService.class);
+ /**
+ * html组件 id
+ */
+ public String id;
+ /**
+ * html组件 name
+ */
+ public String name;
+ /**
+ * html组件 type
+ */
+ public String type;
+ /**
+ * 字典类型编码
+ */
+ public String dictTypeCode;
+ /**
+ * layui元素的风格
+ */
+ public String laySkin;
+ /**
+ * layui事件过滤器
+ */
+ public String layFilter;
+ /**
+ * layui校验
+ */
+ public String layVerify;
+ /**
+ * select控件提示name
+ */
+ public String headName;
+ /**
+ * select控件提示value
+ */
+ public String headValue;
+ /**
+ * select控件提示类型::1-全部,2-请选择
+ */
+ public String headType;
+ /**
+ * 默认值
+ */
+ public String defaultValue;
+ /**
+ * 工作流相关
+ */
+ public String workflowForm;
+ /**
+ * 工作流相关
+ */
+ public String itemName;
+
+ public void initAttr() {
+ Map