Commit Graph
19 Commits
Author SHA1 Message Date
郭庆泰 36528b6e0c 批量推送代码 2026-08-26 23:14:46 +08:00
guoju0808 8b6a0b4e27 feat: Publicity 公示页移动端适配 (顶栏紧凑 + nav 横滚 + 列表卡片化)
Publicity.vue 是公共项目公示页, 有完整桌面布局 (1354px min-width, 72px 顶栏,
60px padding, 36px nav 间距), 手机端需要专门的 media query 才能正常显示:

≤768px:
- body min-width: 0 (解除桌面 1354 强制)
- 顶栏 72→56px, padding 60→12px
- logo 36→30px, title 16→14px
- nav-list 横向滚动 + gap 36→16px
- 顶栏用户区紧凑 (font 15→13px)
- container padding 收窄 (16/12)
- filter-bar 单列, filter-input 全宽
- 列表项 padding 12px, 字号适配
- 弹窗 width 100vw 全屏化

不影响桌面: 所有规则都在 @media (max-width: 768px) 内

不需要适配的页面 (已 mobile-friendly):
- App.vue / PortalLayout.vue (纯容器)
- views/doctor/SignContract.vue (mobile-first 设计, 固定底栏)
- components/* (11 个组件用 flex + min-width:0, 自动响应)
2026-08-26 11:47:04 +00:00
guoju0808 d26a99f821 feat: 批量 H5 适配 (37 个 form/card 页面加统一移动端规则)
覆盖: Account (4 角色), BizArticleAdmin/Edit, BizSpecialPlanAdmin/Edit,
ExpertDetail, LaborProtocolEdit, Roles, Register 系列 (3), doctor 系列
(Account/Meetings/SignFill/SignSuccess/SubmissionDetail/SubmissionNew),
executor 系列 (Account/NewPerson/Overview/PersonDetail),
executor-people 系列 (PersonDetail/PersonNew),
expert/ExpertNew, manager 系列 (Accounts/ProjectsNew/ManagerProjectsAssign),
meetings 系列 (MeetingDetail 1993L/MeetingNew), messages/Messages,
portal 系列 (Invitation/SupportLetter),
sponsor 系列 (Account/NewPerson/PersonDetail),
sponsor-people 系列 (PersonDetail/PersonNew)

统一规则 (≤768px):
- 卡片 padding 12px, radius 4px
- 工具栏横向滚动 (overflow-x)
- filter-form 保持横向 (label 80px 右对齐 + input 占满)
- 查找/重置按钮垂直堆叠 (block + margin-top 8px)
- 表格字号 12px

不影响桌面端: 所有规则都在 @media (max-width: 768px) 内
2026-08-26 11:46:07 +00:00
guoju0808 8a08c8378f feat: 全局移动端适配 AdminLayout 汉堡抽屉 + 67 页通用规则 2026-08-26 11:13:12 +00:00
guoju0808 d2fe5a4035 style: 重塑政务风格 + 操作列统一 el-link + 表格紧凑化
业务背景
- ry-vue3 为政务/卫健委风合规管理系统 (医疗机构合规系统), 不要可爱配色、不要插画
- 品牌色: 主色 #15803D (低调深绿) + 次色 #0E7490 (青蓝), 不要蓝色系主色

变更概要
1. 全局地基
   - theme.scss: Element Plus 主色改为 #15803D, slate 9 档, 联动组件库
   - main.scss: 字体/页面骨架/筛选栏/表格/控件/滚动条 全套样式
   - AdminLayout.vue: 政务顶栏 + 浅色侧栏
   - Workbench.vue: 替换原绿底大字卡为 KPI 白底色条 + 快捷入口 + 进度条

2. 表格操作列改造
   - el-button link 全面替换为 el-link (:underline="false" + type="primary/danger")
   - 36 文件 132 处替换, 操作列外加 .table-actions 容器 (内含分隔线)
   - 修复 el-link 不支持的属性 (size="small"/text/loading)

3. 筛选栏
   - 弹性布局 + gap 14px 16px + align-items: flex-start + min-height 32px
   - 删除所有 scoped .filter-form 覆盖 (28 处) 让全局样式生效
   - 控件宽度 180px 统一, 标签 32px 居中, 折行不紧贴

4. 表格紧凑化
   - cell-padding 10px → 6px, 表头高度 36px
   - 行高 ~46px → ~36px, 字号 13px

5. 每页默认 20 条
   - 21 文件 pageSize: 10 → 20

6. meetings 操作列折叠
   - 11 操作 → 外置 3 个主操作 + 1 个"更多" el-dropdown (8 个次操作)
   - width 500px → 260px
   - 配 .op-dropdown / .op-caret 样式 (hover 旋转)
   - 新增 onMoreAction dispatch 函数 (复用原 handler)

7. 操作列文字防拆行
   - .table-actions flex-wrap: nowrap + white-space: nowrap
   - el-link padding 0 8px → 0 6px, flex-shrink: 0

8. 环境配置
   - .env.development: 直连远端 https://risingdoctor.com/hg-api (绕过 vite proxy 卡顿)
   - vite.config.js: proxy fallback 保留
2026-08-26 11:04:15 +00:00
郭庆泰 b0256ccac3 feat: 会议劳务/会务材料分轨审核 + 注册页标题 + 下拉空值修复
会议材料分轨 (material_audit_stage 单轨 → labor/service 双轨):
- biz_meeting: labor_audit_stage/labor_compliance_approved + service_audit_stage/service_compliance_approved 四列替换原单轨两列
- StageDeriver: 单轨状态机(R/N/C0/C1/A) + 角色优先级选代表轨 + 会议物理态取两轨最小进度
- MeetingAuditStageEnum / 前端 meetingStage.js 镜像: 分轨推导 + 颜色跟随角色展示阶段(避免文案与颜色错位)
- BizMeetingController/ServiceImpl/AuditLog + mapper + MeetingStageScheduler 同步分轨字段
- MeetingDetail/Meetings/doctor/executor Meetings/ManagerProjectDetail/ManagerProjectsAssign/PublicityDetail 同步双轨

其它:
- 注册页 (执行单位/专家/支持单位) 加居中页标题
- DoctorDeptSelect/DoctorTitleSelect 空字符串统一 null, 避免挂载必填项飘红
- BizOrgMapper sponsor/executor options 加 status 字段
- sponsor/NewPerson 编辑态 orgName 只读
2026-08-26 18:13:22 +08:00
郭庆泰 b5b3e3a213 feat: 会议批量审核 + 公示按发布时间倒序 + 现场照片 dialog 预览 + 重复报错精确
- 会议列表 manager 批量合规审核 (批量通过/退回, best-effort 逐条回执)
- 公示列表按 publish_time 倒序, 发布/开通写本地 publish_time (修 toISOString UTC 时区 bug)
- 签到表/前全景/后全景「查看照片」改 dialog 预览 (复用 Preview.vue)
- 手机号/用户名重复报错精确提示 (后端 fieldMap + 前端 duplicateTip)
- 医生首页欢迎语改「欢迎使用合规系统」
2026-08-26 00:41:33 +08:00
郭庆泰 ea2024d083 feat: 会议ID应用赋值 + 会议表单/详情优化 + admin工作台统计与用户管理
- meetingId 由 DB 自增改为应用赋值 10 位数字 (yyMMdd + 4 位序列, Redis 按日期计数)
- 会议开始时间不能晚于结束时间校验; 参会人表单身份证附件/角色单独一行
- 会议详情左右列比例 7:3 -> 8:2 (材料审核列收窄)
- admin/workbench 用户总数/角色类型数/各角色分布统计修复 (改用 listByRole 按 role_type 过滤)
- 新增 admin 用户管理接口 + 门户页脚 + H5 签到/上传优化
2026-08-25 23:33:14 +08:00
郭庆泰andClaude 591a43fe61 feat: 会议提交剩余时间+解冻 + 会务/劳务材料批量下载 + 多角色人员/账号模块完善
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-25 06:53:18 +08:00
郭庆泰 0c882ae846 feat: 本地 Java 发票 OCR + 策划方案多角色开放 + H5 相机脱敏修复
- OCR: 进程内 PaddleOCR ONNX Runtime 识别替代远程 Python 微服务
  (新增 ocr/core/service/config 引擎, 删 OcrClient/OcrConfig, PDF 文本层优先 + QR 快路径)
- 投稿: 项目设计投稿 → 项目策划方案, doctor/executor/sponsor 三角色开放
  (BizProjectPlan 按非 admin/manager 隔离, 复用 Submissions.vue, 设计文件改 OssFileUploader)
- H5: <video> 去掉 autoplay + safePlay 重试, 穿透 uni-app wrapper 找原生 video
- 脱敏: 签到表高斯模糊由横向条带改为全高竖条带 (20%~50% 宽度)
- 域名: ringdoctor.com → risingdoctor.com
2026-08-24 19:23:53 +08:00
郭庆泰andClaude 904e28710f feat: 生产部署 + 会议全链路 (执行方分配/费用结算/签到脱敏/H5相机)
- 生产 nginx 三路径: ry-vue3 /hg/, ry-h5 /camera/, API /hg-api, .env 分环境
- 签约链接/摄像头 base-url 走 yml, 不再硬编码 /hg 与 localhost
- 新增 biz_project_executor_assign (镜像 sponsor_assign) 执行方项目级分配
- 会议费用后台汇总 FeeCalcScheduler + 结算回写项目金额 + 状态流转调度
- 签到表拍照高斯模糊脱敏 extra_oss_url, 新增 PosterService/StageDeriver
- 清理 biz_support_intent 旧表 (6 Java/XML 删除)
- ry-h5 相机黑屏修复: 显式 video.play() + 动态 apiBase 上传
- 资源: simhei 字体 / logo.png / qrcode_1.png / favicon.ico

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 01:00:09 +08:00
郭庆泰 3c23222841 fix(theme): 修 hover 颜色不正确 - 干掉硬编码老蓝 + fallback 双重失效
核心问题 (按影响面排序):

1. Login.vue: login-btn hover 是硬编码 Tailwind blue-800 #1e40af
   跟主色 #007A95 青蓝完全不同色系, hover 突变
   - 改成 var(--brand-primary-deep) (#004858 暗青蓝)

2. 14 个页面写了 :deep(.el-button--primary:hover) { background:
   var(--brand-primary-deep, var(--brand-primary)) } — 第二参数
   fallback 让 hover 退化成主色 (不变深), 视觉上'按钮没反应'
   - 删第二参数, 直接 var(--brand-primary-deep)

3. AdminLayout: 菜单激活背景硬编码 #1890ff (Ant 老蓝),
   跟青蓝主题对比突兀
   - 改成 var(--brand-primary)

4. 17 处 .breadcrumb a:hover / .hint-link:hover / el-button.is-link:hover
   同样 fallback 双重失效问题, 删 fallback

5. 其余硬编码老蓝 (#1890ff / #409eff) 在:
   - OssFileUploader / OssImageUploader / IdCardUploader (upload hover border)
   - Login.vue (modal-btn, accent-color, user-type-item hover)
   - doctor/Account.vue (breadcrumb link, 章节左边竖线)
   - ManagerProjectsAssign.vue (合同链接)
   - PublicityDetail.vue (ann-menu hover)
   全部换成 var(--brand-primary) / var(--brand-primary-deep)

6. 修 PublicityDetail.vue 注释错误:
   原: // 深色用品牌主色 (#1890ff), ...
   正: 二维码 dark 是 #1f2937 (深灰), 不是主色

总计 24 个文件
grep '#1890ff|#409eff|#096dd9|#0050b3|#1e40af|#1d4ed8' 已 0 命中
2026-08-22 21:22:17 +08:00
郭庆泰 cec39554ee style(portal+login): 7 个 logo 占位符 '医' 换为 logo.png 图片
- components/PortalShell.vue (navbar + footer, 共享给 3 个注册页)
- views/portal/Home.vue (navbar + footer)
- views/portal/ArticleView.vue (navbar + footer)
- views/portal/SpecialPlanDetail.vue (navbar + footer)
- views/portal/Publicity.vue (navbar + footer)
- views/portal/PublicityDetail.vue (navbar + footer)
- views/auth/Login.vue (登录页 logo)

每个 .logo-icon / .footer-logo-icon:
  HTML: <div class='logo-icon'>医</div> → 含 <img src='/logo.png'>
  CSS:  删 background/color/font-size/font-weight (字标样式)
       改 overflow:hidden + object-fit:contain (图片容器)

全站 '医' 字符占位符清零.
2026-08-22 20:54:45 +08:00
郭庆泰 44a020da68 feat: 整体废弃 leader 业务角色
leader 角色 (项目负责人) 业务上已不再使用, 整体下线。仅保留 sys_dept.leader 字段 (部门负责人, RuoYi 标准字段, 与角色无关)。

前端清理 (15 文件):
- 路由: 删除 /leader 块 + 4 子路由 (router L56-61)
- 菜单: 删除 AdminLayout 中 leader 菜单 (5 行)
- 视图: 删除整个 views/leader/ 目录 (Home/Projects/Meetings/Account.vue 共 ~32KB)
- Login.vue: 删默认 role='leader', 删 leader 角色选项, 删 autoRole 的 leader 分支, 删 roleHome 的 leader 项
- PortalShell.vue + 5 个 portal/* (Home/Publicity/ArticleView/PublicityDetail/SpecialPlanDetail): admin fallback '/leader/home' → '/admin/workbench', 删 leader 项, 同步更新 admin 入口 (/leader/home → /admin/workbench)
- 5 处 ROLE_LABEL 字典删 leader: '项目负责人' (AdminLayout/Account/Roles/Users/Workbench)
- Roles.vue 注释同步

后端清理 (7 文件):
- BizDashboardController: 删除 /leader dashboard 端点 (整个方法)
- BizPersonController: BUSINESS_MAIN_ROLES 删 leader
- BizExecutorController/BizProjectPlanController/ISysUserService/SysUserExtendVo/SysUser: 注释同步删 leader

测试:
- test_20rounds.py: 删 leader 路由断言 + view_map + role_home + role_view 共 5 处

未做 / 后续:
- DB: sys_user.role_type='leader' 现存账号是测试账号, 用户确认可忽略, 后续手动清理
- 文档: proto/html/leader.html 等原型文件保留 (历史)
- _self/*.md 笔记提及 leader 不动 (笔记)
2026-08-20 22:02:24 +08:00
郭庆泰andClaude e496f34393 feat: 多处页面改造 + 新增劳务协议模板配置
主要改动:
- biz_meeting_attendee 中间表 + doctor/expert 角色数据隔离
- biz_meeting_attendee 加 handsign/labor_protocol 字段 (劳务协议改造)
- biz_labor_protocol_template 配置表 + admin 页面 (从 HeguiConstants 迁移)
- biz_expert.expertId 改 Long + IdGenerator 生成 (去自增)
- Login.vue / PublicityDetail.vue / Home.vue 等多处 bug 修复 + UI 改进
- 新增 page-tech-review 报告 3 篇 (_self/*.md)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-19 21:06:49 +08:00
郭庆泰andClaude 76dd4d7306 feat(sponsor/people): 主账号同步建 biz_person (admin/总负责人), 列表可见 + 操作列对本人隐藏 + 新建下拉不包含 admin
后端:
- BizAuthController.registerSponsor step 6: 为主账号同步建 biz_person
  (走 BizPersonMapper 直插, 绕过 BizPersonServiceImpl 创 SUB 子账号的逻辑;
   SnowflakeId 注入 personId; department=管理部, position=总负责人, role=admin,
   unit_type=sponsor, user_id=主账号自己)
- BizPersonMapper.java + xml 新增 countAdminByOrgId: 校验某 org 下是否已有 admin
  (注册场景下天然返回 0, 是给未来 bug 兜底, registerSponsor 暂不调用)
- BizPersonMapper.xml selectSponsorList: WHERE 加 OR u.user_id=#{sponsorOwnerUid},
  让主账号自己的 biz_person (parent_user_id=NULL) 也能被自身 list 看到

前端:
- utils/roleMap.js: PERSON_ROLE_LABEL 加 admin:'管理员'
- sponsor/SponsorPeople.vue: 角色列改用 translatePersonRole, tag type 按 role 动态
  (admin=warning, supervisor=primary); 操作列本人隐藏 禁用/恢复 + 删除
  (v-if=row.userId !== store.user?.userId, 防主账号把自己禁用/误删)
- sponsor/NewPerson.vue: 编辑模式 role=admin 显示静态 el-tag, 新建下拉仍只含 supervisor
- sponsor/PersonDetail.vue: 角色展示同步用 translatePersonRole
- auth/Login.vue + portal/Home.vue: 文案 监察员 → 管理员 (注册即管理员, 可建监察员子账号)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 20:46:42 +08:00
郭庆泰 b41cf77cac feat(publicity): 公示页支持/执行意向 (匿名提交 + 管理审核)
- 新增 biz_publicity_support_intent / biz_publicity_execution_intent 两张独立表
  (与已登录视角的 biz_support_intent / biz_execution_intent 解耦, 避免匿名数据污染强绑表)
- 后端 BizPublicityIntentController: 公开提交 + 公开查重 (按 project_id+phone+source) + 管理 CRUD
  已登录直接取 user_id, 未登录但 phone 命中 sys_user 仍自动关联 user_id (不回强制登录)
- /business/publicity/** 加 Spring Security permitAll
- 前端 PublicityDetail.vue: 右侧 2 个意向按钮 (已登录/匿名都弹 dialog 填 5 字段),
  已提交状态用 hasPublicityIntent 按 phonenumber 持久化查回
- 重写 manager/SupportIntent.vue + manager/ExecIntent.vue: 列表/筛选/CSV导出/状态变更/批量删除
2026-08-17 01:15:16 +08:00
郭庆泰 ccfd03a6eb 批量推送 2026-08-16 21:24:53 +08:00
郭庆泰 cf5790229a refactor: 合并 biz_support_unit/biz_execution_unit/biz_service_org 为 biz_org, 删除 2 张孤儿表, 改 biz_person.work_unit → org_id FK
主要改动:
- SQL: biz_support_unit → biz_org, 加 org_type, 加 business_nature; 删 biz_execution_unit, biz_service_org
- SQL: biz_project.support_unit_id/name + service_org_id/name → org_id/name/type
- SQL: biz_meeting.support_unit_name → org_name
- SQL: biz_person.work_unit → org_id (FK)
- 后端: 新 BizOrg entity/mapper/service/controller
- 后端: BizProject/BizMeeting 字段重命名
- 后端: 删 12 个 BizSupportUnit/BizExecutionUnit/BizServiceOrg Java 文件
- 后端: BizPersonImportVO.workUnit → orgName (导入时查 biz_org 取 org_id)
- 后端: BizAuthController.registerExecutor 完整实现 (原 registerSupplier stub)
- 前端: 新 admin/Orgs.vue + manager/Orgs.vue (原 SupportUnits)
- 前端: RegisterExecutor.vue (原 RegisterSupplier, 单页 2 步)
- 前端: sponsor/executor/manager 多个文件 workUnit → orgId/orgName 重命名
- 前端: 统一 supplier → executor, 业务命名 sponsor(赞助方) / executor(执行方=供应商)
- 前端: 全工程 execution → executor (company type / role / person unit_type)
2026-08-15 12:41:10 +08:00