租户端基础设施: - 新增工作台首页(欢迎信息/统计/待办/快捷操作/新手引导) - 新增机构信息管理页(自助查看编辑机构信息) - 修复403报错(fetchTenants加超管守卫) - 修复权限(log:read/notice:update/notice:delete/contest:work:read) - 修复评审规则组件映射 活动管理全模块优化(机构端视角): - 活动列表:加统计概览+精简列+筛选自动查询+发布弹窗修复+操作逻辑优化 - 创建/编辑活动:重构布局(去card嵌套+栅格响应式+分区卡片) - 评委管理:统一主色调+冻结确认+导入导出disabled - 报名管理:去Tab+统计+审核状态列+批量审核接口 - 报名记录:统计概览+去机构列+撤销审核+返回按钮+去参与方式列 - 作品管理:去Tab+统计+递交进度彩色+筛选修复(assignStatus/submitTime) - 评审进度:去Tab+统计+实际完成率状态+筛选修复 - 评审规则:表格加评委数/计算方式+描述列修复+删除保护 - 成果发布:去Tab+统计+操作文案优化 - 通知公告:统一主色调+发布确认+操作逻辑+状态筛选+时间范围 成果发布详情功能补全: - 计算得分/排名/设置奖项三步操作流程 - 排名列(金银铜徽章)+奖项列+奖项筛选 - 自定义奖项(动态添加行替代硬编码一二三等奖) - 后端AutoSetAwardsDto改为awards数组格式 数据统计看板(新模块): - 后端analytics module(overview+review两个接口) - 运营概览:6指标卡片+报名转化漏斗+ECharts月度趋势+活动对比表 - 评审分析:4效率卡片+评委工作量表+ECharts奖项分布饼图 - 菜单注册:数据统计→运营概览+评审分析 Bug修复: - 超管重置其他租户用户密码报"用户不存在" - gdlib登录快捷标签密码不一致 - 分配评委去掉评审时间限制 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8.2 KiB
8.2 KiB
租户端(机构管理端)全面优化记录
所属端:租户端(机构管理员视角) 状态:已优化 创建日期:2026-03-31 最后更新:2026-03-31
概述
以广东省立中山图书馆(gdlib)为典型租户,从机构管理员/运营人员视角全面审查并优化了租户端的所有模块。
Day5 (2026-03-31) — 优化内容
基础设施
- 数据隔离验证:确认活动/报名/作品查询全部带 tenantId 过滤
- 日志菜单权限修复:补充 log:read 权限
- 公告权限修复:补充 notice:update / notice:delete 权限
- 403 报错修复:fetchTenants 调用加 isSuperAdmin 守卫(contests/Index, system/users/Index)
- 评审规则组件映射修复:contests/ReviewRules 指向正确的 reviews/Index.vue
- 作品详情路由权限修复:work:read 改为 contest:work:read
工作台(新增)
- 新增租户端工作台页面(TenantDashboard.vue)
- 欢迎信息 + 机构标识(时段问候、管理员姓名、机构名称/类型)
- 6个统计卡片(可见活动/进行中/总报名/待审核报名/总作品/今日报名),可点击跳转
- 空数据新手引导(三步:创建活动→添加成员→邀请评委)
- 快捷操作按权限动态显示
- 待办提醒(待审核报名 + 即将截止的活动)
- 最近活动列表 + 查看全部入口
- 后端 GET /contests/dashboard 接口
机构信息(新增)
- 新增机构信息管理页面(tenant-info/Index.vue)
- 查看/编辑机构名称和描述
- 复制登录地址
- 后端 GET/PATCH /tenants/my-tenant 接口
活动列表
- 租户端加统计概览(6个阶段卡片,后端 getStats 加 tenantId 过滤)
- 精简表格列(去掉主办方/可见范围/公开机构,加活动阶段列)
- 筛选自动查询(下拉 @change)
- 报名/作品数可点击跳转
- 修复发布弹窗机构选择 bug(租户端用 my-tenant 接口获取自己信息)
- 操作按钮逻辑优化(未发布:发布/编辑/删除;已发布:查看/评委/编辑/取消发布)
创建/编辑活动
- 重构页面布局:去掉 card 嵌套,改为独立分区卡片
- 修复 form layout 冲突(vertical + labelCol)
- 去掉固定宽度,改用栅格响应式
- 4 个分区:主办信息、活动信息、图片附件、时间配置
评委管理
- 筛选自动查询
- 导入/导出改为 disabled + tooltip
- 主色调统一 #6366f1
- 冻结/解冻二次确认
报名管理(Index)
- 去掉个人/团队 Tab,合并展示加类型列
- 统计概览(总报名/待审核/已通过/已拒绝)
- 表格加审核状态分类计数列(并行查询每个活动的统计)
- 去掉手动启动/关闭报名
报名记录(Records)
- 主色调统一
- 统计概览 + 可点击筛选
- 租户端去掉机构列
- 筛选自动查询
- 通过加二次确认
- 批量审核改用后端批量接口 POST /contests/registrations/batch-review
- 返回按钮
- 去掉「参与方式」列(子女已改为独立账号)
- 撤销审核功能 PATCH /contests/registrations/:id/revoke
作品管理(Index)
- 去掉 Tab,加统计概览 + 类型筛选
- 递交进度彩色数字(已交/应交)
- 活动名可点击
作品详情(WorksDetail)
- 返回按钮
- 统计概览
- 租户端去掉机构筛选
- 筛选自动查询(分配状态、递交时间、机构下拉)
- 后端支持 assignStatus / name / submitStartTime / submitEndTime 筛选
- 分配评委去掉评审时间限制(任何时候都可分配)
评审进度
- 去掉 Tab,加统计概览 + 类型筛选
- 评审状态改用实际完成率(无作品/未开始/进行中/已完成)
- 进度数字颜色区分
- 评审进度详情页筛选修复(评审进度前端过滤生效)
评审规则
- 组件映射修复
- 主色调统一
- 表格加评委数/计算方式列
- 修复规则描述列数据展示错误
- 已关联活动删除保护提示
- Drawer 标题区分新建/编辑
成果发布(Index)
- 去掉 Tab,加统计概览(全部/已发布/未发布)
- 加发布状态筛选 + 类型筛选
- 活动名可点击
- 操作按钮文案优化(查看成果/发布成果)
成果发布详情(Detail)— 功能补全
- 统计摘要(总作品/已评分/已排名/已设奖/平均分)
- 三步操作流程(计算得分→计算排名→设置奖项)
- 排名列(金银铜色徽章)
- 奖项列(彩色标签)
- 奖项筛选(动态从数据提取)
- 单个设奖(combobox,选项来自自动设奖配置 + 已有数据)
- 自动设奖改为自定义奖项(动态添加行:奖项名称+人数)
- 后端 AutoSetAwardsDto 改为 awards 数组格式
- 发布按钮二次确认
通知公告
- 主色调统一
- 发布/取消发布二次确认
- 操作逻辑优化(未发布:发布/编辑/删除;已发布:查看/取消发布)
- 发布状态筛选
- 日期改为时间范围选择器
- 创建时间列 + 按创建时间倒序
- 后端支持 publishStartDate / publishEndDate 范围查询
新增 API
GET /contests/dashboard — 租户端仪表盘
GET /contests/stats (加 tenantId) — 活动统计支持租户过滤
GET /tenants/my-tenant — 获取当前租户信息
PATCH /tenants/my-tenant — 更新当前租户信息
POST /contests/registrations/batch-review — 批量审核报名
PATCH /contests/registrations/:id/revoke — 撤销报名审核
GET /contests/registrations/stats (加 tenantId) — 报名统计支持租户过滤
成果发布详情(Detail)— 功能补全
- 统计摘要(总作品/已评分/已排名/已设奖/平均分)
- 三步操作流程(计算得分→计算排名→设置奖项)
- 排名列(金银铜色徽章)+ 奖项列(彩色标签)+ 奖项筛选
- 自定义奖项支持(动态添加奖项名称+人数,替代硬编码一/二/三等奖)
- 单个设奖(combobox,选项来自自动设奖配置 + 已有数据)
- 后端 AutoSetAwardsDto 改为 awards 数组格式
数据统计模块(新增)
- 后端 analytics.module / controller / service
- GET /analytics/overview — 核心指标+漏斗+月度趋势+活动对比
- GET /analytics/review — 评审效率+评委工作量+奖项分布
- 前端安装 echarts + vue-echarts
- analytics/Overview.vue — 6个指标卡片 + 报名转化漏斗 + ECharts月度趋势折线图 + 活动对比表
- analytics/Review.vue — 4个效率卡片 + 评委工作量表 + ECharts奖项分布饼图
- 菜单注册:数据统计(运营概览 + 评审分析)
Bug 修复
- 超管端重置其他租户用户密码报「用户不存在」— controller 增加超管判断跳过租户过滤
- gdlib 登录快捷标签密码与实际不一致 — 更新为 admin123
新增 API(完整)
GET /contests/dashboard — 租户端仪表盘
GET /contests/stats (加 tenantId) — 活动统计支持租户过滤
GET /tenants/my-tenant — 获取当前租户信息
PATCH /tenants/my-tenant — 更新当前租户信息
POST /contests/registrations/batch-review — 批量审核报名
PATCH /contests/registrations/:id/revoke — 撤销报名审核
GET /contests/registrations/stats (加 tenantId) — 报名统计支持租户过滤
GET /analytics/overview — 运营概览统计
GET /analytics/review — 评审分析统计
数据库变更
- menus 表新增:工作台(id=50)、机构信息(id=51)、数据统计(id=52)、运营概览(id=53)、评审分析(id=54)
- permissions 表新增:log:read、notice:update、notice:delete(gdlib 租户)
- work_tags 表新增 color 字段
- 前端依赖新增:echarts、vue-echarts