郭庆泰
|
c85370d925
|
feat: 支持单位筛选改 el-select 多选 (前端)
manager/Projects.vue 顶部筛选区的「支持单位」从 el-input 升级为 el-select multiple + 远程搜索。
改动:
- L6: el-input → el-select (multiple + filterable + remote + clearable + collapse-tags + collapse-tags-tooltip)
- v-model: q.sponsorOrgName (string) → q.sponsorAdminUserIds (number[])
- remote-method: searchSponsorOrgsForFilter (新增)
- loading: sponsorSearching (新增)
- width: 260px (比输入框宽, 容纳标签)
- L291: q ref 字段重命名 + 改类型
- L341: reset() 同步
- 新增: sponsorSearching ref (loading 指示)
- 新增: _supporterFilterTimer (filter 防抖, 与 assignForm 的 _supporterTimer 分离)
- 新增: searchSponsorOrgsForFilter(query) — 复用 listSponsorOrgs + sponsorOrgOptions
- 200ms debounce
- 已选项不在结果里时按 userId 单独拉回 (multi-select 必须保证每个 tag 都有 label)
未做 / 后续:
- 执行方 (execOrgName) 同样可改多选, 沿用本次模式即可, 暂不动
- q.sponsorOrgName 字段已从源消失, 注释提到「sponsorOrgName」的 _self/manager_projects.md 待同步 (下一 commit)
|
2026-08-20 22:20:53 +08:00 |
|
郭庆泰
|
31588f259b
|
chore: 删除死页面 admin/manager Orgs.vue (公司管理)
两个 Orgs.vue 是早期未按 orgType 拆分前的合集视图, 已被 sponsor-orgs + executor-orgs 替代。无菜单入口, 只能通过 URL 直接访问, 功能冗余。
清理:
- 删 admin/Orgs.vue + manager/Orgs.vue
- 删 router admin-orgs + manager-orgs 两条路由
- 共 -4 处, 0 引用风险
|
2026-08-20 21:10:42 +08:00 |
|
郭庆泰
|
1e86865a40
|
feat: 合并 admin/manager 重复页 + 公示意向 + 劳务签署
页合并 (admin/manager 共用, route.path 角色感知):
- expert: Experts.vue + ExpertNew.vue (list/new/edit/view 一套)
- sponsor-orgs: SponsorOrgs.vue
- sponsor-people: SponsorPeople.vue + SponsorPersonNew.vue + SponsorPersonDetail.vue
- executor-orgs: ExecutorOrgs.vue
- executor-people: ExecutorPeople.vue + ExecutorPersonNew.vue + ExecutorPersonDetail.vue
- 给 SponsorPeople / ExecutorPeople op 列补上 查看/编辑 按钮 (潜在 bug 修复)
- 详情弹窗统一用 el-descriptions 风格 (替代 admin 旧版 ElMessageBox.alert)
后端:
- BizSignController + BizSignServiceImpl + PdfService (劳务签署 PDF 流程)
- BizPublicityIntentController (公示意向: 支持/执行)
- BizPublicitySupportIntent / BizPublicityExecutionIntent ExportVo
- BizMeetingAttendee 字段合并 (bank_region 替代 bankProvince/bankCity)
- BizExpert 字段合并 (id_card_attachments CSV, bank_region)
- Excel 导入模板精简 (开户行 1 列)
前端:
- doctor/SignFill + SignContract + SignSuccess (劳务签署 3 页流程)
- ImportResultDialog 通用组件
- IdCardUploader 重构 (单 v-model:idCardAttachments, CSV 格式)
- AreaCascader 调整
- Login.vue + AdminLayout.vue + PortalShell.vue + Home.vue 适配
DB: 字段合并 (id_card_front/back → id_card_attachments, bank_province/city → bank_region)
|
2026-08-20 21:02:56 +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
|
ec4a8aa8f0
|
feat: org disable 整改 + biz_meeting 补字段 + 表格 0/1 显示标准化
1. backend: 禁用主账号 dual-write + 子账号登录校验主账号状态
- BizOrgServiceImpl.toggleStatus: 同步 biz_org.status 与 sys_user.status
- BizOrgController.toggleStatus: 严格校验 '0'/'1'
- BizAuthController.smsLogin 4.5: 子账号校验主账号状态拦截
2. fix: BizMeeting 补 9 个字段 getters/setters
- projectId / projectName / orgName / supervisionOpinion / supervisionBy
- supervisionTime / invitationUrl / scheduleUrl / laborSigned
- 解决 Meetings.vue 修改/复制 projectId 为空的 bug
3. frontend: 0/1 status 标准化显示
- 10 个 Orgs/People 表格 el-tag 由 raw 0/1 改为 正常/禁用
- 4 个 People 页面修复 row.status || '正常' 在 '0' 时不
回退的 bug (字符串 '0' 是 truthy)
- 筛选下拉 / 编辑表单 / onToggleStatus label 全部对齐 0/1 语义
- DB 迁移: 10 行脏数据 (7 正常/合作中 → 0, 3 禁用 → 1)
- 备份表 biz_org_backup_20260819
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-19 00:27:15 +08:00 |
|
郭庆泰
|
9f132d4f86
|
fix(meetings): copy 模式 reset periodNo, 清 meetingId 防走错分支; goBack 按 mode 区分回上游 (new→projects, edit/copy→meetings)
|
2026-08-18 23:45:45 +08:00 |
|
郭庆泰
|
8fd7eaeb5a
|
fix(meetings): 还原 MeetingNew.vue 到 a081da8 模板结构 (左6+右5, 无项目形式/总期数), 保留 3 模式逻辑
|
2026-08-18 23:45:08 +08:00 |
|
郭庆泰
|
ba34f04432
|
fix(meetings): 调表单右列顺序 (会议名称→项目形式→期数→总期数→开始→结束→备注), 备注跨双列, form 字段顺序同步
|
2026-08-18 23:41:41 +08:00 |
|
郭庆泰
|
936256df2b
|
fix(meetings): 修上轮重命名 projectId→urlProjectId 后没同步 onMounted new 分支, 导致建会流程空跑
|
2026-08-18 23:40:57 +08:00 |
|
郭庆泰
|
1e4546d791
|
fix(meetings): 修改/复制 URL 带 projectId 让左列快照立刻加载; meeting 冗余字段兜底防 project_id 为 NULL
|
2026-08-18 23:38:28 +08:00 |
|
郭庆泰
|
f2830196a1
|
refactor(meetings): 修改/复制跳独立页 /manager/meetings/new?meetingId=xxx[&mode=copy], 移除列表页 edit dialog
|
2026-08-18 23:36:08 +08:00 |
|
郭庆泰
|
bae9fa6a6f
|
fix(meetings): 恢复会议ID filter (原型有), 第?期 改 el-input-number
|
2026-08-18 23:27:17 +08:00 |
|
郭庆泰
|
c91272a05f
|
fix(meetings): 删会议ID 筛选框 (P0#2), 保留列 (用户未要求删)
|
2026-08-18 23:23:35 +08:00 |
|
郭庆泰
|
6774c44429
|
fix(meetings): 批量提交按钮去 plain (disabled 顺色), 提示推最右
|
2026-08-18 23:15:57 +08:00 |
|
郭庆泰
|
6d4f1e66d4
|
style(meetings): 对齐 People.vue — 删 inline margin, batch-bar 顺序对齐, 加 .date-sep
|
2026-08-18 23:13:56 +08:00 |
|
郭庆泰
|
08d81e95bd
|
fix(meetings): onCopy 走 bizAdd 创建副本 (修 0 行误报成功 bug), submit/onSubmit/onBatchSubmit 加 __silentError 修双 toast
|
2026-08-18 23:08:32 +08:00 |
|
郭庆泰
|
a081da82e4
|
style(meeting-new): 期数 placeholder 改为请填写第几期
|
2026-08-18 23:02:21 +08:00 |
|
郭庆泰
|
ffda9c618e
|
feat(biz_project): 加 create_user_id 列, JOIN biz_person 取创建人姓名
|
2026-08-18 23:00:41 +08:00 |
|
 郭庆泰andClaude
|
ac31387b95
|
fix(meeting-new): 修双 toast (axios 拦截器 + catch 各弹一次)
bizAdd 第3 个参数 opts 透传到 request.post, 设置 __silentError: true 让
拦截器不自动 toast, 错误统一由下方 catch 处理, 避免:
- 英文: Request failed with status code 500
- 中文: 保存失败
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:49:11 +08:00 |
|
 郭庆泰andClaude
|
a4810099d0
|
style(meeting-new): 面包屑 margin-bottom 12px → 24px, 表单离面包屑远一点
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:47:55 +08:00 |
|
 郭庆泰andClaude
|
379cf226f5
|
style(meeting-new): 删红字提示 *会议名称默认为项目名称,不可修改
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:47:31 +08:00 |
|
 郭庆泰andClaude
|
29a4b02d27
|
style(meeting-new): 删 margin:0 auto, 主面板不居中 (跟 Accounts.vue 一致)
Accounts.vue 用法: .manager-accounts { padding: 16px; max-width: 1200px; }
无 margin: 0 auto, 所以主面板靠左对齐, 不是居中。
我之前加的 margin: 0 auto 让它居中了, 跟 Accounts.vue 不一致, 已删。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:46:53 +08:00 |
|
 郭庆泰andClaude
|
518da057e4
|
refactor(meeting-new): 恢复 2 列布局, 保留 el-form 项目标准
之前把 grid 改成单列 el-form-item 序列, 偏离原型 2 列布局。
现在用 .form-grid (CSS Grid 2 列 + grid-auto-flow: column 让左 6 右 5 对齐)
包住 11 个 el-form-item, 同时保留:
- el-form + :rules (项目标准)
- el-button type=primary (项目标准, 不覆盖 CSS)
- label-width 110px (跟原型一致, 不是 skill 的 120px — 因为原型是设计真源)
- :deep(.el-form-item) { margin-bottom: 0 } 让 grid 控制间距
按钮用 el-form-item 包裹 (skill 标准), 通过 CSS 隐藏 label 列避免空白。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:45:45 +08:00 |
|
 郭庆泰andClaude
|
8f62f65c0b
|
style(meeting-new): 严格按 People.vue 标准重写 (第二轮)
按 /style-alignment skill 重新对齐:
- 用 el-form + el-form-item (skill form 页标准, 不另起 div.form-actions)
- 用 el-button type=primary (Element Plus 默认主题, 不覆盖 CSS)
- 用 el-input / el-date-picker (替代 raw input[type=text], Element Plus 风格统一)
- 删自定义 .btn / .btn-primary / .btn-default / .form-row / .form-label / .form-input CSS
- 删自定义 2 列 grid 布局 (prototype 特定, 跟项目标准不符)
- 11 项全用 el-form-item 包裹 (label 无冒号)
- 底部按钮直接 <el-form-item> 包裹 (skill 标准)
- 单 page-card + max-width: 1200px (form 页 skill 标准)
- 保留 红字提示 .hint-text + 只读值 .form-value 业务专属 CSS
- 保留 el-form :rules 校验 (替代手动 if 判断)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:43:33 +08:00 |
|
 郭庆泰andClaude
|
5b4008d24a
|
style(meeting-new): 对齐 manager/MeetingNew.vue 到项目统一风格
- 替换 #1890ff / #169bd5 硬编码蓝 → var(--brand-primary) / var(--brand-primary-deep)
- 单 page-card 包裹 + max-width: 1200px (form 页 skill 标准)
- 面包屑 改 首页 / 会议管理 / 新建会议 (skill 标准, 原型 项目列表 / 新建会议)
- 删 h1 新建会议 大标题 (skill 禁忌)
- 红字提示包到 .hint-text (skill .hint-list 风格, 12px #ff4d4f + #fff bg + #f0f0f0 border)
- form-label 110px → 120px (skill label-width 标准)
- 保留 6+5 form-row 布局 (跟原型 1:1)
- 保留 768px 响应式
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:41:04 +08:00 |
|
 郭庆泰andClaude
|
4fbfcbfb0c
|
refactor(meeting-new): 跟原型 new-meeting.html 1:1 对齐
完全重写 MeetingNew.vue, 严格按原型 HTML/CSS 翻译:
- 结构: 面包屑(可点击项目列表) + h1 + 红字提示 + .card + .form-grid (2列) + .form-actions
- 左列 6 项只读: 项目编号/项目名称/总场次/总期数/支持单位/创建时间/创建人员
- 右列 5 项: 会议名称(只读) + 期数/开始时间/结束时间/备注(输入)
- CSS 完整照搬: #169bd5 主按钮 + 32px input + 12px 面包屑 + 22px h1 + #ff4d4f 红字 + grid 1fr 1fr + 768px 响应式
- grid-auto-flow: column 让左 6 右 5 对齐 (符合原型 §#4/##5 设计意图)
- 字段映射: 总场次/总期数→biz_project.totalSessions; 支持单位→biz_project.sponsorOrgName (JOIN biz_org)
删除多余项 (前几轮加的): 项目形式/总期数/当前阶段下拉/page-sub/el-descriptions/会议ID输入框
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:39:02 +08:00 |
|
 郭庆泰andClaude
|
66a928a870
|
fix(meeting-new): 落实 manager/meetings/new 审查报告 13 项修复
P0 数据正确性:
- BizMeetingMapper.xml INSERT 扩 20 列 (原只插 meeting_id)
- BizMeetingServiceImpl businessId 兜底生成 (DDL NOT NULL, 前端无字段)
- MeetingNew.vue onMounted 回填 projectId/projectName (原只 projectNo)
P1 核心功能:
- 删 会议ID 输入框 (PK 让用户填错)
- 加 6 个项目只读快照 (el-descriptions, 跟原型对齐)
- 会议名称默认 = 项目名称, 不可修改 (加红字提示 + disabled)
- meetingId String → Long (6 文件: BizMeeting/Mapper/ServiceImpl/Controller/IBizMeetingService/Mapper.xml)
- supervisionTime String → Date + @JsonFormat
P2 体验:
- 面包屑改 项目列表 / 新建会议
- page-sub 显示项目名而非 ID 13
- 当前阶段 el-select 4 → 10 选项
- resultMap/selectFields 补 9 个漏字段 (projectId/projectName/orgName/supervision*/invitation*/schedule*/labor*)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-18 22:33:37 +08:00 |
|
郭庆泰
|
35e55403cf
|
refactor(manager/Projects): 2 列 label "执行单位得分" → "执行单位评分"
- line 61: 执行单位得分(合规) → 执行单位评分(合规)
- line 67: 执行单位得分(支持) → 执行单位评分(支持)
仅 manager/Projects.vue, 范围最小。其他角色文件 (sponsor/executor/leader) 暂不动。
|
2026-08-18 22:20:21 +08:00 |
|
郭庆泰
|
8e43960481
|
fix(manager/Projects): 删 4 处 console 调试 + 日期选择器 value-format 对齐 type
- 删 console.info/error 4 处 (line 299, 302, 306, 874): 原 review §10 #5 (P1)
- el-date-picker type=date + value-format YYYY-MM-DD HH:mm:ss 不匹配 (line 17, 19):
改 value-format 为 YYYY-MM-DD, 跟 type=date 对齐; MySQL 对 datetime 列做隐式转换
原 review §10 #9 (P1)
|
2026-08-18 22:06:09 +08:00 |
|
郭庆泰
|
f0866300ad
|
refactor(manager/Projects): 删 batchScoreRows 死代码 (line 501)
注释说"保留兼容旧引用",但 grep 全文无任何引用, 纯死代码。
原 review 报告 §10 待修复列表 #7 (P2)。
|
2026-08-18 22:04:06 +08:00 |
|
郭庆泰
|
7573b4180e
|
fix(account): 手机号正则 1[3-9] → 1[0-9], 允许 10 开头测试号段
3 个账号页 (manager/sponsor/executor) 同步修
|
2026-08-18 01:25:09 +08:00 |
|
郭庆泰
|
dd39fdba5c
|
style(manager/accounts): 对齐 SKILL — page-card max-width 1200px + form class 限宽
- page-card 加 max-width: 1200px (表单页标准)
- form 上 inline style='max-width:600px' → class='account-form' (避 SKILL 禁忌 inline style)
- CSS 加 .account-form { max-width: 600px } (跟 admin/Account.vue 同款)
|
2026-08-18 01:20:12 +08:00 |
|
郭庆泰
|
a112ecbbbb
|
style(manager/accounts): filter-tip 加 padding-left:120px 跟 el-input 对齐
|
2026-08-18 01:18:57 +08:00 |
|
郭庆泰
|
8bf5264ea8
|
refactor(manager/accounts): 删两个 section-title + 删邮箱字段
template:
- 删 '修改个人信息' / '修改密码' 两个 section-title
- 删邮箱 form-item
- 个人信息只剩:姓名 + 手机号
script:
- form 删 email 字段
- rules 删 email 校验
- loadProfile 不再读 email
- onSave 提交 data 删 email
- onCancel 不再重置 email
style:
- 删 .section-title CSS (不再用)
|
2026-08-18 01:18:05 +08:00 |
|
郭庆泰
|
6d38a262dc
|
refactor(manager/accounts): 彻底删 page-sub 副标题 (跟 el-descriptions 一起清理)
|
2026-08-18 01:17:07 +08:00 |
|
郭庆泰
|
675421619d
|
refactor(manager/accounts): 删 el-descriptions (账号信息展示), 改 page-sub 文案
|
2026-08-18 01:16:55 +08:00 |
|
郭庆泰
|
5711e9cd7a
|
refactor(manager/plans): 删操作列下载按钮 (跟设计文件列下载重复)
- 表格操作列 width 240 → 200
- 删 el-button onDownload (操作列里)
- downloadFile() 函数保留 (设计文件列仍用)
|
2026-08-18 01:14:55 +08:00 |
|
郭庆泰
|
81e91ee808
|
refactor(manager/plans): 设计文件查看改 OSS 代理 + 新窗口打开 (与 PublicityDetail 一致)
PDF 体验问题:
- 旧: Preview dialog iframe 内嵌 PDF (70vh 矮, OSS attachment 头让 iframe 强制下载)
- 新: window.open 浏览器原生 PDF viewer (Chrome 工具栏/缩放/分页/搜索全有)
实现:
- 加 proxyUrl() 函数: OSS URL 走 /common/oss/proxy 后端代理重写 inline + #toolbar=0&zoom=page-width
- 加 openDesign(): window.open(proxyUrl(row.designFileUrl), '_blank')
- 删 Preview 组件 import + onFile + previewOpen/Url/Title refs + <Preview> 标签
- 表格"查看"按钮 @click 改 openDesign(row)
- '下载'按钮保留 (downloadFile() 仍用 OSS 原始 URL)
|
2026-08-18 01:13:35 +08:00 |
|
郭庆泰
|
55f3147463
|
refactor(manager/plans): 删表格项目ID 列 (不在页面上展示)
planId 仍保留在 auditForm (后端 WHERE 用), 只是表格不渲染
|
2026-08-18 01:11:09 +08:00 |
|
郭庆泰
|
8bee167704
|
feat(manager/plans + biz-project): 审核 dialog 项目编号改远程 el-select
后端 (BizProjectController):
- 新增 GET /business/project/projectNoOptions
- 返回 [{projectNo, projectName}], 仅 project_no 非空, 按 projectNo 倒序
- 不加 @PreAuthorize (manager 是业务角色, 与 specialPlan/options 一致)
前端 (manager/Plans.vue):
- 模板: 项目编号 el-input → el-select (filterable, 显示 projectNo / projectName)
- script: 加 projectNoOptions ref + loadProjectNoOptions() 函数
- onAudit: 每次打开 dialog 调 loadProjectNoOptions 拿最新 options
|
2026-08-18 01:08:28 +08:00 |
|
郭庆泰
|
1d288fbe6c
|
feat(manager/plans): 加项目ID列 + 项目编号debounce搜索 + 审核dialog动态规则
表格:
- 加项目ID 列 (width=80, 居中)
- 项目编号 input 加 @input/@clear 触发 onProjectNoSearch (debounce 300ms)
审核 dialog:
- 加项目编号 input (v-if result==='2' 通过时显示, 退回时隐藏)
- 审核意见去掉 prop='opinion' (永远非必填, placeholder 改'可选')
- auditForm 加 projectNo 字段
- auditRules 改 reactive + watch result 切换 projectNo 校验 (通过必填, 退回清校验状态)
- onAudit 重置 projectNo
- submitAudit: isPass 时 payload 加 projectNo
|
2026-08-18 01:05:22 +08:00 |
|
郭庆泰
|
6eccc6eab2
|
feat(manager/plans): 审核 dialog 支持通过/退回 (不再固定退回)
- template: 删"投稿ID"行(冗余); "审核结果"改 el-radio-group (通过 '2' / 退回 '3')
- auditForm: 加 result 字段 (默认 '2')
- auditRules: 加 result 必选校验; opinion 文案改为'请填写审核意见'
- onAudit: 重置 result='2'
- submitAudit: 用 auditForm.result 替换硬编码 '3'; 成功消息根据 result 显示'已通过'/'已退回'
|
2026-08-18 01:01:36 +08:00 |
|
郭庆泰
|
b52a334184
|
chore: biz_org 合并 / BizProject 重构 / 各角色页面调整 (上次重构遗留)
涵盖改动范围:
- 后端 BizOrg / BizProject / BizProjectRating / BizSpecialPlan controller + domain + mapper + service
- 前端 admin (BizSpecialPlanAdmin, ProjectCategory) / executor / leader / manager / sponsor 多页调整
- api/dict.js + AdminLayout.vue 同步
|
2026-08-18 00:30:34 +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 |
|
 郭庆泰andClaude
|
a1c54842e2
|
feat(manager/experts): 审核状态后加启用状态列
新增 el-table-column "启用状态", 显示 正常(绿) / 禁用(红) el-tag,
数据由 row.status === 'N' 区分, 1:1 抄 admin/Experts.vue 同列实现。
列顺序: 姓名 手机号 工作单位 科室 职称 执业证书 职称证明 审核状态 [启用状态] 审批时间 审批人 操作
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:51:11 +08:00 |
|
 郭庆泰andClaude
|
95cc230d0f
|
refactor(manager/experts): 操作列去掉"下载"按钮
操作列含义应当是"对专家本人的管理动作"(审核/修改/查看/启用-禁用/已拒绝意见),
证书下载已经分别在执业证书/职称证明列里有专门的"下载"按钮, 操作列里再放一份
属于重复入口, 用户要求移除。
清理:
- 操作列 el-button "下载" 删除 (按 执业证书 > 职称证明 > 简历 优先级)
- 同步删除 onDownloadAll (仅此按钮调用, 现已无用)
- onDownloadCert 保留 (列内下载按钮 + 预览 dialog 底部下载)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:50:27 +08:00 |
|
 郭庆泰andClaude
|
3bf1581c64
|
feat(manager): 专家证书查看改为 dialog 预览 (同步 admin)
admin/Experts.vue 之前已经把 执业证书/职称证明 的"查看"从 window.open 新 tab
改为 dialog 内嵌 el-image (可点放大 + 失败可下载), 体验更好。
manager/Experts.vue 同步改造:
- 新增 previewOpen/previewUrl + onPreviewCert (替代原 onViewCert 的 window.open)
- 新增证书预览 dialog 模板 (1:1 抄 admin 版, 含失败兜底"图片加载失败, 请下载查看")
- 表格 2 列"查看"按钮: onViewCert → onPreviewCert
- 详情 dialog 内 2 个"查看证书"链接: 同样改 onPreviewCert
- 加 .cert-preview / .cert-preview-error 样式
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:48:57 +08:00 |
|
 郭庆泰andClaude
|
0f1d130397
|
fix(expert): 编辑保存失败 Updates:0 + 错误 toast 弹两次
两个根因:
1. 后端 Updates: 0
- ExpertNew.vue (admin+manager) onSave 编辑分支里 delete payload.expertId
- 后端 BizExpertMapper.updateByPrimaryKey 是 where expert_id = #{expertId}
- 没有 expertId → WHERE 不匹配 → 0 updates → 抛 "操作失败" 500
- 修复: 不再 delete expertId (后端 insert/update 都依赖该字段)
2. 前端操作失败弹两次
- request.js 响应拦截器在 code != 200 时自动 ElMessage.error
- onSave 的 catch 又 ElMessage.error 一次
- 修复: 加 __silentError 请求配置项, 拦截器遇此 flag 不自动 toast
- api/public.js bizAdd/bizUpdate 加第 3 参数 opts 透传给 request
- ExpertNew.vue onSave 调用时传 __silentError: true, 由 catch 块按业务语义
决定 黄警 (手机号重复) 还是 红错 (其它)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:43:40 +08:00 |
|
 郭庆泰andClaude
|
15fd26af30
|
feat(manager): 专家审核页修改按钮跳转独立编辑页
参考 /admin/experts/new 模式:
- 新建 ry-vue3/src/views/manager/ExpertNew.vue (15 字段, 1:1 抄 admin 版, 仅 goBack 跳 /manager/experts)
- router 加 /manager/experts/new 和 /manager/experts/edit/:id 两条路由, 复用 ExpertNew 组件
- manager/Experts.vue 操作列 "修改" 按钮 → router.push('/manager/experts/edit/:id')
- 加 route watcher, 从编辑页返回时自动重载列表
- 新建专家按钮保留原 dialog (按用户当前只要求改修改按钮)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:40:45 +08:00 |
|
 郭庆泰andClaude
|
e099211cbd
|
feat(项目管理): 招标字段/负责人/导出/下拉/登录短信 完整链路
后端 (ruoyi-business)
- BizProject: +is_bid_project, +execOrgNames(GROUP_CONCAT派生), +leadUserName
- BizProjectMapper.xml: 上述字段全部贯通 selectFields/insert/update, 列表加 exec_org_names 子查询 + lead_user_name JOIN
- BizSysUserQueryMapper (新): 干净查 sys_user by role_type, 避开 @DataScope 切面污染, 用于项目负责人下拉
- BizOrgMapper.selectExecutorOrgOptions (新): JOIN sys_user (parent_user_id IS NULL) 限定 MAIN 账号, 排除同公司普通员工子账号
- BizOrgController: +/business/org/executorOptions 端点
- BizExecutionIntentController: +exportSignupExperts 端点 (POST /business/executionIntent/export)
- BizSignupExpertExportVo (新): 中文列头 Excel 导出 VO (专家姓名/科室/医院/职称/报名时间/手机号)
- BizProjectAssign / SponsorAssign 重命名 + Service 实现调整
- 删除 sql/ 下所有迁移脚本 (按用户要求不再保存 SQL 文件)
前端 (ry-vue3)
- api/system.js: +listExecutorOrgs 走新接口, listExecutor/listSupporters/listManagers 保持 listByRole 兼容
- views/manager/Projects.vue: 执行方下拉改 label=u.orgName / value=u.userId, 数据源走 listExecutorOrgs
+execOrgNames 列展示 +导出报名专家 dropdown 项 +is_bid_project 表单字段
- views/manager/ProjectsNew.vue + ManagerProjectDetail.vue: +is_bid_project 表单/展示
- views/auth/Login.vue: +手机号验证码登录 tab (复用 SysSmsService, dev 模式 10 开头手机号固定码 1234)
- 路由/布局/角色视角多页面整理 (SponsorOrgs/People/SponsorPersonNew 等)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 00:34:13 +08:00 |
|