zhangjf
|
a74875eeda
|
feat(移动端): 新增支出使用 COS 上传附件
1. API 增强 (src/api/index.ts):
- 新增 uploadFile 函数:支持文件上传到腾讯云 COS
- 新增 getFileList 函数:获取文件列表
- 新增 deleteFile 函数:删除文件
2. 新增支出页面优化 (src/views/expense/Add.vue):
- 修改附件上传逻辑:从 base64 改为 COS 上传
- onAfterRead: 调用 uploadFile API 上传到 COS
- 获取 COS 返回的文件路径并存储
- 提交时将 COS 路径数组转为逗号分隔字符串
- 图片预览直接使用 COS URL
- 添加上传进度提示和成功/失败反馈
技术实现:
- 使用 FormData 进行 multipart/form-data 上传
- 业务类型标识为'expense'
- 附件以 COS 完整 URL 形式存储(逗号分隔)
- 支持多图片上传(最多 9 张)
- 每张图片独立上传到 COS,获得永久可访问链接
|
2026-03-01 22:23:59 +08:00 |
|
zhangjf
|
da4488dccc
|
feat(移动端): 优化支出管理功能
1. 新增支出 (Add.vue):
- 增加图片附件上传功能(限制为图片类型)
- 支持最多上传 9 张图片
- 实现图片预览和删除功能
- 将图片转 base64 格式提交到后端 attachments 字段
2. 支出列表 (List.vue):
- 重构卡片布局为 5 行展示:
* 第一行:标题 + 支出时间(右侧对齐)
* 第二行:支出类型(左)+ 支出金额(右,红色突出显示)
* 第三行:收款单位
* 第四行:支付描述(可选,有内容时显示)
* 第五行:查看附件按钮(有附件时显示,蓝色可点击)
- 添加 formatDateTime 函数格式化日期时间
- 添加 getAttachmentCount 函数计算附件数量
- 添加 previewAttachments 函数实现图片预览
- 优化样式:分隔线、图标、标签等细节美化
技术实现:
- 使用 Vant 的 van-uploader 组件上传图片
- 使用 ImagePreview 组件预览图片
- 附件以 base64 逗号分隔字符串形式存储
- 响应式布局适配移动端
|
2026-03-01 22:17:20 +08:00 |
|
zhangjf
|
455a20c1df
|
完善项目配置和测试用例
新增内容:
1. 添加 AGENTS.md 和 CLAUDE.md AI 助手配置文件
2. 添加安全修复说明文档 (doc/security-fixes.md)
3. 新增单元测试用例:
- fund-common: TenantContextHolderTest, UserContextHolderTest, PageResultTest, ResultTest
- fund-sys: AuthServiceImplTest, RoleServiceImplTest, TenantServiceImplTest
修改内容:
1. 数据库初始化脚本更新 (fund_sys_init.sql)
2. 前端依赖更新 (package.json)
3. 登录和密码管理功能优化:
- 管理后台和移动端登录页面
- 密码修改功能
4. 租户上下文处理优化 (TenantLineHandlerImpl)
5. 网关过滤器增强:
- TenantGatewayFilter 租户过滤
- TokenAuthFilter 认证过滤
6. Controller 层代码优化
7. DTO 和 Service 层代码改进
技术改进:
- 密码加密方式从 BCrypt 改为 MD5(前后端一致)
- 登录验证流程优化,支持多租户
- 增加日志输出便于调试
- 代码规范性和可维护性提升
|
2026-03-01 19:06:42 +08:00 |
|
zhangjf
|
df2f1cdfa2
|
fix: 项目列表字段对齐,ProjectVO的id改为projectId,添加customerName
|
2026-02-23 14:36:59 +08:00 |
|
zhangjf
|
83e8712dfc
|
fix: 新增支出页面添加收款单位必填字段
|
2026-02-23 14:23:27 +08:00 |
|
zhangjf
|
9498201313
|
fix: 新增需求页面添加需求编号和客户ID字段,修正需求名称字段
|
2026-02-23 14:14:38 +08:00 |
|
zhangjf
|
f87ee0b51d
|
feat: 移动端新增项目添加项目编码和项目类型字段
|
2026-02-23 14:07:23 +08:00 |
|
zhangjf
|
ff9f4d05ad
|
fix: 移动端列表页首次加载pageNum从1开始
**问题:**
- van-list组件的@load事件在挂载时自动触发
- 导致onLoad先执行pageNum++,首次请求时pageNum变成2
**修复:**
- 在onMounted中主动加载第一页数据
- onLoad只处理加载更多逻辑
- 统一所有列表页:customer, project, expense, requirement, receivable
|
2026-02-23 13:43:43 +08:00 |
|
zhangjf
|
9b545b3f00
|
fix: 客户列表查询失败问题修复
**问题根因:**
1. PageResult返回字段list与前端期望records不一致
2. CustomerVO字段名与前端期望不一致
**修改内容:**
- fund-common: PageResult字段list改为records
- fund-cust: CustomerVO字段id改为customerId
- fund-mobile: 客户列表页面字段对齐
- fund-admin: 客户管理页面字段对齐
|
2026-02-23 13:26:07 +08:00 |
|
zhangjf
|
011a6bfb3f
|
fix: 移动端新增客户表单与后端字段对齐
- 新增联系人(contact)字段,设为必填
- 客户编码(customerCode)设为必填
- 移除后端不支持的字段:简称、客户等级、所属行业
- 表单字段与后端CustomerCreateDTO保持一致
|
2026-02-23 13:14:17 +08:00 |
|
zhangjf
|
965d98cab5
|
feat: 移动端新增客户页面添加客户编码字段
- 新增客户编码输入框(customerCode)
- 位于客户名称字段之前
|
2026-02-23 13:05:57 +08:00 |
|
zhangjf
|
69f437dbb3
|
fix: 移动端表单优化
1. 新增页面必填项标记
- expense/Add.vue: 支出标题、支出类型、支出金额添加红色星号必填标记
- 其他使用 van-form 的页面已有 required 属性标记
2. 错误提示优化
- 将 showToast 改为 showFailToast 显示错误提示
- showFailToast 使用红色背景,错误信息更清晰可见
- 涉及文件:
- expense/Add.vue
- requirement/Add.vue
- receivable/Add.vue
- project/Add.vue
- customer/Add.vue
- my/ChangePassword.vue
|
2026-02-23 12:56:52 +08:00 |
|
zhangjf
|
b5a954f008
|
fix: 修复列表页浮动添加按钮被底部Tabbar遮挡的问题
将列表页浮动添加按钮的bottom值从24px调整为80px:
- receivable/List.vue
- expense/List.vue
- requirement/List.vue
Tabbar高度64px,添加按钮需要预留足够空间避免被遮挡
|
2026-02-23 12:43:42 +08:00 |
|
zhangjf
|
205af48cb6
|
fix: 修复底部工具栏遮挡页面提交按钮的问题
1. 在App.vue中统一添加padding-bottom: 80px
2. 移除各列表页面重复的padding-bottom设置
- expense/List.vue
- requirement/List.vue
- receivable/List.vue
|
2026-02-23 12:37:20 +08:00 |
|
zhangjf
|
400b7272d4
|
feat: 移动端新增修改密码功能
1. 新增修改密码页面 (my/ChangePassword.vue)
- 支持输入旧密码、新密码、确认密码
- 密码验证:至少6位、两次输入一致性校验
- 修改成功后自动清除登录信息并跳转到登录页
2. 新增API接口 (updatePassword)
- PUT /sys/profile/password
- 参数: oldPassword, newPassword, confirmPassword
3. 更新路由配置
- 新增 /my/change-password 路由
4. 更新我的页面
- 修改密码点击跳转到修改密码页面
|
2026-02-23 12:32:36 +08:00 |
|
zhangjf
|
e7f1b39ac8
|
style: 移动端首页UI调整
1. 删除顶部标题区域,节省页面垂直空间
2. 快捷操作调整为2行布局(第一行3个,第二行2个)
3. 优化快捷操作图标和文字大小
|
2026-02-23 12:26:58 +08:00 |
|
zhangjf
|
d3a77c23f1
|
feat: 移动端首页重构与业务模块完善
1. 首页布局调整
- 保留今日概览板块
- 快捷操作板块:新增需求工单、新增应收款、新增支出、新增项目、新增客户
- 新增业务服务板块:需求工单、应收款管理、支出管理、项目管理、客户管理入口
2. 新增页面
- 需求工单:列表页(支持搜索)、新增页
- 支出管理:列表页(支持搜索)、保留新增页
- 应收款:新增页、列表页添加搜索功能
- 项目:新增页、列表页优化搜索参数
- 客户:新增页、列表页优化搜索参数
3. API更新
- 新增需求工单相关API(getRequirementList、getRequirementById、createRequirement)
- 新增项目新增API(createProject)
- 新增客户新增API(createCustomer)
- 新增应收款新增API(createReceivable)
- 更新搜索参数为统一的keyword格式
4. 路由更新
- 新增需求工单列表/新增路由
- 新增支出管理列表路由
- 新增应收款新增路由
- 新增项目新增路由
- 新增客户新增路由
|
2026-02-23 11:51:52 +08:00 |
|
zhangjf
|
2e7fb5f5d4
|
fix: 修复移动端API路径错误,统一归集到api/index.ts
问题:
- Vue文件中直接使用错误的API路径 /api/v1/xxx
- 导致请求URL重复包含/api/v1,被当作静态资源处理
修复:
1. 重构src/api/index.ts,按模块分类集中定义所有API
- 用户认证:login, getUserInfo, logout
- 项目管理:getProjectList, getProjectById
- 客户管理:getCustomerList
- 支出管理:createExpense, getExpenseList, getExpenseTypeTree, getTodayExpense
- 应收款管理:getReceivableList, getUpcomingDueList, getTodayIncome, getUnpaidAmount, getOverdueCount
2. 修复各Vue文件,使用集中的API定义
- Home.vue: 使用getTodayIncome, getTodayExpense, getUnpaidAmount
- receivable/List.vue: 使用getReceivableList
- expense/Add.vue: 使用createExpense, getExpenseTypeTree
- Login.vue: 使用login
正确的API路径:
- 前端请求: /fund/receipt/receivable/page
- Gateway转发: /api/v1/receipt/receivable/page
|
2026-02-23 11:18:44 +08:00 |
|
zhangjf
|
807f894828
|
fix: 修复Login.vue登录API路径错误
- 将 '/sys/api/v1/auth/login' 修正为 '/auth/login'
- baseURL已配置为/fund,最终请求地址为 /fund/auth/login
|
2026-02-23 10:47:30 +08:00 |
|
zhangjf
|
47703e40c4
|
feat: 移动端完善与操作日志审计功能
1. 移动端fund-mobile完善:
- 新增项目列表页面 (project/List.vue)
- 新增客户列表页面 (customer/List.vue)
- 新增统一API文件 (api/index.ts)
- 更新路由配置,新增项目和客户路由
- 首页增加项目和客户快捷入口
2. 操作日志审计功能:
- OperationLog实体类: 操作日志数据模型
- OperationLogMapper: MyBatis-Plus Mapper
- OperationLogService: 日志服务接口和实现
- OperationLogController: 日志查询API
- OperationLogAspect: AOP切面自动记录操作日志
- 支持异步保存,只记录写操作(增删改)
3. 操作日志功能特性:
- 自动拦截Controller层方法
- 记录用户ID、用户名、操作描述、请求参数
- 记录IP、UserAgent、操作时间、耗时
- 支持成功/失败状态记录
- 支持分页查询和历史日志清理
|
2026-02-20 09:16:00 +08:00 |
|
zhangjf
|
8e4afcd1a5
|
feat: TenantAwareLoadBalancer 整合 TenantRoutingProperties 配置
问题:TenantRoutingProperties 定义了配置但未被使用
解决方案:
1. TenantAwareLoadBalancer 注入 TenantRoutingProperties
- 使用配置的 tenantHeader 名称
- 使用配置的 buildTenantGroup 方法
- 使用配置的 isSharedService 判断
- 使用配置的 isFallbackToShared 策略
2. 新增功能
- 支持 enabled=false 禁用租户路由
- 共享服务跳过租户过滤
- 可配置是否回退到共享实例
3. 更新测试适配新构造函数
|
2026-02-19 21:02:25 +08:00 |
|