From 54e30e62b4d062567e85a120fe120987d9530224 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Wed, 12 Nov 2025 09:46:46 +0800 Subject: [PATCH] commit --- .../controller/FlowTodoCenterController.java | 38 + .../app/sys/controller/SysHomeController.java | 6 +- .../app/sys/controller/SysRoleController.java | 21 + .../controller/v4/SysV4AppsController.java | 10 +- .../impl/SysDataUserAllUpdateServiceImpl.java | 6 +- .../service/impl/MemberManageServiceImpl.java | 2 +- .../assets/platform/js/util/commonUtil.js | 4 +- .../resources/views/layouts/v4/home/act.js | 134 ++-- .../resources/views/layouts/v4/home/entry.js | 309 ++++---- .../views/layouts/v4/home/index.html | 67 +- .../resources/views/layouts/v4/home/jcdt.js | 30 +- .../resources/views/layouts/v4/home/stats.js | 196 ++++++ .../resources/views/layouts/v4/home/user.js | 664 +++++++++++++----- .../views/platform/zhghh5/sys/home/apps.js | 198 +++--- .../views/platform/zhghh5/sys/home/home.js | 18 +- .../views/platform/zhghh5/sys/home/index.html | 2 +- .../views/platform/zhghh5/sys/home/msg.js | 134 ++-- .../views/platform/zhghh5/sys/home/todo.js | 6 +- 18 files changed, 1217 insertions(+), 628 deletions(-) create mode 100644 src/main/resources/views/layouts/v4/home/stats.js diff --git a/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java b/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java index 355605c..aa9a68d 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowTodoCenterController.java @@ -166,6 +166,44 @@ public class FlowTodoCenterController { return Result.success(pagination); } + @At + @SaCheckLogin + public Result completed(Integer pageNumber, Integer pageSize, String searchKeyword, String category) { + Sql sql = Sqls.create(""" + SELECT + ins.id AS instanceId, + ins.processDefineId, + ins.state, + ins.businessNo, + ins.operator, + ins.variable, + ins.createdAt, + ins.variable ->> '$.instanceName' AS instanceName, + cat.`name` categoryName + FROM + wf_process_instance ins + LEFT JOIN wf_process_define def ON def.id = ins.processDefineId + LEFT JOIN wf_process_category cat ON cat.id = def.category + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("ins.state", "=", 20); + cnd.and("ins.operator", "=", SecurityUtil.getUserId()); + if (StrUtil.isNotBlank(searchKeyword)) { + cnd.where().andLike("ins.variable ->> '$.instanceName'", searchKeyword); + } + cnd.groupBy("ins.id"); + cnd.desc("ins.createdAt"); + sql.setCondition(cnd); + Pagination pagination = sysUserService.listPageMap(pageNumber, pageSize, sql); + List list = pagination.getList(); + for (NutMap row : list) { + NutMap variable = Json.fromJson(NutMap.class, row.getString("variable")); + row.put("variable", variable); + } + return Result.success(pagination); + } + @At @SaCheckLogin public Result statistics() { diff --git a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java index 7e7bba0..aab0ac3 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java @@ -264,13 +264,13 @@ public class SysHomeController { // @CacheResult(cacheKey = "news", ignoreNull = true, cacheLiveTime = 60 * 60 * 24) public Result getNews() { // 定义要爬取的URL - String domain = "https://cdgh.ncu.edu.cn/"; + String domain = "https://gh.hgu.edu.cn/index.htm"; try { // 使用Jsoup连接到URL并获取页面内容 Document doc = Jsoup.connect(domain).get(); JSONObject root = new JSONObject(); - +/* // 1. 新闻快讯(来自 .list1) List newsArray = new ArrayList<>(); Elements newsItems = doc.select(".group1 .list1 li"); @@ -328,7 +328,7 @@ public class SysHomeController { node.set("image", domain + imageUrl); grassrootsArray.add(node); } - root.set("grassroots", grassrootsArray); + root.set("grassroots", grassrootsArray);*/ return Result.success(root); } catch (Exception e) { log.error(e); diff --git a/src/main/java/com/budwk/app/sys/controller/SysRoleController.java b/src/main/java/com/budwk/app/sys/controller/SysRoleController.java index d2915ed..c047f82 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysRoleController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysRoleController.java @@ -504,4 +504,25 @@ public class SysRoleController { return Result.success(Daos.ext(sysRoleService.dao(), fieldFilter).query(Sys_menu.class, cnd)); } + @At + @Ok("json:full") + @SaCheckLogin + public Result getRoleNames(){ + Sql sql = Sqls.create(""" + SELECT + GROUP_CONCAT(DISTINCT sr.`name`) roleNames + FROM + `sys_user_role` sur + LEFT JOIN sys_role sr ON sr.id = sur.roleId + WHERE + sur.userId = @userId + ORDER BY + sr.sort DESC + """).setParam("userId", SecurityUtil.getUserId()); + sql.setCallback(Sqls.callback.map()); + sysRoleService.dao().execute(sql); + return Result.success(sql.getResult()); + + } + } diff --git a/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java b/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java index 45bc3b9..1019e02 100644 --- a/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java +++ b/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java @@ -52,7 +52,7 @@ public class SysV4AppsController { Map category = new HashMap<>(); category.put("id", module.getId()); category.put("name", module.getName()); - category.put("icon", module.getFaIcon()); + category.put("icon", module.getIcon()); return category; }).toList(); return Result.success("获取应用分类成功").addData(categories); @@ -67,10 +67,11 @@ public class SysV4AppsController { Sql sql = Sqls.create(""" SELECT m.id, - m.name, + m.`name`, m.href, m.icon, m.picIcon, + sm.`name` AS moduleName, CASE WHEN f.userId IS NOT NULL THEN 1 ELSE 0 @@ -79,6 +80,7 @@ public class SysV4AppsController { sys_menu m LEFT JOIN sys_user_favorite_app f ON m.id = f.appId AND f.userId = @userId + LEFT JOIN sys_module sm ON sm.id = m.moduleId $condition """); Cnd cnd = Cnd.NEW(); @@ -138,10 +140,11 @@ public class SysV4AppsController { Sql sql = Sqls.create(""" SELECT m.id, - m.name, + m.`name`, m.href, m.icon, m.picIcon, + sm.`name` AS moduleName, 1 AS isFavorite FROM sys_user_favorite_app f @@ -149,6 +152,7 @@ public class SysV4AppsController { sys_menu m ON f.appId = m.id + LEFT JOIN sys_module sm ON sm.id = m.moduleId WHERE f.userId = @userId AND m.platform = 'PC' diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java index e54f7e6..9f3a16a 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java @@ -468,9 +468,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 生成变更信息描述 String changeInfos = changeList.stream() - .map(v -> v.getString("fieldName") + ":" + - HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + "→" + - HtmlUtil.cleanHtmlTag(v.getString("newValue"))) + .map(v -> v.getString("fieldName", "") + ":" + + HtmlUtil.cleanHtmlTag(v.getString("sourceValue", "")) + "→" + + HtmlUtil.cleanHtmlTag(v.getString("newValue", ""))) .collect(Collectors.joining(";")); // 设置历史记录信息 diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index e93ca2f..9765a97 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -397,7 +397,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement // 如果有工会关系变更,也需要记录变更了什么工会 history.setChangeInfos(changeList); String changeInfos = changeList.stream().map(v -> { - return v.getString("fieldName") + ":" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + "->" + HtmlUtil.cleanHtmlTag(v.getString("newValue")); + return v.getString("fieldName") + ":" + HtmlUtil.cleanHtmlTag(v.getString("sourceValue", "")) + "->" + HtmlUtil.cleanHtmlTag(v.getString("newValue", "")); }).collect(Collectors.joining(";")); history.setChangeInfosStr(changeInfos); dao().updateIgnoreNull(info); diff --git a/src/main/resources/static/assets/platform/js/util/commonUtil.js b/src/main/resources/static/assets/platform/js/util/commonUtil.js index 2de29cf..7ae0c5c 100644 --- a/src/main/resources/static/assets/platform/js/util/commonUtil.js +++ b/src/main/resources/static/assets/platform/js/util/commonUtil.js @@ -17,7 +17,7 @@ const commonUtil = { if (response.config.responseType === "blob") { return response } - if (response.data && response.data.code !== 0 && response.data.code !== 99) { + if (response.data && response.data.code !== "200" && response.data.code !== 0 && response.data.code !== 99) { if (isMobile) { vant.Toast.fail(response.data.msg) } else { @@ -318,7 +318,7 @@ function base64ToFile(base64Data, filename) { return new File([blob], filename, {type: contentType}) } -function createLoading(text= '加载中...'){ +function createLoading(text = '加载中...') { return ELEMENT.Loading.service({ lock: true, text: text, diff --git a/src/main/resources/views/layouts/v4/home/act.js b/src/main/resources/views/layouts/v4/home/act.js index e9340a2..09758b3 100644 --- a/src/main/resources/views/layouts/v4/home/act.js +++ b/src/main/resources/views/layouts/v4/home/act.js @@ -3,47 +3,52 @@ const act = {
- -
- 工会活动 -
- -
- -
-
-
-
-
- - + +
+
+ +
+
+
+
+
+ + {{getStatusText(activity)}} -
-

- {{ activity.name}} -

- -
-

- - 时间:{{ activity.startDate }}至{{ activity.endDate }} -

-
-
-
-
-
- - -
-
- - -
+
+

+ {{ activity.name}} +

+ +
+

+ + 时间:{{ activity.startDate }}至{{ activity.endDate }} +

+
+
+
+
+
+ + +
+
+ + +
+
+ +
+
📅
+

暂无近期活动

+

敬请关注后续通知

+
+
`, @@ -86,13 +91,13 @@ const act = { }, breakpoints: { 768: { - slidesPerView: 2, + slidesPerView: 1, }, 1024: { - slidesPerView: 3, + slidesPerView: 2, }, 1200: { - slidesPerView: 4, + slidesPerView: 3, } } }) @@ -125,12 +130,6 @@ const act = { width: 100%; } - .section-act { - width: 80%; - max-width: 80%; - margin: 30px auto; - } - .section-act .section-act-title span { font-size: 30px; color: #000000; @@ -172,12 +171,13 @@ const act = { .activity-swiper-container { position: relative; width: 100%; - margin-top: 30px; + padding: 20px; + /*margin-top: 30px;*/ } .activity-swiper { width: 100%; - padding: 0 50px 20px 50px; + /*padding: 0 50px 20px 50px;*/ } .activity-swiper .swiper-slide { @@ -235,6 +235,7 @@ const act = { .activity-swiper .swiper-slide .item .img-box { width: 100%; height: 200px; + border-radius: 12px; overflow: hidden; position: relative; } @@ -282,13 +283,13 @@ const act = { } .activity-swiper .swiper-slide .item .time { - margin-top: 8px; + /*margin-top: 8px;*/ } .activity-swiper .swiper-slide .item .time p { - font-size: 14px; + font-size: 13px; margin: 0; - line-height: 1.5; + /*line-height: 1.5;*/ color: #666; } @@ -296,5 +297,34 @@ const act = { margin-right: 5px; color: var(--color-primary); } + + + /* 无活动占位提示 */ + .no-activity-placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40px 20px; + color: #94a3b8; + text-align: center; + } + + .no-activity-placeholder .icon { + font-size: 48px; + margin-bottom: 12px; + opacity: 0.6; + } + + .no-activity-placeholder p { + margin: 4px 0 0; + font-size: 16px; + font-weight: 500; + } + + .no-activity-placeholder .subtext { + font-size: 13px; + opacity: 0.8; + } ` -} +}; diff --git a/src/main/resources/views/layouts/v4/home/entry.js b/src/main/resources/views/layouts/v4/home/entry.js index 4abb5a3..62b5f34 100644 --- a/src/main/resources/views/layouts/v4/home/entry.js +++ b/src/main/resources/views/layouts/v4/home/entry.js @@ -1,45 +1,35 @@ const entry = { template: /*language=HTML*/ ` -
-
- 常用入口 -
- -
- - - - -
-
-
-
- -
-
-

{{ service.name }}

-
-
-
-
-
-
+
+ +
+
+ 推荐服务 +
+
+ 推荐应用 +
+
+ 我的收藏 +
+
+ + +
+
+
+
+ +
+
{{ item.name }}
+
+
+
+
`, data() { return { @@ -128,194 +118,131 @@ const entry = { style: /*language=CSS*/ ` .entry-wrapper { width: 100%; - background-image: url(https://www.ncu.edu.cn/images/bbg1.jpg); - background-size: cover; - background-position: center; - background-repeat: no-repeat; + box-sizing: border-box; } - .entry-title { - font-size: 30px; - color: #000000; - display: block; - font-weight: bold; - position: relative; - text-align: center; - padding: 40px 0; - } - - /deep/ .entry-title span::before { - content: ''; - width: 24px; - height: 11px; - background: url(https://www.ncu.edu.cn/images/titl.svg) no-repeat center; - background-size: 24px 11px; - display: inline-block; - margin-right: 0; - vertical-align: middle; - } - - /deep/ .entry-title span::after { - content: ''; - width: 24px; - height: 11px; - background: url(https://www.ncu.edu.cn/images/titr.svg) no-repeat center; - background-size: 24px 11px; - display: inline-block; - margin-left: 0; - vertical-align: middle; - } - - .entry-container { - width: 80%; - max-width: 80%; - margin: 0 auto; - padding: 20px; + .tabs { + margin-top: 5px; display: flex; - gap: 30px; - overflow: hidden; + gap: 20px; + margin-bottom: 20px; + border-bottom: 2px solid #e8e8e8; + padding-bottom: 10px; } - .sidebar { - width: 200px; - flex-shrink: 0; + .tab-item { + display: flex; + align-items: center; + gap: 6px; + font-size: 14px; + color: #666; + cursor: pointer; + padding-bottom: 8px; + transition: color 0.2s ease; + } + + .tab-item:hover { + color: #1890ff; + } + + .tab-item.active { + color: #1890ff; + font-weight: bold; + border-bottom: 2px solid #1890ff; + } + + .tab-item i { + font-size: 14px; + } + + .apps-container { display: flex; flex-direction: column; - justify-content: space-between; - } - - .category { - display: flex; - align-items: center; - padding: 12px 16px; - margin-bottom: 2px; - cursor: pointer; - transition: background-color 0.2s ease; - border-left: 3px solid transparent; - } - - .category:hover { - - } - - .category.active { - color: var(--color-primary); - } - - .category i { - font-size: 14px; - margin-right: 10px; - width: 16px; - text-align: center; - } - - .category span { - font-size: 18px; - font-weight: 700; - } - - .content { - flex: 1; - height: 164px; - } - - .services-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; - grid-template-rows: repeat(2, 1fr); - overflow: hidden; } - .service-card { - padding: 12px; - height: 72px; - cursor: pointer; - transition: background-color 0.2s ease; - border: none; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYEAAAB4CAYAAAAUs05BAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANrSURBVHgB7dzNapNZAMfh0zbNYGgosYql4wiCFEEZXLiYG3DrdryPuQbvpXMB7t24m4UOCiKuEtCKsaVNiTRaXhshLvyoSd/Yzf95oORA827PLycn5yxsdZ/crKql+6WG1uLy0d3Lm29Pes+jfm+1N9w/VwD4qXtXbmyf9P/Hu29Wng/6K6WOqnq6WACI1ZgM1pqt0Z31qztlBoMPh0sPXr+8OMsztzsbe9fanfcFgG9sdZ+tz/L+6+0LB7c6lw5meWZ7OGg+7HfPj8dWAgDBRAAgmAgABBMBgGAiABBMBACCiQBAsIV5nBiehXMCAD826zmBWpwYBsi2UFXV5vHrP6WGycnhae4QAuD0JncGneak8He8sBIACCYCAMEa//b+bx5vDJ/dRgQAtY2/EprDVdJ9KwGAYLWukgbgbI03g+tuCLtKGoDPRAAgmAgABBMBgGAiABBMBACCiQBAMBEACCYCAMFEACCYCAAEEwGAYCIAEEwEAIKJAEAwEQAIJgIAwUQAIJgIAAQTAYBgIgAQTAQAgokAQDARAAgmAgDBRAAgmAgABBMBgGAiABBMBACCiQBAMBEACCYCAMFEACCYCAAEEwGAYCIAEEwEAIKJAEAwEQAIJgIAwUQAIJgIAAQTAYBgIgAQTAQAgokAQDARAAgmAgDBRAAgmAgABBMBgGAiABBMBACCiQBAMBEACCYCAMFEACCYCAAEEwGAYCIAEEwEAIKJAEAwEQAIJgIAwUQAIJgIAAQTAYBgIgAQTAQAgokAQDARAAgmAgDBRAAgmAgABBMBgGAiABBMBACCiQBAMBEACCYCAMFEACCYCAAEEwGAYCIAEKwxGbwbDZtb3WfrpYbW4vLR3cubbwsAv8Tj3Tcrzwf9lTInVgIAwRp///Hn6Ph1u9Qw+HC49OD1y4sFgDNxvX3h4Fbn0kGpZ8dKACCYCAAEW9jqPrlZVUv3yymtNVujv9Y29qb9Ouh2Z2PvWrvzvgDwjWl+oLM/OlwefBw1fm+1682lVfXUSgAg2JefiI4/0d9Zv7oz7YPbw0HzYb97fjxuL/92dO/KjRM3lx/1e6u94f65AsBPnTSnTubfWeftr58fj60EAIKJAEAwEQAIJgIAwUQAIJgIAAQTAYBgc71Kehr/7b5aHf8VAGqZx7xtJQAQ7BOP4saDQA2PwQAAAABJRU5ErkJggg==) no-repeat; - background-size: 100% 100%; - display: flex; - align-items: center; + .app-grid { + display: grid; + /* 改为自适应列数:每格最小 80px,自动换行 */ + grid-template-columns: repeat(auto-fit, minmax(80px, 1fr)); + + justify-items: center; /* 子项内容居中(图标和文字) */ + justify-content: start; /* 整体网格靠左对齐,避免居中 */ + gap: 12px; + padding: 12px; + background: #fff; + overflow-x: hidden; + + max-height: calc(350px - 74px); + overflow-y: auto; } - .service-card:hover { - + .app-item { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + padding: 12px; + border-radius: 8px; + background: #fff; + width: 100%; + max-width: 100%; + transition: transform 0.2s ease, box-shadow 0.2s ease; } - .service-icon { - width: 32px; - height: 32px; - flex-shrink: 0; + .app-item:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.1); } - .service-icon img { + .app-icon { + width: 46px; + height: 46px; + margin-bottom: 8px; + } + + .app-icon img { width: 100%; height: 100%; - border-radius: 4px; - object-fit: cover; + object-fit: contain; } - .service-info { - flex: 1; - min-width: 0; - overflow: hidden; - } - - .service-name { - font-size: 14px; - font-weight: 400; + .app-name { + font-size: 12px; color: #333; - margin: 0; line-height: 1.4; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + word-break: break-word; + text-align: center; } /* 响应式设计 */ @media (max-width: 768px) { - .entry-container { - flex-direction: column; - gap: 20px; + .tabs { + flex-wrap: wrap; + gap: 10px; } - .sidebar { - width: 100%; - display: flex; - overflow-x: auto; - gap: 0; - border-bottom: 1px solid #e8e8e8; - padding-bottom: 0; + .tab-item { + padding: 8px 0; + font-size: 12px; } - .category { - flex-shrink: 0; - margin-bottom: 0; - white-space: nowrap; - border-left: none; - border-bottom: 3px solid transparent; + .app-grid { + grid-template-columns: repeat(2, 1fr); + gap: 15px; } - .category.active { - border-left: none; - border-bottom-color: #1890ff; - } - - .services-grid { - grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + .app-item { + padding: 12px; } } @media (max-width: 480px) { - .services-grid { - grid-template-columns: 1fr 1fr; - } - - .service-card { - padding: 12px; + .app-grid { + grid-template-columns: 1fr; + gap: 12px; } } ` -} +}; diff --git a/src/main/resources/views/layouts/v4/home/index.html b/src/main/resources/views/layouts/v4/home/index.html index 95b94f1..1d3d4b5 100644 --- a/src/main/resources/views/layouts/v4/home/index.html +++ b/src/main/resources/views/layouts/v4/home/index.html @@ -3,6 +3,7 @@ layout("/layouts/v4/baseLayout.html"){ #--> -
- +
+ - +
+
+ +
+
+ +
- -
- + +
+ +
- -