From 665ed1f582e10584978818e39bd54b393e463dbb Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Mon, 9 Nov 2026 08:33:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=97=A5=E7=A5=9D=E7=A6=8F=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/base/sms/impl/SmsServiceImpl.java | 3 - .../service/impl/ClubUserJoinServiceImpl.java | 17 +- .../InclusiveBenefitController.java | 82 +++++++ .../service/InclusiveBenefitService.java | 34 +++ .../impl/InclusiveBenefitServiceImpl.java | 117 ++++++++- .../impl/DifficultSubsidyServiceImpl.java | 59 +++++ .../service/impl/UserBirthdayServiceImpl.java | 57 +++-- .../views/layouts/v4/home/index.html | 5 + .../views/platform/zhgh/inclusive/index.html | 232 +++++++++++++++++- 9 files changed, 569 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/budwk/app/base/sms/impl/SmsServiceImpl.java b/src/main/java/com/budwk/app/base/sms/impl/SmsServiceImpl.java index 3311355..03de1d1 100644 --- a/src/main/java/com/budwk/app/base/sms/impl/SmsServiceImpl.java +++ b/src/main/java/com/budwk/app/base/sms/impl/SmsServiceImpl.java @@ -80,9 +80,6 @@ public class SmsServiceImpl implements SmsService { log.error("【log】短信配置未开启"); throw new RuntimeException("短信配置未开启"); } - if (!conf.getBoolean("msg.platform.enabled", false)) { - throw new RuntimeException("短信配置未开启"); - } if (StrUtil.isBlank(loginname) || StrUtil.isBlank(content)) { log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); diff --git a/src/main/java/com/budwk/app/zhgh/club/service/impl/ClubUserJoinServiceImpl.java b/src/main/java/com/budwk/app/zhgh/club/service/impl/ClubUserJoinServiceImpl.java index befd181..9a29cf1 100644 --- a/src/main/java/com/budwk/app/zhgh/club/service/impl/ClubUserJoinServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/club/service/impl/ClubUserJoinServiceImpl.java @@ -18,17 +18,10 @@ import java.util.List; @IocBean(args = {"refer:dao"}) public class ClubUserJoinServiceImpl extends BaseServiceImpl implements ClubUserJoinService { - private static final List ALLOW_JOIN_PERSON_TYPES = List.of( - "教职工", - "未起薪人员", - "教职工新入会", - "教职工其他", - "劳动服务公司", - "后勤聘用人员", - "退休人员[一]", - "退休人员[二]", - "校聘劳务派遣全额" - ); + /** + * 在职状态为在岗的口径,与项目其他模块保持一致。 + */ + private static final List ON_JOB_USER_STATES = List.of("在职", "在岗"); public ClubUserJoinServiceImpl(Dao dao) { super(dao); @@ -43,7 +36,7 @@ public class ClubUserJoinServiceImpl extends BaseServiceImpl impl if (user.getMember() == null || user.getMember() != 1) { return "抱歉,您不满足入会的条件!"; } - if (StrUtil.isBlank(user.getPersonType()) || !ALLOW_JOIN_PERSON_TYPES.contains(user.getPersonType())) { + if (StrUtil.isBlank(user.getUserState()) || !ON_JOB_USER_STATES.contains(user.getUserState())) { return "抱歉,您不满足入会的条件!"; } return null; diff --git a/src/main/java/com/budwk/app/zhgh/inclusive/controller/InclusiveBenefitController.java b/src/main/java/com/budwk/app/zhgh/inclusive/controller/InclusiveBenefitController.java index 99acc5b..a80b9c7 100644 --- a/src/main/java/com/budwk/app/zhgh/inclusive/controller/InclusiveBenefitController.java +++ b/src/main/java/com/budwk/app/zhgh/inclusive/controller/InclusiveBenefitController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.inclusive.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.result.Result; import com.budwk.app.zhgh.inclusive.model.InclusiveBenefit; @@ -45,6 +46,87 @@ public class InclusiveBenefitController { return Result.success(inclusiveBenefitService.findVO(id, false)); } + /** + * 新增幸福工荟标签。 + * @param name 标签显示名称 + * @param code 标签编码,最多 50 个字符 + * @return Result,code 为 0 表示成功,msg 为处理提示,data 为空 + */ + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"inclusive.benefit", "sys.manager.dict.add"}, mode = SaMode.AND) + public Result addTagType(@Param("name") String name, @Param("code") String code) { + if (StrUtil.isBlank(name) || StrUtil.isBlank(code)) { + return Result.error("标签名称和编码不能为空"); + } + inclusiveBenefitService.addTagType(name, code); + return Result.success(); + } + + /** + * 修改标签名称,编码保持不变。 + * @param id 标签字典项 ID + * @param name 新的标签显示名称 + * @return Result,code 为 0 表示成功,msg 为处理提示,data 为空 + */ + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"inclusive.benefit", "sys.manager.dict.edit"}, mode = SaMode.AND) + public Result updateTagTypeName(@Param("id") String id, @Param("name") String name) { + if (StrUtil.isBlank(id) || StrUtil.isBlank(name)) { + return Result.error("标签 ID 和名称不能为空"); + } + inclusiveBenefitService.updateTagTypeName(id, name); + return Result.success(); + } + + /** + * 启用或停用标签。 + * @param id 标签字典项 ID + * @param disabled true 表示停用,false 表示启用 + * @return Result,code 为 0 表示成功,msg 为处理提示,data 为空 + */ + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"inclusive.benefit", "sys.manager.dict.edit"}, mode = SaMode.AND) + public Result updateTagTypeDisabled(@Param("id") String id, @Param("disabled") Boolean disabled) { + if (StrUtil.isBlank(id) || disabled == null) { + return Result.error("标签 ID 和启用状态不能为空"); + } + inclusiveBenefitService.updateTagTypeDisabled(id, disabled); + return Result.success(); + } + + /** + * 查询标签的引用数量,用于删除前提示。 + * @param id 标签字典项 ID + * @return Result,data 为引用该标签编码的记录数量,包含已删除记录 + */ + @At + @SaCheckPermission(value = {"inclusive.benefit", "sys.manager.dict.delete"}, mode = SaMode.AND) + public Result countTagTypeUsage(@Param("id") String id) { + if (StrUtil.isBlank(id)) { + return Result.error("标签 ID 不能为空"); + } + return Result.success(inclusiveBenefitService.countTagTypeUsage(id)); + } + + /** + * 删除标签字典项;前端需先提示已引用记录的影响。 + * @param id 标签字典项 ID + * @return Result,code 为 0 表示成功,msg 为处理提示,data 为空 + */ + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"inclusive.benefit", "sys.manager.dict.delete"}, mode = SaMode.AND) + public Result deleteTagType(@Param("id") String id) { + if (StrUtil.isBlank(id)) { + return Result.error("标签 ID 不能为空"); + } + inclusiveBenefitService.deleteTagType(id); + return Result.success(); + } + @At @Aop(TransAop.READ_COMMITTED) @SaCheckPermission("inclusive.benefit") diff --git a/src/main/java/com/budwk/app/zhgh/inclusive/service/InclusiveBenefitService.java b/src/main/java/com/budwk/app/zhgh/inclusive/service/InclusiveBenefitService.java index 84f96d1..0e407a7 100644 --- a/src/main/java/com/budwk/app/zhgh/inclusive/service/InclusiveBenefitService.java +++ b/src/main/java/com/budwk/app/zhgh/inclusive/service/InclusiveBenefitService.java @@ -20,6 +20,40 @@ public interface InclusiveBenefitService extends BaseService { List tagOptions(); + /** + * 在幸福工荟标签类型字典下新增启用的标签。 + * @param name 标签显示名称 + * @param code 标签编码,供幸福工荟记录保存 + */ + void addTagType(String name, String code); + + /** + * 修改标签显示名称,保留已有编码和业务记录的关联。 + * @param id 标签字典项 ID + * @param name 新的显示名称 + */ + void updateTagTypeName(String id, String name); + + /** + * 切换标签是否停用;停用标签不再供新内容选择。 + * @param id 标签字典项 ID + * @param disabled true 表示停用,false 表示启用 + */ + void updateTagTypeDisabled(String id, boolean disabled); + + /** + * 统计引用标签编码的幸福工荟记录,包含已删除记录。 + * @param id 标签字典项 ID + * @return 引用该标签的记录数量 + */ + int countTagTypeUsage(String id); + + /** + * 删除指定标签字典项。 + * @param id 标签字典项 ID + */ + void deleteTagType(String id); + void saveBenefit(InclusiveBenefit benefit, Integer status); void updateStatus(String id, Integer status); diff --git a/src/main/java/com/budwk/app/zhgh/inclusive/service/impl/InclusiveBenefitServiceImpl.java b/src/main/java/com/budwk/app/zhgh/inclusive/service/impl/InclusiveBenefitServiceImpl.java index ad55d39..11ab548 100644 --- a/src/main/java/com/budwk/app/zhgh/inclusive/service/impl/InclusiveBenefitServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/inclusive/service/impl/InclusiveBenefitServiceImpl.java @@ -2,16 +2,21 @@ package com.budwk.app.zhgh.inclusive.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.sys.models.Sys_dict; +import com.budwk.app.sys.services.SysDictService; import com.budwk.app.zhgh.inclusive.model.InclusiveBenefit; import com.budwk.app.zhgh.inclusive.param.InclusiveBenefitPageForm; import com.budwk.app.zhgh.inclusive.service.InclusiveBenefitService; import com.budwk.app.zhgh.inclusive.vo.InclusiveBenefitVO; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; import org.nutz.ioc.loader.annotation.IocBean; @@ -29,6 +34,9 @@ public class InclusiveBenefitServiceImpl extends BaseServiceImpl 100) { + throw new BaseException("标签名称不能为空且不能超过 100 个字符"); + } + if (StrUtil.isBlank(tagCode) || tagCode.length() > 50) { + throw new BaseException("标签编码不能为空且不能超过 50 个字符"); + } + Sys_dict parent = requireTagTypeParent(); + // 公共字典按编码查找节点,编码重复会使其他字典或当前标签指向错误节点。 + if (sysDictService.count(Cnd.where("code", "=", tagCode)) > 0) { + throw new BaseException("标签编码已存在,请使用其他编码"); + } + Sys_dict tag = new Sys_dict(); + tag.setName(tagName); + tag.setCode(tagCode); + tag.setDisabled(false); + sysDictService.save(tag, parent.getId()); + sysDictService.clearCache(); + } + + /** 只修改名称,保留编码以免已有幸福工荟记录失去标签关联。 */ + @Override + @Aop(TransAop.READ_COMMITTED) + public void updateTagTypeName(String id, String name) { + String tagName = StrUtil.trim(name); + if (StrUtil.isBlank(tagName) || tagName.length() > 100) { + throw new BaseException("标签名称不能为空且不能超过 100 个字符"); + } + Sys_dict tag = requireTagType(id); + sysDictService.update(Chain.make("name", tagName), Cnd.where("id", "=", tag.getId()) + .and("parentId", "=", tag.getParentId())); + sysDictService.clearCache(); + } + + /** 停用只影响后续可选项,历史记录仍通过原编码读取标签名称。 */ + @Override + @Aop(TransAop.READ_COMMITTED) + public void updateTagTypeDisabled(String id, boolean disabled) { + Sys_dict tag = requireTagType(id); + sysDictService.update(Chain.make("disabled", disabled), Cnd.where("id", "=", tag.getId()) + .and("parentId", "=", tag.getParentId())); + sysDictService.clearCache(); + } + + /** 返回引用该标签的记录数,包括逻辑删除的记录,供删除前告知操作人。 */ + @Override + public int countTagTypeUsage(String id) { + Sys_dict tag = requireTagType(id); + return count(Cnd.where("tagType", "=", tag.getCode())); + } + + /** 删除前确认标签属于当前字典,避免级联删除其他子字典。 */ + @Override + @Aop(TransAop.READ_COMMITTED) + public void deleteTagType(String id) { + Sys_dict tag = requireTagType(id); + if (sysDictService.count(Cnd.where("parentId", "=", tag.getId())) > 0) { + throw new BaseException("该标签下存在子字典,请先在字典管理中处理"); + } + // 标签只删除自身,不能根据路径级联删除其他字典项。 + int deleted = dao().clear(Sys_dict.class, Cnd.where("id", "=", tag.getId()) + .and("parentId", "=", tag.getParentId())); + if (deleted == 0) { + throw new BaseException("标签不存在或已被删除"); + } + if (sysDictService.count(Cnd.where("parentId", "=", tag.getParentId())) == 0) { + sysDictService.update(Chain.make("hasChildren", false), Cnd.where("id", "=", tag.getParentId())); + } + sysDictService.clearCache(); + } + + /** 找不到父字典时明确提示,避免把标签误加到其他字典。 */ + private Sys_dict requireTagTypeParent() { + Sys_dict parent = sysDictService.fetch(Cnd.where("code", "=", TAG_DICT_CODE).and("delFlag", "=", false)); + if (parent == null) { + throw new BaseException("标签类型父字典不存在,请先在系统字典中维护"); + } + return parent; + } + + /** 根据 ID 校验标签必须是当前父字典的直接子项。 */ + private Sys_dict requireTagType(String id) { + if (StrUtil.isBlank(id)) { + throw new BaseException("标签 ID 不能为空"); + } + Sys_dict parent = requireTagTypeParent(); + Sys_dict tag = sysDictService.fetch(Cnd.where("id", "=", id) + .and("parentId", "=", parent.getId()).and("delFlag", "=", false)); + if (tag == null) { + throw new BaseException("标签不存在或不属于幸福工荟标签类型"); + } + return tag; + } + @Override public void saveBenefit(InclusiveBenefit benefit, Integer status) { InclusiveBenefit target; @@ -154,8 +261,14 @@ public class InclusiveBenefitServiceImpl extends BaseServiceImpl getTagNameMap() { - List options = tagOptions(); - return options.stream().collect(Collectors.toMap(option -> option.getString("value"), option -> option.getString("text"))); + Sys_dict parent = dao().fetch(Sys_dict.class, Cnd.where("code", "=", TAG_DICT_CODE).and("delFlag", "=", false)); + if (parent == null) { + return Collections.emptyMap(); + } + // 历史记录仍需展示已停用标签;仅用于下拉选择的 tagOptions 保持过滤停用项。 + return dao().query(Sys_dict.class, Cnd.where("parentId", "=", parent.getId()) + .and("delFlag", "=", false).asc("location")) + .stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName)); } private String getSexLimitName(Integer sexLimit) { diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficultSubsidy/service/impl/DifficultSubsidyServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficultSubsidy/service/impl/DifficultSubsidyServiceImpl.java index f84b29d..9a885da 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficultSubsidy/service/impl/DifficultSubsidyServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficultSubsidy/service/impl/DifficultSubsidyServiceImpl.java @@ -65,10 +65,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import java.util.zip.ZipEntry; @@ -590,6 +592,7 @@ public class DifficultSubsidyServiceImpl extends BaseServiceImpl usedNames = new HashSet<>(); + putAttachmentFiles(zip, folder, usedNames, apply.getApplyFile(), "纸质申请表"); + putAttachmentFiles(zip, folder, usedNames, apply.getFiles(), "证明材料"); + } + + private void putAttachmentFiles(ZipOutputStream zip, String folder, Set usedNames, + List files, String subFolder) throws IOException { + if (files == null) { + return; + } + for (JSONObject file : files) { + String id = extractFileId(file); + if (Strings.isBlank(id)) { + continue; + } + byte[] bytes; + try { + bytes = sysFileService.download(id); + } catch (Exception ignored) { + // 单个历史附件无法读取时不影响同一申请中其他附件的导出。 + continue; + } + if (bytes == null || bytes.length == 0) { + continue; + } + String fileName = StrUtil.blankToDefault(file.getStr("name"), + StrUtil.blankToDefault(file.getStr("filename"), subFolder)); + putZipEntry(zip, uniqueZipEntryName(usedNames, folder + subFolder + "/" + safeName(fileName)), bytes); + } + } + + /** + * zip 内不允许重复条目,同名文件追加序号区分。 + */ + private String uniqueZipEntryName(Set usedNames, String entryName) { + String baseName = entryName; + String extension = ""; + int dotIndex = entryName.lastIndexOf('.'); + if (dotIndex > entryName.lastIndexOf('/')) { + baseName = entryName.substring(0, dotIndex); + extension = entryName.substring(dotIndex); + } + String candidate = entryName; + int index = 2; + while (!usedNames.add(candidate)) { + candidate = baseName + "(" + index + ")" + extension; + index++; + } + return candidate; + } + /** * 计算当前申请的补助金额,并在返回的住院记录中写入逐条测算结果。 */ diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/birthday/service/impl/UserBirthdayServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/birthday/service/impl/UserBirthdayServiceImpl.java index ac091e3..a1d47e3 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/birthday/service/impl/UserBirthdayServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/birthday/service/impl/UserBirthdayServiceImpl.java @@ -38,7 +38,9 @@ import java.net.URI; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @IocBean(args = {"refer:dao"}) @@ -227,7 +229,7 @@ public class UserBirthdayServiceImpl extends BaseServiceImpl implement if (request != null) { String requestUrl = request.getRequestURL().toString(); return requestUrl.substring(0, requestUrl.length() - request.getRequestURI().length()) - + request.getContextPath(); + + request.getContextPath(); } // 定时任务没有请求上下文;本机地址未配置端口时使用项目监听端口。 @@ -239,7 +241,7 @@ public class UserBirthdayServiceImpl extends BaseServiceImpl implement int port = conf.getInt("server.port", defaultPort); if (port != defaultPort) { baseUrl = domain.getScheme() + "://" + domain.getRawAuthority() + ":" + port - + StrUtil.blankToDefault(domain.getRawPath(), ""); + + StrUtil.blankToDefault(domain.getRawPath(), ""); } } String contextPath = StrUtil.removeSuffix(StrUtil.blankToDefault(Globals.AppBase, ""), "/"); @@ -250,9 +252,18 @@ public class UserBirthdayServiceImpl extends BaseServiceImpl implement } /** - * 将生日消息写入当前项目消息中心并生成发送记录。 - * Sys_msg.url 用于站内消息点击,正文中的完整链接供外部短信/微信渠道访问。 + * 按接收人姓名生成生日消息,供单人、批量及定时发送共用,并记录实际发送的正文。 + * Sys_msg.url 用于站内消息点击,完整链接另存于生日发送记录。 + * + * @param loginNames 接收人工号集合,空工号会过滤,重复工号只发送一次 + * @param title 消息标题 + * @param content 未拼接接收人称呼的祝福正文 + * @param pushBy 推送人用户ID,定时发送为 system + * @param pushByName 推送人姓名,定时发送为“系统推送” + * @param pushType 手动推送或系统推送 + * @return 提交发送的接收人数,不代表外部渠道实际送达人数 */ + @Aop(TransAop.READ_COMMITTED) private int sendMessages(List loginNames, String title, String content, String pushBy, String pushByName, String pushType) { List recipients = loginNames == null ? List.of() : loginNames.stream() @@ -263,25 +274,41 @@ public class UserBirthdayServiceImpl extends BaseServiceImpl implement return 0; } + // 批量读取接收人的姓名,不依赖登录会话,定时任务也使用同一份人员资料。 + Sql recipientSql = Sqls.create("SELECT loginname, username FROM vw_user $condition"); + recipientSql.setCondition(Cnd.where("loginname", "in", recipients)); + Map recipientNames = new HashMap<>(); + for (NutMap user : listMap(recipientSql)) { + recipientNames.putIfAbsent(user.getString("loginname"), + StrUtil.blankToDefault(user.getString("username"), "").trim()); + } + UserBirthdayConfig config = getConfig(); +// String pagePath = "/platform/staffManage/birthday/manage/h5"; String pagePath = "/platform/staffManage/birthday/manage/h5"; if (StrUtil.isNotBlank(config.getBirthdayUrl())) { pagePath = pagePath + "?id=" + URLEncoder.encode(config.getBirthdayUrl(), StandardCharsets.UTF_8); } String fullLink = getBirthdayBaseUrl() + pagePath; - Sys_msg message = new Sys_msg(); - message.setTitle(title); - message.setNote(content + "\n" + fullLink); - message.setUrl(pagePath); - message.setType("user"); - message.setSendType("show"); - message.setSendAt(Times.getTS()); - message.setCreatedBy(pushBy); - sysMsgService.saveMsg(message, recipients.toArray(String[]::new), true); + for (String loginName : recipients) { + // 姓名缺失时使用“亲爱的老师,”;每人独立创建消息,避免批量发送时串用称呼。 + String personalizedContent = "亲爱的" + recipientNames.getOrDefault(loginName, "") + + "老师," + content; + Sys_msg message = new Sys_msg(); + message.setTitle(title); + message.setNote(personalizedContent); + message.setUrl(pagePath); + message.setType("user"); + message.setSendType("show"); + message.setSendAt(Times.getTS()); + message.setCreatedBy(pushBy); + sysMsgService.saveMsg(message, new String[]{loginName}, true); - userBirthdayMsgLogService.insertLogs(recipients, title, content, fullLink, - pushBy, pushByName, pushType); + // 日志正文与当前接收人的站内消息、外部通知保持一致。 + userBirthdayMsgLogService.insertLogs(List.of(loginName), title, personalizedContent, fullLink, + pushBy, pushByName, pushType); + } return recipients.size(); } } diff --git a/src/main/resources/views/layouts/v4/home/index.html b/src/main/resources/views/layouts/v4/home/index.html index ae37fc1..aafa23e 100644 --- a/src/main/resources/views/layouts/v4/home/index.html +++ b/src/main/resources/views/layouts/v4/home/index.html @@ -93,6 +93,11 @@ layout("/layouts/v4/baseLayout.html"){ font-weight: 500; } + /* 仅隐藏首页顶部的流程中心入口 */ + .v4-nav-item[href="/platform/v4/serv"] { + display: none; + } +
diff --git a/src/main/resources/views/platform/zhgh/inclusive/index.html b/src/main/resources/views/platform/zhgh/inclusive/index.html index 57df336..d54c5b1 100644 --- a/src/main/resources/views/platform/zhgh/inclusive/index.html +++ b/src/main/resources/views/platform/zhgh/inclusive/index.html @@ -50,7 +50,10 @@ layout("/layouts/platform.html"){ - +
+ + 设置 +
全部开放男性女性 @@ -62,14 +65,69 @@ layout("/layouts/platform.html"){ + +
管理标签后,表单下拉选项会同步更新
+
+ 新增标签 +
+ + + + + + + + + + +
+ 仅启用的标签显示在下拉选项中 + 关闭 +
+
+ + + + + +
标签编码用于关联历史记录,创建后不可修改
+
+
+ + 取消 + 保存 + +
+