Commit Graph
201 Commits
Author SHA1 Message Date
郭庆泰 a14d95288c 提交所有代码 2026-08-31 19:01:00 +08:00
郭庆泰andClaude f4d8bc1463 feat: 项目导出 + 会议跳转 + 机构软删除 + 供应商账号同步
- 项目/项目评价/报名专家 3 类导出, 勾选透传 projectIds
- 项目列表 总场次/已执行/未执行 三列点击跳对应会议列表 (executor 复用后端 role 隔离)
- 机构软删除 + 级联软删机构下账号
- 供应商开放接口账号同步

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30 10:42:35 +08:00
郭庆泰andClaude 1876601ba7 feat: 会议阶段劳务/会务前缀投影 + 结算前未保存拦截
- 阶段投影: 待审核/审核通过/待整改/待结算 按劳务/会务前缀区分 (前后端镜像)
- 劳务材料提交门槛改为参会人员列表≥1人 (非上传文件)
- sponsor/manager 操作列「审核」「结算」提为直链
- 会议结算时间轴节点: 待结算态显示「补充凭证并结算」
- 结算前检测未保存改动, 弹「保存并结算」拦截

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-29 20:02:33 +08:00
郭庆泰andClaude e47f76478b 批量推送代码
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-29 17:52:05 +08:00
郭庆泰 36528b6e0c 批量推送代码 2026-08-26 23:14:46 +08:00
guoju0808 18f7e93d5b feat: 其他角色首页移动端适配 (doctor/sponsor/executor)
doctor/Home.vue: 完善移动端适配
- 原只有 .cols-row → 1fr 一行规则
- 加 welcome-bar 紧凑 padding (20/24 → 14/16) + flex-wrap
- 加 welcome-text h2 字号 20 → 16, p 13 → 12
- 加 section padding 16/20 → 12/14, section-title 15 → 14
- 加 breadcrumb 字号 13 → 12, .doctor-home padding 16/20 → 12

sponsor/Home.vue: 补 stats-grid-5 媒体规则
- 原只有 stats-grid-3/2 媒体规则, 漏 stats-grid-5
- 加 stats-grid-5 → 2 列 + ≤480px → 1 列
- 加整页 padding 16 → 12, breadcrumb 13 → 12
- 加 stat-card padding 24 → 16/12 + min-height 120 → 90
- 加 stat-label/Value/Desc 字号缩小
- 加 .section padding 20/24 → 14/16

executor/Overview.vue: 补 stats-grid 5 列媒体规则
- 原 5 个 KPI 卡 5 列布局在 mobile 完全挤爆, 但媒体查询里没改 grid-template-columns
- 加 .stats-grid → 2 列 + ≤480px → 1 列
- 加 stat-card padding/min-height 调整
- 加 stat-label/Value 字号缩小
- 加 .section padding 20/24 → 14/16

admin/Workbench.vue: 已三档断点 (1200/768/480), 无需调整
manager/Workbench.vue: 已加 5 → 2 列布局, 无需调整
2026-08-26 12:24:55 +00:00
guoju0808 54bcff9e06 fix: manager/workbench 移动端 5 个 KPI 卡 5 列 → 2 列
原 .stats-grid { grid-template-columns: repeat(5, 1fr) }, 桌面 5 列 OK,
手机端 (375px) 每个卡 75px 宽, 文字/数字严重拥挤.

mobile (≤768px):
- .stats-grid 改为 repeat(2, 1fr) (2 列布局, 2 + 2 + 1, 5 个 KPI 卡合理)
- .stat-card padding 24px → 16px 12px, min-height 120 → 90px
- .stat-label 14px → 12px, margin-bottom 16 → 8px
- .stat-value 32px → 24px (数字依然醒目)
- .section padding 20/24 → 14/16, .section-title 15 → 14px
- .manager-workbench 16 → 12px
- .breadcrumb 13 → 12px

桌面端 0 影响.
2026-08-26 12:22:35 +00:00
guoju0808 646f9195e8 fix: Experts manager 角色操作列宽度 240→130 (只有 2 按钮)
manager 角色操作列只有 2 个按钮 (审核 + 修改; 已拒绝 是条件显示),
240px 太宽, 130px 足够.
2026-08-26 12:21:45 +00:00
guoju0808 3a203f4d48 Revert "fix: Experts 操作列太宽 (admin 320/manager 240 → admin 120+更多/manager 180)"
This reverts commit 161fe98a18.
2026-08-26 12:21:33 +00:00
guoju0808 161fe98a18 fix: Experts 操作列太宽 (admin 320/manager 240 → admin 120+更多/manager 180)
原操作列 1 个 column + :width="isAdmin ? 320 : 240", 5/3 个按钮排成一行
但实际内容仅 ~190/76px, 留白过多; 手机端 240/320 直接挤爆.

改造:
- admin (5 个按钮): '审核' 外置 + '更多▼' 折叠次要 (修改/查看/启用/禁用/已拒绝)
  → width 320 → 120
- manager (≤3 个按钮): 全部外置 (审核/修改/已拒绝)
  → width 240 → 180
- 操作列拆为 v-if=isAdmin / v-else 两个独立 column
- 加 onExpertMore 函数处理更多下拉 command 路由
- 加 ArrowDown icon import
- mobile 操作列进一步紧凑: 字号 11px, padding 0 3px, is-right 缩窄 4px
- 已拒绝 (查意见) 移入更多下拉, 仅 auditStatus=3 时显示

桌面端布局: 操作列从占 ~25% 桌面宽 → 占 ~10%
手机端: 操作列从 320px (撑爆) → 120/180px 紧凑
2026-08-26 12:18:36 +00:00
guoju0808 444272cbba Revert "feat: MeetingDetail 参会人表改用 GrTable + 移除合计行"
This reverts commit 8542d545d5.
2026-08-26 12:16:17 +00:00
guoju0808 8542d545d5 feat: MeetingDetail 参会人表改用 GrTable + 移除合计行
GrTable 增强 (sibling subagent 已完成重构):
- mobile 模式从 el-table expand 行改为 el-descriptions 卡片列表
- 每行一张卡, 显示所有列
- 通过 extractDefaultSlot 抓取自定义 #default slot 的 vnode
- renderTemplate 在 mobile 卡片里渲染原始 vnode (含 maskPhone/maskBankCard/
  maskIdCard/openPreview/el-link/el-tag 等自定义 template)
- 支持无 prop 自定义 template 列在 mobile 正确渲染

MeetingDetail 改动:
- el-table → GrTable (show-summary 移除, 不要合计行)
- 移除 attendeeSummary 函数 (合计不再需要)
- 移除之前 mobile attendee-table 紧凑规则 (mobile 走卡片分支, 不需要)
- v-bind $attrs 透传 v-loading/border/size 给桌面 el-table
- 修复 GrTable 闭合标签 (</el-table> → </GrTable>)

桌面端 el-table 完整渲染不变 (sibling 完整保留透传逻辑)
mobile 端: 每行一张 el-descriptions 卡, 27+ 列全部展示, 自定义 template 正常渲染
2026-08-26 12:14:25 +00:00
guoju0808 2fa91cf770 feat: MeetingDetail 参会人表格移动端适配 (字号 12→11px/padding 紧凑/操作列竖排)
参会人表 27+ 列宽表含大量自定义 template 列 (maskPhone/maskBankCard/
maskIdCard/openPreview 等), 用 GrTable 会丢失自定义渲染.
改为轻量适配:
- 表格整体 font 12 → 11px
- th/td padding 6/4 → 4/3px
- 操作列 row-actions flex row → column (紧凑)
- el-tag 字号 12 → 10px, padding/height 缩窄
- 摘要行 el-table__footer 字号 11px
- 加 class="attendee-table" 用于 scoped 控制

桌面端无影响 (全部在 @media (max-width: 768px) 内)
2026-08-26 12:09:15 +00:00
guoju0808 8067dfd3be feat: MeetingDetail 移动端精细适配 (双栏→单栏/工具栏横滚/时间轴缩窄)
路由 /manager/meetings/view/:meetingId → MeetingDetail.vue (readonly)

之前已有基础 media query (卡片/工具栏/filter-form/表格),
但未针对此页特有结构:
- .cols-row 8fr/2fr 双栏 → 1fr 单栏堆叠
- .info-grid 1fr/1fr 双栏 → 1fr 单栏
- .info-row flex 横排 → 纵向 (label 上, value 下)
- .info-label 110px flex 0 0 → 自适应
- .card padding 20/24 → 14/16
- .page-title 22px → 18px
- .section-title 16px → 15px
- .attendee-toolbar (5 按钮) 横滚
- .attendee-form-2col 双栏 → 单栏
- .file-row 110px 1fr → 单栏 (label 上 value 下)
- .file-label text-align right → left
- .file-hint grid-column 2 → 1
- .fee-summary padding-left 110px → 0
- .tab-actions 横滚 (按钮多)
- .timeline / .audit-sub-timeline 缩窄
- .page-title flex-wrap (返回/操作按钮组)
- .attendee-table-wrap iOS 横滚优化

桌面端无变化 (全部在 @media (max-width: 768px) 内)
2026-08-26 12:03:50 +00:00
guoju0808 d7107436a6 fix: 操作列更多优化 (Plans 3个以内不折叠 / 去掉前面竖线 / hover打开下拉)
1. Plans 操作列只有 3 个按钮 (修改/审核/结算), 不需要更多折叠
   - 还原为直接展示 3 个 el-link
   - 删除 onMorePlan 函数 + ArrowDown import
   - width 120 → 160

2. main.scss .op-dropdown 删除 border-left 竖线分隔
   - 加 cursor: pointer + color: primary + hover 色变浅
   - 加 padding 0 4px 与 el-link 视觉对齐
   - 加 user-select: none 避免点击选中

3. Meetings / Projects el-dropdown trigger: click → hover
   - hover 鼠标进入触发, 离开关闭
   - 更符合操作列多按钮场景的直觉
2026-08-26 12:01:43 +00:00
guoju0808 61303a822b feat: manager/workbench 移动端精细适配 (KPI 2列/单列/role-grid/快捷入口单列)
之前 Workbench 已有基础 media (1200px 5→3列, 768px 5→2列), 但:
- KPI 卡 padding 没缩, 字号没缩
- 双栏内容没堆叠
- 角色卡 padding 没缩
- 快捷入口 8 项还是 2 列, 手机端拥挤
- 超窄屏 (≤480px) 无适配

新增:
≤768px:
- 容器 padding 0 4px
- 面包屑 12px
- KPI 2 列, 数字 30→22px, padding 12px
- content-grid 强制单列
- content-card padding 14/16
- 角色卡 2 列, padding 10/12, 数字 22→18px
- 快捷入口 1 列 (8 项单列更易点)

≤480px:
- KPI 单列, role-grid 单列
- stat-value 20px
- content-card padding 12/14

不影响桌面: 所有规则都在 @media 内
2026-08-26 11:57:13 +00:00
guoju0808 d318e4383f fix: manager/Plans 操作列折叠次要操作 (审核/结算进更多下拉, 操作列 200→120px)
- 外置'修改' (高频)
- 折叠'审核/结算' 到 el-dropdown'更多'
- 操作列 width:200 → 120, 桌面+手机端共享同一模板
- 复用 main.scss 已有的 .op-dropdown + .op-caret 样式
- 禁用条件: 审核仅 planStatus='0' 可点, 结算仅 isSettled!=='Y' 可点 (逻辑移到 dropdown :disabled, 跟原 v-if 行为一致)
2026-08-26 11:50:28 +00: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 bfc801a16a feat: 批量移动端适配 (24 个列表页 + 13 个宽表用 GrTable)
- 给 24 个有 filter-form 但无 media query 的列表页统一加 @media (max-width:768px)
  - 卡片 padding 收窄 (12px, radius 4px)
  - 工具栏横向滚动 (6+ 按钮铺不下)
  - filter-form 保持横向布局 (label 左 80px 右对齐 + input 右占满)
  - 查找/重置按钮垂直堆叠不偏移
  - 表格字号 12px

- 13 个宽表 (≥10 列) 替换为 GrTable 组件:
  - sponsor/Projects, executor/Projects, sponsor/SponsorProjects
  - sponsor/SponsorPeople, expert/Experts, executor/People
  - meetings/Meetings, sponsor/Meetings, executor/Meetings
  - manager/ExecIntent, manager/SupportIntent, manager/Plans
  - admin/Users
  - 每个页面的 mainCols 取业务主键 (项目编号+名称 / 账号+姓名 等)
  - 手机端次要列折叠到展开行, 主列+操作列保留

- 修复 executor/Projects.vue 多行 el-table 标签导致的 GrTable 替换错误

全 95 个 vue 编译 200, 0 错误
2026-08-26 11:43:08 +00:00
guoju0808 614a31c404 fix: 移动端 filter-form 保持横向布局 (label 左 + input 右, 不再上下堆叠) 2026-08-26 11:40:40 +00:00
guoju0808 ce26361b30 fix: 移动端按钮组对齐 (block + margin reset, 查找重置不再偏移) 2026-08-26 11:39:01 +00:00
guoju0808 a0f566eb38 fix: 移动端 filter-form 按钮垂直堆叠 (查找/重置不再叠在一起) 2026-08-26 11:37:20 +00:00
guoju0808 8ac3538341 style: 去除操作列竖线分隔 (padding 6→4px, 节省操作列宽度) 2026-08-26 11:36:06 +00:00
guoju0808 31b3fb504a fix: GrTable 移动端保留操作列 fixed="right" 2026-08-26 11:35:10 +00:00
guoju0808 4de6479be0 fix: GrTable 移动端去除 fixed 方向 (主列+操作列不再 fixed) 2026-08-26 11:34:32 +00:00
guoju0808 0644e26120 feat: GrTable 移动端表格组件 + manager/Projects 试点
业务背景
- 项目里 17+ 列的列表页 (manager/Projects, Meetings, AdminUsers 等) 在手机端只能
  横向滚动, 操作体验差.
- refer/gr-table.vue 是 Vue2 + Vant 组件, Vue3 不能直接用 (componentOptions
  私有 API 已被 Vue3 移除).
- 新建 Vue3 + EP 兼容版本 GrTable, 吸收"主列显示 / 次要列折叠到展开行"思想.

组件设计
- props: data, mainCols (默认 = 第一个 prop + 最后一个 prop), mobileBreakpoint
- 通过 slots.default() 取 vnode, 读 vnode.props.prop/label (Vue3 思路, 替代
  Vue2 componentOptions 私有 API)
- v-bind="\$attrs" 全透传 el-table 原生 props/events
- el-table 引用方法 (clearSelection / toggleRowSelection 等) defineExpose
  暴露

manager/Projects 试点
- 引入 GrTable, :main-cols="['projectNo', 'projectName']"
- 手机端: 只显示项目编号 + 项目名称 + 操作列, 其他 13 列折叠到展开行
- 桌面端: 与原 el-table 完全一致 (所有 17 列)
- 操作列 (label=操作, 无 prop) 自动保留 (因为 shouldRenderColumn 跳过无 prop 列)
2026-08-26 11:32:53 +00:00
guoju0808 02715a1385 fix: main.scss 移动端 el-table 规则 3 个 bug 2026-08-26 11:22:02 +00:00
guoju0808 7cf8c5b660 feat: manager/Projects 移动端适配 (工具栏横滚/筛选栏堆叠) 2026-08-26 11:19:00 +00:00
guoju0808 e5d7d08ec1 feat: PlanEdit 移动端适配 (单列堆叠/label 上对齐/按钮全宽) 2026-08-26 11:17:30 +00:00
guoju0808 a763598637 feat: ManagerProjectDetail 移动端适配 (单列堆叠/表格横滚/按钮全宽) 2026-08-26 11:16:43 +00:00
guoju0808 58f02f1262 fix: AdminLayout 汉堡抽屉蒙层被 aside 遮挡不可点击 2026-08-26 11:15:19 +00:00
郭庆泰 a837e43b53 chore: 新增 refer 参考表格组件
- gr-table.vue: 通用 el-table 封装 (展开详情 + 事件透传)
- gr-table-simple.vue: 简化版表格
- gr-table-plus.vue: 增强版 (筛选框 + 展开详情)
2026-08-26 19:14:34 +08: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
郭庆泰 80a276e661 fix(theme): 4 个亮色 #4da2b5/#4db892/#80bdca/#80ccb1 不适合做背景色
问题: 之前 Element mix(white) 算法在 S=100% 主色 (#007A95)
上生成的中色 (#4da2b5 / #4db892) 跟主色对比度太低,
作 hover-bg / 选中态底色时白字看不清.

新算法: HSL 降饱和 + 提亮度 (色相不变, 灰度提升).
  text    = S-40 L+15  (中蓝可读, 链接用)
  light   = S-65 L+40  (灰中, disabled 浅背景)
  lighter = S-65 L+50  (灰浅, hover-bg / 选中态, **够淡字可读**)
  mix     = S-75 L+60  (近白, focus border)

主色 (#007A95):
  text    #2d9cb4  lighter #b7d6dd
  light   #95c2cc  mix     #dde8ea

次色 (#009963):
  text    #2eb887  lighter #baded1
  light   #98cdba  mix     #dfece7

Element Plus 联动:
  --el-color-primary-light-9 → var(--brand-primary-mix) (近白, 最浅)
  --el-color-success-light-9 → var(--brand-secondary-mix)

theme.js derivePalette 同步改成同算法 (运行时 setBrand 仍正确)
2026-08-22 21:31:08 +08:00
郭庆泰 746e9e01b4 fix(theme): 4 个亮色派生 #49deff/#4dffc0/#06d2ff/#0affa9 改为 Element mix() 算法
之前 HSL +35% 提亮算法生成荧光色 (例 #49deff / #4dffc0),
对政务/严肃网站完全不适用, 跟 Element Plus 默认色系也对不上.

新算法 (浅色) = Element Plus mix(white, base, N*10%):
  --brand-primary-light   = mix 50% white   (背景 / disabled)
  --brand-primary-lighter = mix 70% white   (hover-bg / 选中态)
  --brand-primary-text    = mix 30% white   (链接默认)
  --brand-primary-mix     = mix 80% white   (输入框 focus border)

新色 (全是低饱和度灰蓝/灰绿, 跟 Element 默认同源):
  PRIMARY (#007A95):
    light    #80bdca    lighter #4da2b5
    text     #b3d7df    mix     #3395aa
  SECONDARY (#009963):
    light    #80ccb1    lighter #4db892
    text     #b3e0d0    mix     #33ad82

深色 (deep/darker) 保持 HSL 算法不变 (合理, 政务场景需要深色 hover)

theme.js derivePalette 同步改成双轨: HSL 调深 + Element mix 调浅
2026-08-22 21:26:50 +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
郭庆泰 d9316e87d0 feat(ry-h5): logo 改为项目根 logo.png, 加 favicon
- ry-h5/static/logo.png 72x72 占位图 → 776x776 项目 logo
- ry-h5/index.html 加 <link rel='icon' type='image/png' href='/static/logo.png'>
- 代码里现无 logo 引用 (POC 只有相机页), 但文件统一品牌
2026-08-22 20:56:48 +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
郭庆泰 5b54e84c4d style(layout): 侧栏 logo 占位符 '医' 换成 logo.png 图片
- aside-logo 内 <div class='logo-icon'> 字符占位符 → <img src='/logo.png'>
- .logo-icon 改成 img 容器样式 (44x44, object-fit: contain)
- 删 logo-sub 'BAHIM 工作台' (与角色名重复)
- 浏览器 favicon 保持 logo.png (上一 commit)
2026-08-22 20:50:43 +08:00
郭庆泰 93133c2707 feat(favicon): 网站图标改为 logo.png
- ry-vue3/public/logo.png 从项目根 logo.png 拷入 (776x776 PNG)
- index.html head 加 <link rel='icon' type='image/png' href='/logo.png' />
- 浏览器 tab/书签/PWA 都用这个 logo

侧栏 logo 区 (AdminLayout 的 aside-logo 当前是 BAHIM 工作台 文字)
未改, 等用户确认.
2026-08-22 20:48:53 +08:00
郭庆泰 884eadcd8e feat(theme): 加 --brand-secondary 翠绿 #009963 (双品牌色系)
- theme.scss 加 7 个 --brand-secondary-* 派生色 (HSL 算法)
- 绑定 Element Plus --el-color-success* (绿=成功语义)
- theme.js derivePalette 重构成通用函数 (base, prefix), 加 setBrandSecondary / applyStoredBrands
- main.js 启动改调 applyStoredBrands, 主色+次色一起从 localStorage 恢复

主色 primary (青蓝 #007A95) / 次色 secondary (翠绿 #009963)
改 theme.scss :root 两个变量即可全局换色.
2026-08-22 20:46:28 +08:00
郭庆泰 e5fb015cd8 feat(theme): 主色从深海军蓝 #1E3A8A 改为青蓝 #007A95
改动 theme.scss :root 7 个 CSS 变量:
- --brand-primary        #1E3A8A → #007A95 (青蓝/cyan)
- --brand-primary-deep   #152a66 → #004858
- --brand-primary-darker #0d1d4d → #002129
- --brand-primary-light  #3a55a3 → #00acd2
- --brand-primary-lighter #c1cbe6 → #49deff
- --brand-primary-text   #4f6dbf → #06d2ff
- --brand-primary-mix    #8e9ad1 → #7ce7ff

派生色算法 (theme.js derivePalette):
- deep/darker: lightness -12 / -22
- light: lightness +12
- lighter: lightness +35
- text: lightness +22
- mix: lightness +45

新色 HSL: H=191° S=100% L=29% (青蓝范围)
派生色按 HSL lightness 算法重算, 跟 theme.js derivePalette() 一致.

业务代码全部用 var(--brand-primary) 变量, 无任何硬编码
(上个 commit cd01550 已清理), 换色自动全局生效.

Element Plus 联动变量 (--el-color-primary 等) 通过 main.js 同步, 也跟着换.
2026-08-22 20:40:54 +08:00