|
|
89a3434177
|
feat: 添加信贷客户家庭关系API接口
|
2026-02-11 16:17:05 +08:00 |
|
|
|
1d5e31a2df
|
feat(staff-enterprise-relation): 列表页面添加员工姓名列
- 在身份证号列后添加员工姓名列
- prop名称为personName,与后端VO类保持一致
- 列宽设置为100px
|
2026-02-11 15:05:12 +08:00 |
|
|
|
6db63cd8b1
|
feat 员工调动记录
|
2026-02-11 10:42:38 +08:00 |
|
|
|
bf19a9daa8
|
feat 员工亲属关系
|
2026-02-10 00:30:06 +08:00 |
|
|
|
9a7fedcd74
|
feat 员工实体关系
|
2026-02-09 21:27:20 +08:00 |
|
|
|
02249c402e
|
文件夹整理
|
2026-02-09 14:28:25 +08:00 |
|
|
|
8efbd43abd
|
除员工外 取消导入更新 添加导入文件重复校验
|
2026-02-09 09:10:35 +08:00 |
|
|
|
886176ed7e
|
除员工外 取消导入更新
|
2026-02-09 02:18:56 +08:00 |
|
|
|
f96d10d2e8
|
feat: 移除招聘信和采购交易的导入更新支持功能
## 变更内容
- 移除招聘信和采购交易导入功能中的isUpdateSupport参数
- 遇到已存在的数据直接报错,不再支持更新操作
- 前端移除"是否更新"复选框
## 后端修改
- CcdiStaffRecruitmentController: 移除updateSupport参数
- ICcdiStaffRecruitmentService: 移除updateSupport参数
- CcdiStaffRecruitmentServiceImpl: 简化导入逻辑,移除更新支持
- CcdiPurchaseTransactionController: 移除updateSupport参数
- ICcdiPurchaseTransactionService: 移除updateSupport参数
- ICcdiPurchaseTransactionImportService: 移除updateSupport参数
- CcdiPurchaseTransactionServiceImpl: 移除updateSupport参数
- CcdiPurchaseTransactionImportServiceImpl: 简化导入逻辑,移除更新支持
## 前端修改
- ccdiStaffRecruitment/index.vue: 移除"是否更新"复选框和相关参数
- ccdiPurchaseTransaction/index.vue: 移除"是否更新"复选框和相关参数
## 影响范围
- 导入时遇到已存在的招聘项目编号或采购事项ID将直接报错
- 错误提示显示具体的重复ID
- 不再支持通过导入文件更新已存在的数据
|
2026-02-09 01:12:22 +08:00 |
|
|
|
b35d05a9c5
|
feat: 实现清除导入历史记录方法
|
2026-02-08 18:43:28 +08:00 |
|
|
|
51dc466d8e
|
feat: 监听清除导入历史记录事件
|
2026-02-08 18:37:36 +08:00 |
|
|
|
1216ba98c9
|
feat: 导入时触发清除历史记录事件
|
2026-02-08 18:34:52 +08:00 |
|
|
|
5ec5913759
|
fix: 修复中介导入成功条数计算错误
问题:
- 导入成功条数显示为负数
- 原因:成功数量计算使用 validRecords.size() - failures.size()
- 但没有使用实际的数据库操作返回值
修复:
- saveBatchWithUpsert 和 saveBatch 方法现在返回 int
- 累加实际的数据库影响行数
- 使用 actualSuccessCount 变量跟踪真实成功数量
影响范围:
- CcdiIntermediaryPersonImportServiceImpl
- CcdiIntermediaryEntityImportServiceImpl
|
2026-02-08 17:18:18 +08:00 |
|
|
|
5bd76e99d4
|
fix: 修复采购交易申请日期查询条件未生效问题
问题描述:
- 前后端参数格式不匹配导致日期查询条件无法生效
- 后端期望 applyDateStart/applyDateEnd,前端发送 params.beginApplyDate/params.endApplyDate
- Mapper XML 中同时存在两套参数导致混乱
修复方案:
统一使用扁平化参数格式 applyDateStart/applyDateEnd
前端修改:
1. 新增 addDateRangeFlat 工具方法 (ruoyi-ui/src/utils/ruoyi.js)
- 支持扁平化日期参数格式,不使用 params 包装
- 参数: addDateRangeFlat(params, dateRange, startPropName, endPropName)
2. 全局注册新方法 (ruoyi-ui/src/main.js)
- 导入并挂载到 Vue.prototype.addDateRangeFlat
3. 采购交易页面使用新方法 (ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue)
- 将 addDateRange() 改为 addDateRangeFlat()
- 传入参数: 'applyDateStart', 'applyDateEnd'
后端修改:
- 删除 Mapper XML 中 params.beginApplyDate/params.endApplyDate 相关条件
- 保留 applyDateStart/applyDateEnd 条件
测试:
- 添加测试脚本 doc/test-data/purchase_transaction/test-date-query.js
- 支持多种日期范围查询场景测试
影响范围:
- 仅影响采购交易管理模块
- 保留原有 addDateRange 方法,其他模块不受影响
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 15:05:12 +08:00 |
|
|
|
084d1b2915
|
feat: 添加导入失败记录对话框
- 添加独立的失败记录对话框组件
- 包含失败记录表格展示(采购事项ID、项目名称、标的物名称、失败原因)
- 支持分页查询失败记录
- 提供清除历史记录功能
- 显示导入摘要信息(总数、成功数、失败数)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:02:10 +08:00 |
|
|
|
29bd21094a
|
feat: 添加查看导入失败记录按钮
- 在导出按钮后添加"查看导入失败记录"按钮
- 按钮仅在存在失败记录时显示(v-if="showFailureButton")
- 使用tooltip显示上次导入时间信息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:02:03 +08:00 |
|
|
|
253471f3f9
|
feat: 移除导入对话框loading属性
- 移除 v-loading 绑定
- 移除 element-loading-text
- 移除 element-loading-spinner
- 移除 element-loading-background
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:01:57 +08:00 |
|
|
|
2d9cd7c2f6
|
feat(purchase-transaction): 添加clearImportHistory方法
- 添加用户手动清除导入历史功能
- 确认对话框防止误操作
- 清除localStorage中的任务记录
- 重置失败按钮、任务ID和对话框状态
- 操作成功后显示提示消息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:01:19 +08:00 |
|
|
|
e38413cb2e
|
feat(purchase-transaction): 添加getFailureList方法
- 调用API获取失败记录列表
- 支持分页查询
- 完善错误处理机制:
- 404: 记录过期,清除本地状态
- 500: 服务器错误提示
- 网络错误: 检查网络连接
- 其他错误: 显示详细错误信息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:51 +08:00 |
|
|
|
a987aa9264
|
feat(purchase-transaction): 添加viewImportFailures方法
- 打开失败记录对话框
- 调用getFailureList获取失败记录列表
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:43 +08:00 |
|
|
|
cbff94a223
|
feat(purchase-transaction): 添加handleImportComplete方法
- 更新localStorage中的任务状态和统计信息
- 全部成功时显示成功通知并隐藏失败按钮
- 部分失败时显示警告通知并显示失败按钮
- 保存当前任务ID用于查看失败记录
- 导入完成后刷新列表数据
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:35 +08:00 |
|
|
|
9ae817dc41
|
feat(purchase-transaction): 添加startImportStatusPolling方法
- 实现轮询检查导入任务状态
- 设置最多150次轮询(5分钟超时)
- 使用async/await处理异步请求
- 超时后自动停止轮询并提示用户
- 非PROCESSING状态时调用handleImportComplete处理结果
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:18 +08:00 |
|
|
|
c620dc8b6d
|
feat(purchase-transaction): 重构handleFileSuccess方法实现异步导入优化
- 增强响应数据验证,确保taskId存在
- 清理旧的轮询定时器,避免内存泄漏
- 保存导入任务初始状态到localStorage
- 使用$notify通知替代弹窗提示
- 重置失败按钮和任务ID状态
- 调用startImportStatusPolling开始轮询
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:10 +08:00 |
|
|
|
8699559436
|
feat: 添加getLastImportTooltip方法获取上次导入提示信息
在restoreImportState之后添加getLastImportTooltip方法:
- 从localStorage读取保存的导入任务时间
- 格式化时间为易读格式(年-月-日 时:分)
- 返回上次导入时间的提示文本
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:59:17 +08:00 |
|
|
|
619b9cca7a
|
feat: 添加restoreImportState方法恢复导入状态
在methods中添加restoreImportState方法,用于在页面加载时恢复之前的导入状态:
- 从localStorage读取保存的导入任务
- 如果有失败记录,恢复显示失败记录按钮
- 恢复当前任务ID
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:59:09 +08:00 |
|
|
|
cb5a896fcd
|
feat: 在created钩子中恢复导入状态
- 页面加载时从localStorage恢复导入状态
- 如果有失败记录则显示查看按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:57:55 +08:00 |
|
|
|
ee73380faa
|
fix: 提前实现localStorage管理方法
- 添加saveImportTaskToStorage方法
- 添加getImportTaskFromStorage方法
- 添加clearImportTaskFromStorage方法
- 修复lastImportInfo计算属性无法运行的问题
这些方法原本计划在Task 5-7实现,提前到现在以修复Task 2的审查问题。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:55:25 +08:00 |
|
|
|
c3ffccfbf3
|
feat: 添加lastImportInfo计算属性
- 显示上次导入的信息摘要
- 包含导入时间、总数、成功数、失败数
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:51:06 +08:00 |
|
|
|
9bba22a720
|
feat: 添加导入轮询相关data属性
- 添加importPollingTimer定时器
- 添加showFailureButton失败记录按钮显示状态
- 添加currentTaskId当前任务ID
- 添加失败记录对话框相关属性(failureDialogVisible等)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:49:12 +08:00 |
|
|
|
f659913b2f
|
员工采购
|
2026-02-06 17:22:59 +08:00 |
|
|
|
a6ed4d9989
|
feat: 添加采购交易前端API和页面组件
- 新建前端API文件 (ccdiPurchaseTransaction.js)
* 实现完整的CRUD接口
* 支持导入导出功能
* 实现异步导入状态查询接口
- 新建前端页面组件 (index.vue)
* 完整的查询表单(项目名称、标的物、申请人、日期范围)
* 数据列表展示(采购类别、项目、标的物、供应商、金额等)
* 新增/编辑对话框(包含所有字段,分组布局)
* 详情对话框(使用el-descriptions展示)
* 导入功能(支持异步导入轮询)
* 导出功能
* 删除确认
- 异步导入轮询逻辑
* 每2秒轮询导入状态
* 导入完成后显示成功/失败统计
* 失败记录详情展示
* 自动清理定时器
字段匹配后端实体类CcdiPurchaseTransaction的所有属性
|
2026-02-06 16:44:05 +08:00 |
|
|
|
f22dd4f0ce
|
feat: 添加UI优化和用户体验增强
- 新增lastImportInfo计算属性显示导入统计
- 失败记录按钮添加tooltip显示导入时间
- 失败记录对话框添加统计信息展示
- 对话框添加清除历史记录按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:37:27 +08:00 |
|
|
|
210196437e
|
feat: 增强失败记录查询的错误处理
- 添加404错误处理(记录过期)
- 添加500错误和500错误的友好提示
- 错误时自动清除localStorage并隐藏按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:35:38 +08:00 |
|
|
|
989f8de19a
|
fix: 改进导入处理逻辑的健壮性
- 添加response验证,防止taskId缺失
- 添加轮询超时机制,防止无限轮询(5分钟)
- 完善状态处理逻辑,成功时清除失败按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:33:31 +08:00 |
|
|
|
cb12f1db70
|
feat: 修改导入处理逻辑以支持状态持久化
- handleFileSuccess: 清除旧数据,保存新任务初始状态
- handleImportComplete: 更新localStorage中的完整任务状态
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:31:17 +08:00 |
|
|
|
0c9627617c
|
fix: 在handleImportComplete中添加状态保存逻辑
- 导入完成时保存任务状态到localStorage
- 修复getLastImportTooltip中的字段名不一致问题(saveTime)
- 确保导入状态持久化功能正常工作
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:26:57 +08:00 |
|
|
|
beaa59c1d3
|
fix: 移除restoreImportState不必要的async关键字
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:21:54 +08:00 |
|
|
|
8bf2792fd7
|
feat: 添加导入状态恢复和用户交互方法
- restoreImportState: 从localStorage恢复导入状态
- getLastImportTooltip: 获取导入时间提示信息
- clearImportHistory: 用户手动清除历史记录
- created(): 添加状态恢复调用
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:19:32 +08:00 |
|
|
|
3bb50077db
|
feat: 添加localStorage工具方法用于导入状态持久化
- saveImportTaskToStorage: 保存导入任务到localStorage
- getImportTaskFromStorage: 读取并校验导入任务数据
- clearImportTaskFromStorage: 清除localStorage数据
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:15:30 +08:00 |
|
|
|
765ab7bc8d
|
feat: 实现员工信息异步导入功能前端
- 添加导入状态查询API (getImportStatus)
- 添加导入失败记录查询API (getImportFailures)
- 实现导入状态轮询机制 (每2秒轮询一次)
- 添加轮询定时器生命周期管理 (beforeDestroy销毁)
- 添加导入完成通知功能
- 添加查看导入失败记录按钮 (有失败时显示)
- 添加失败记录对话框及分页查询功能
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:51:01 +08:00 |
|
|
|
8b6967bf32
|
fix: 修复ImportDialog模板根元素问题
- 添加div根元素包裹两个dialog组件
- 解决Vue 2 'Component template should contain exactly one root element'编译错误
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:33:33 +08:00 |
|
|
|
9aa3faf452
|
refactor: 抽离导入结果弹窗为通用组件并适配所有导入页面
新增组件:
- ImportResultDialog.vue: 通用导入结果弹窗组件
* 支持HTML内容渲染
* 60vh高度限制,内容独立滚动
* 美化滚动条样式(6px宽度、圆角设计)
* 提供visible、content、title等props配置
适配页面:
1. 员工信息管理页面 (ccdiEmployee)
- 使用ImportResultDialog组件替代内嵌Dialog
- 简化数据状态管理(importResultVisible、importResultContent)
- 添加handleImportResultClose方法处理关闭事件
2. 员工招聘信息页面 (ccdiStaffRecruitment)
- 使用ImportResultDialog替代$modal.msgSuccess/msgError
- 统一导入结果展示方式
- 支持HTML格式的错误列表展示
3. 中介黑名单导入组件 (ccdiIntermediary/ImportDialog)
- 使用ImportResultDialog替代$msgbox
- 保留原有的消息解析逻辑(成功/失败分类处理)
- 移除内联样式,使用组件样式
优势:
- 统一导入结果展示样式和交互体验
- 组件复用,减少代码重复
- 便于维护和扩展(一处修改,全局生效)
- 自适应滚动,支持大量失败数据展示
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:31:01 +08:00 |
|
|
|
bb0e0b5dc9
|
refactor: 使用Dialog组件替代MessageBox优化导入结果弹窗
变更说明:
- 添加importResult数据状态管理弹窗显示和内容
- 创建专用Dialog组件展示导入结果,使用v-html渲染HTML
- 修改handleFileSuccess方法,使用Dialog替代$alert
- 添加Dialog专用样式,内容区域60vh高度支持独立滚动
- 美化滚动条样式(6px宽度、圆角设计、hover效果)
- 删除旧的MessageBox全局样式
修复问题:
- 解决CSS覆盖Element UI MessageBox样式不生效的问题
- 导入失败数据较多时,弹窗自适应页面高度
优势:
- 样式100%可控,无CSS优先级冲突
- Dialog组件自带良好的响应式布局
- 代码结构清晰,易于维护和扩展
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:20:53 +08:00 |
|
|
|
f3a999c6aa
|
fix: 优化员工信息导入结果弹窗自适应布局
- 提升弹窗高度至70vh,宽度至700px,提升可读性
- 使用Flexbox布局确保标题、内容、按钮三部分结构稳定
- 添加美化的滚动条样式(6px宽度、圆角设计、hover效果)
- 内容区域使用calc精确计算高度,支持独立滚动
- 添加响应式媒体查询,适配小屏幕和移动端
- 标题和按钮区域添加分隔边框,增强视觉层次
修复问题:导入失败数据较多时,弹窗超出视口,确定按钮不可见
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:11:58 +08:00 |
|
|
|
1e691f9697
|
docs: 添加员工信息导入结果弹窗自适应优化设计文档
- 分析现有问题:弹窗内容过多时超出视口
- 设计固定高度+内容可滚动的Flexbox布局方案
- 提供完整的CSS样式和响应式设计
- 包含实施计划、验收标准和技术要点
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:09:40 +08:00 |
|
|
|
07dea1bf0c
|
feat: 员工信息必填项优化 - 柜员号、所属部门、电话设为必填
## 后端修改
- AddDTO: deptId和phone添加@NotNull/@NotBlank注解
- EditDTO: deptId和phone添加@NotNull/@NotBlank注解
- Service: 导入验证添加deptId和phone必填校验
## 前端修改
- 表单校验规则: deptId和phone添加required校验
- 自动显示必填标记(红色星号)
## API文档更新
- 新增接口字段说明: deptId和phone标记为必填
- 导入模板: 标注必填项(*标记)
- 业务错误信息: 添加部门和电话相关错误提示
## 必填字段清单
1. employeeId(柜员号) - 7位数字
2. name(姓名)
3. deptId(所属部门)
4. idCard(身份证号)
5. phone(电话) - 11位手机号
6. status(状态)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:26:40 +08:00 |
|
|
|
da663fb635
|
feat: 员工柜员号优化 - 移除tellerNo,employeeId作为7位数字柜员号
## 数据库修改
- 删除teller_no字段
- employee_id改为非自增,手动输入7位数字
- 更新字段注释
## 后端修改
- Entity: 移除tellerNo,employeeId改为INPUT类型
- DTO: Add/Edit/Query/Excel全部使用employeeId
- VO: 移除tellerNo字段
- Service: 添加柜员号唯一性校验(使用selectById)
- Mapper XML: 移除teller_no查询和映射
## 前端修改
- 查询表单: tellerNo改为employeeId,添加7位数字限制
- 表格列: 显示employeeId作为柜员号
- 对话框: 新增可输入,编辑只读
- JavaScript: 数据结构和校验规则更新
## 文档更新
- API文档: 完整更新所有接口说明
- 实施报告: 生成详细实施报告
## 测试
- 生成测试脚本(9个测试用例)
- 测试账号: admin/admin123
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:18:28 +08:00 |
|
|
|
81d4038302
|
中介黑名单更新
|
2026-02-05 13:33:27 +08:00 |
|
|
|
16dc95de06
|
添加按钮
|
2026-01-30 15:50:30 +08:00 |
|
|
|
29a2e60ee1
|
变更项目缩写
|
2026-01-30 14:15:21 +08:00 |
|