Commit Graph
17 Commits
Author SHA1 Message Date
郭庆泰 67fc425639 style(detail): 参会人 dialog 改 2 列布局 (760px grid 1fr 1fr) + close-on-click-modal=false 防误触关闭 2026-08-22 16:48:24 +08:00
郭庆泰 0dafb47e7d feat(attendee): Excel 批量导入 (后端 /importData + /importTemplate + 5邀请差集推送, 前端 dialog-upload 套用 dialog-import SKILL) 2026-08-22 16:35:50 +08:00
郭庆泰 da7c19af6c feat(detail): 参会人表新增 增值税及附加/摘要/现场照片 3 列 + 劳务协议展示, 角色=劳务形式, 费项改名 应发金额/个税税金/实发金额 2026-08-22 16:27:54 +08:00
郭庆泰 2ae4cd3ea5 fix(detail): 参会人表撑爆 grid 修复 (left-col min-width:0 + wrap div overflow-x:auto) 2026-08-22 16:20:45 +08:00
郭庆泰 0fbe99eb1d style(detail): 网格比例改 7fr 3fr (会议信息 70%, 审核双栏 30%), 内层 1fr 1fr 各占 15% 2026-08-22 16:18:25 +08:00
郭庆泰 50bcb13861 style(detail): 移除材料管理卡片固定宽度, 跟 会议基本信息 一样宽 (跟 left-col 2fr 网格槽) 2026-08-22 16:17:07 +08:00
郭庆泰 2a4d3ae87f style(detail): 测试 材料管理 卡片固定宽度 800px, 观察表格 100% 跟随效果 2026-08-22 16:16:06 +08:00
郭庆泰 6b3e5fc9f7 style(detail): 参会人表宽度改回 width:100% 跟随 left-col 网格槽 2026-08-22 16:15:07 +08:00
郭庆泰 ae5c2a19d9 refactor(detail): 参会人表改为 style="width: 800px" 直接限宽, 移除 wrap div 2026-08-22 16:12:05 +08:00
郭庆泰 82a61963e7 style(detail): 参会人表 5 列 min-width 100→90, 减少总宽 ~50px 2026-08-22 16:10:11 +08:00
郭庆泰 6983368386 fix(detail): 参会人表外层加 overflow-x:auto, 防 13 列撑爆左侧网格 2026-08-22 16:09:15 +08:00
郭庆泰 67d1da4a71 feat(detail): 参会人表/dialog 加 银行/银行卡号码/开户行/身份证号 4 列
⚠️ 依赖 DB ALTER (需先在生产库执行加列):
  ALTER TABLE biz_meeting_attendee
    ADD COLUMN id_card VARCHAR(50) ...,
    ADD COLUMN bank_card VARCHAR(50) ...,
    ADD COLUMN bank_name VARCHAR(100) ...,
    ADD COLUMN bank_branch VARCHAR(200) ...;

表格新增 4 列 (顺序: 银行 / 银行卡号码 / 开户行 / 身份证号),
全部位于职称与劳务形式之间; dialog 表单同步加 4 字段 (身份证号/银行/银行卡号码/开户行)
emptyAttendeeForm + openAttendeeDialog(edit) 初始化逻辑同步补
2026-08-22 16:05:20 +08:00
郭庆泰 1076e660c7 style(detail): 参会人表头 姓名→医生 / 手机号→联系电话 / 工作单位→医院 2026-08-22 16:01:15 +08:00
郭庆泰 dfbc6859e4 style(detail): 参会人 table 上移到 劳务明细 + 劳务协议 上面 2026-08-22 15:57:07 +08:00
郭庆泰 61456e540e style(detail): 材料管理 tab 顺序改为 劳务/会务材料 + 劳务/会务凭证 2026-08-22 15:56:08 +08:00
郭庆泰 2cef296b1e feat(meeting): 会议详情页参会人 CRUD + BizProjectPlan audit 字段
- 后端: BizMeetingAttendee 增 list/add/update/delete 4 端点
  按手机号定位 sys_user (无则新建, 用户名=密码=phone, role_type='doctor')
  Mapper: insertWithProfile (一次写完整档案) + deleteByPrimaryKey
  Service: insertByPhoneWithProfile (重复参会人抛友好异常)
- #4 配套: BizProjectPlan.auditOpinion/auditBy/auditTime + 关联项目名
  BizProjectPlan.projectName (LEFT JOIN biz_project) 用于 #4 通知 content
- 前端 MeetingDetail.vue: 劳务材料 tab 内, 劳务明细表 file-row 下方
  直接出表 (无表题), 含姓名/手机/单位/科室/职称/劳务费/签字状态/操作
  新增/编辑 dialog 共用, 删除走 ElMessageBox.confirm 二次确认
- 触发 #5: 新参会人 POST 时也发会议邀请通知 (与 BizMeetingController.add 一致)
2026-08-22 15:53:06 +08:00
郭庆泰 c3eb8ed9c3 feat: OCR 服务 + 会议材料模块
ry-ocr/ (新)
  本地发票识别微服务 (PaddleOCR 3.x + FastAPI, 8801)
  - QR 优先: 扫到二维码即取开票时间/发票号/金额; 没扫到/格式不合法直接判非发票, 不跑 OCR
  - 配置 QR_FULL_OCR 控制快路径(false, 0.2s)还是全字段(true, 4.5s)
  - /recognize/invoice (multipart) + /recognize/invoice/by-path (本地路径, 白名单) + /recognize/text
  - is_invoice / from_qr / qr_raw / qr_error / error_code 字段
  - 12 字段发票抽取 (regex + 启发式, 左右主体识别)
  - 超时保护 (15s 单页 / 60s 总流程) + PaddleOCR 单例 + ThreadPoolExecutor

ry-api/ruoyi-business/
  - pom.xml: 加 hutool-http/json/core 5.8.27, lombok 1.18.30 (OcrClient @Slf4j 所需)
  - ocr/: OcrClient + InvoiceResult/Fields/Line + ZipExtractor + InvoiceOcrScheduler
  - oss/: OssUploader + OssConfMeta (OCR 识别后重传 OSS)
  - config/: OcrConfig + OcrExecutorConfig (后台线程池)
  - service/impl/InvoiceOcrService: 后台提交 OCR, ZIP 路径解压识别, 替换场景先清旧
  - 会议材料 CRUD 全套 (BizMeetingAuditLog/Executor/Invoice/Material/Supervisor):
    controller + service + mapper + domain + xml

ry-vue3/
  - MeetingDetail.vue (新建): 会议详情页 (含评分维度章节, 改只读)
  - Meetings.vue / OssFileUploader.vue / router / Login.vue: 适配新字段

ry-api/ruoyi-admin/
  - RuoYiApplication.java + application.yml: 启用 @Async 异步支持

_self/
  - manager_meetings.md / manager_meeting_detail.md: 文档
2026-08-22 00:23:22 +08:00